{-# LANGUAGE OverloadedStrings #-}

-- |
-- 
-- /For contributors: This module was automatically generated by HaTeX-meta./
-- /So, please, don't make any change here directly, because/
-- /this is intended to be generated from/
-- "Text.LaTeX.Packages.AMSMath" /module via HaTeX-meta,/
-- /and therefore, changes must to be done in these places./

module Text.LaTeX.Packages.AMSMath.Monad
 ( -- * AMSMath package
   amsmath
   -- * AMSMath functions
 , math
   -- * Symbols and utilities
   -- ** Superscript and subscript
 , (^:) , (!:)
   -- ** Function symbols
   -- | Some symbols are preceded with /t/ to be distinguished from
   --   predefined Haskell entities (like 'sin' and 'cos').
 , tsin , arcsin
 , tcos , arccos
 , ttan , arctan
 , texp
 , tlog , ln
   -- ** Operator symbols
 , (=:) , (/=:)
 , (>:) , (>=:)
 , (<:) , (<=:)
 , in_ , ni , notin
   -- ** Other symbols
 , to
 , forall
 , dagger, ddagger
   -- * Fonts
 , mathbf
 , mathrm
 , mathcal
 , mathsf
 , mathtt
 , mathit
   ) where

import Text.LaTeX.Base.Writer
import Text.LaTeX.Base.Render
import Text.LaTeX.Base.Types
import qualified Text.LaTeX.Packages.AMSMath as App
import Text.LaTeX.Packages.AMSMath()

{-|
AMSMath package.
 Example:

>  usepackage [] amsmath

-}
amsmath :: String
amsmath = App.amsmath

-- | Inline mathematical expressions.

math ::   (Monad m) => LaTeXT_ m -> LaTeXT_ m
math a1
  = do a1 <- extractLaTeX_ a1
       textell ( App.math a1)


(^:) ::   (Monad m) => LaTeXT_ m -> LaTeXT_ m -> LaTeXT_ m
(^:) a1 a2
  = do a1 <- extractLaTeX_ a1
       a2 <- extractLaTeX_ a2
       textell ( (App.^:) a1 a2)


(!:) ::   (Monad m) => LaTeXT_ m -> LaTeXT_ m -> LaTeXT_ m
(!:) a1 a2
  = do a1 <- extractLaTeX_ a1
       a2 <- extractLaTeX_ a2
       textell ( (App.!:) a1 a2)

-- | Sine function symbol.

tsin ::   (Monad m) => LaTeXT_ m
tsin = do textell ( App.tsin)

-- | Arcsine function symbol.

arcsin ::   (Monad m) => LaTeXT_ m
arcsin = do textell ( App.arcsin)

-- | Cosine function symbol.

tcos ::   (Monad m) => LaTeXT_ m
tcos = do textell ( App.tcos)

-- | Arccosine function symbol.

arccos ::   (Monad m) => LaTeXT_ m
arccos = do textell ( App.arccos)

-- | Tangent function symbol.

ttan ::   (Monad m) => LaTeXT_ m
ttan = do textell ( App.ttan)


arctan ::   (Monad m) => LaTeXT_ m
arctan = do textell ( App.arctan)

-- | Exponential function symbol.

texp ::   (Monad m) => LaTeXT_ m
texp = do textell ( App.texp)

-- | Logarithm function symbol.

tlog ::   (Monad m) => LaTeXT_ m
tlog = do textell ( App.tlog)

-- | Natural logarithm symbol.

ln ::   (Monad m) => LaTeXT_ m
ln = do textell ( App.ln)


(=:) ::   (Monad m) => LaTeXT_ m -> LaTeXT_ m -> LaTeXT_ m
(=:) a1 a2
  = do a1 <- extractLaTeX_ a1
       a2 <- extractLaTeX_ a2
       textell ( (App.=:) a1 a2)


(/=:) ::   (Monad m) => LaTeXT_ m -> LaTeXT_ m -> LaTeXT_ m
(/=:) a1 a2
  = do a1 <- extractLaTeX_ a1
       a2 <- extractLaTeX_ a2
       textell ( (App./=:) a1 a2)


(>:) ::   (Monad m) => LaTeXT_ m -> LaTeXT_ m -> LaTeXT_ m
(>:) a1 a2
  = do a1 <- extractLaTeX_ a1
       a2 <- extractLaTeX_ a2
       textell ( (App.>:) a1 a2)


(>=:) ::   (Monad m) => LaTeXT_ m -> LaTeXT_ m -> LaTeXT_ m
(>=:) a1 a2
  = do a1 <- extractLaTeX_ a1
       a2 <- extractLaTeX_ a2
       textell ( (App.>=:) a1 a2)


(<:) ::   (Monad m) => LaTeXT_ m -> LaTeXT_ m -> LaTeXT_ m
(<:) a1 a2
  = do a1 <- extractLaTeX_ a1
       a2 <- extractLaTeX_ a2
       textell ( (App.<:) a1 a2)


(<=:) ::   (Monad m) => LaTeXT_ m -> LaTeXT_ m -> LaTeXT_ m
(<=:) a1 a2
  = do a1 <- extractLaTeX_ a1
       a2 <- extractLaTeX_ a2
       textell ( (App.<=:) a1 a2)


in_ ::   (Monad m) => LaTeXT_ m -> LaTeXT_ m -> LaTeXT_ m
in_ a1 a2
  = do a1 <- extractLaTeX_ a1
       a2 <- extractLaTeX_ a2
       textell ( App.in_ a1 a2)


ni ::   (Monad m) => LaTeXT_ m -> LaTeXT_ m -> LaTeXT_ m
ni a1 a2
  = do a1 <- extractLaTeX_ a1
       a2 <- extractLaTeX_ a2
       textell ( App.ni a1 a2)


notin ::   (Monad m) => LaTeXT_ m -> LaTeXT_ m -> LaTeXT_ m
notin a1 a2
  = do a1 <- extractLaTeX_ a1
       a2 <- extractLaTeX_ a2
       textell ( App.notin a1 a2)

-- | A right-arrow.

to ::   (Monad m) => LaTeXT_ m
to = do textell ( App.to)


forall ::   (Monad m) => LaTeXT_ m
forall = do textell ( App.forall)

-- | Dagger symbol.

dagger ::   (Monad m) => LaTeXT_ m
dagger = do textell ( App.dagger)

-- | Double dagger symbol.

ddagger ::   (Monad m) => LaTeXT_ m
ddagger = do textell ( App.ddagger)


mathbf ::   (Monad m) => LaTeXT_ m -> LaTeXT_ m
mathbf a1
  = do a1 <- extractLaTeX_ a1
       textell ( App.mathbf a1)


mathrm ::   (Monad m) => LaTeXT_ m -> LaTeXT_ m
mathrm a1
  = do a1 <- extractLaTeX_ a1
       textell ( App.mathrm a1)


mathcal ::   (Monad m) => LaTeXT_ m -> LaTeXT_ m
mathcal a1
  = do a1 <- extractLaTeX_ a1
       textell ( App.mathcal a1)


mathsf ::   (Monad m) => LaTeXT_ m -> LaTeXT_ m
mathsf a1
  = do a1 <- extractLaTeX_ a1
       textell ( App.mathsf a1)


mathtt ::   (Monad m) => LaTeXT_ m -> LaTeXT_ m
mathtt a1
  = do a1 <- extractLaTeX_ a1
       textell ( App.mathtt a1)


mathit ::   (Monad m) => LaTeXT_ m -> LaTeXT_ m
mathit a1
  = do a1 <- extractLaTeX_ a1
       textell ( App.mathit a1)