{-# LANGUAGE OverloadedStrings #-}
{-# LANGUAGE CPP               #-}
{-# OPTIONS_GHC -Wno-orphans #-}

-- | This module contains the maths-specific part of "Text.LaTeX.Base.Commands",
--  i.e. of the commands that are available in LaTeX out of the box without
--  any imports.
-- 
-- Note however that most maths-related documents use the
--  <https://ctan.org/pkg/amsmath?lang=en amsmath package>, which not only adds
--  some more environments but also improves on rendering details such as symbol
--  spacing.
--  So even if you only need the vanilla-LaTeX commands that this module provides, 
--  consider importing "Text.LaTeX.Packages.AMSMath" instead; it re-exports the
--  entire "Text.LaTeX.Base.Math" module.
module Text.LaTeX.Base.Math
 ( -- * Math Environments
   math, mathDisplay
 , equation , equation_
   -- ** Referencing
 , nonumber
   -- * Symbols and utilities
   
   -- ** Brackets / delimiters
 , autoParens
 , autoSquareBrackets, autoBraces, autoAngleBrackets
 , autoBrackets
 
 , langle , rangle
 , lfloor , rfloor
 , lceil , rceil 
 , dblPipe
   -- ** 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
 , cot , arccot
 , tsinh , tcosh , ttanh , coth
 , sec , csc
 , texp
 , tlog , ln
 , tsqrt
   -- ** Custom function symbols
 , operatorname
   -- ** Summation \/ integration \/ differentiation \/ relations
 , tsum , sumFromTo
 , prod , prodFromTo
 , coprod, coprodFromTo
 , integral , integralFromTo
 , partial, totald, partialOf, totaldOf
 , bigcup, bigcupFromTo
 , bigcap, bigcapFromTo 
   -- ** Operator symbols
   -- *** Arithmetic
 , (+-), (-+)
 , cdot , times , div_
 , frac
 , (*:) , star
 , circ , bullet
   -- *** Comparison
 , (=:) , (/=:)
 , (<:) , (<=:)
 , (>:) , (>=:)
 , ll , gg
 , equiv
 , propto
 , parallel
 , perp
 , approx
 , sim, simeq
 , cong
   -- *** Sets
 , in_ , ni , notin
 , subset , supset, subseteq, supseteq
 , cap , cup
 , setminus
   -- *** Misc operators
 , vee , wedge
 , oplus , ominus , otimes
 , oslash , odot , uplus
   -- *** Accents
 , hat, tilde, bar, vec, widehat, widetilde
 , dot
 , overline
 
   -- ** Greek alphabet
   -- | Functions of greek alphabet symbols.
   --
   --   Uppercase versions are suffixed with @u@.
   --   Variants are prefixed with @var@.
   --   The function 'pi_' is ended by an underscore symbol to
   --   distinguish it from the 'pi' Prelude function.
 , alpha    , beta       , gamma
 , gammau   , delta      , deltau
 , epsilon  , varepsilon , zeta
 , eta      , theta      , vartheta , thetau
 , iota     , kappa      , lambda
 , lambdau  , mu         , nu
 , xi       , xiu        , pi_
 , varpi    , piu        , rho
 , varrho   , sigma      , varsigma
 , sigmau   , tau        , upsilon
 , upsilonu , phi        , varphi
 , phiu     , chi        , psi
 , psiu     , omega      , omegau
   -- ** Arrows
 , uparrow, downarrow
 , uparrow2, downarrow2
 , updownarrow, updownarrow2
 , leftarrow, rightarrow
 , leftrightarrow, leftrightarrow2
 , leftarrow2, rightarrow2
 , longleftarrow, longrightarrow
 , longleftarrow2, longrightarrow2
 , longleftrightarrow, longleftrightarrow2
 , nwarrow, nearrow
 , swarrow, searrow
 , to, mapsto, longmapsto
 , hookleftarrow, hookrightarrow
 , leftharpoonup, rightharpoonup
 , leftharpoondown, rightharpoondown
   -- ** Other symbols
 , pm , mp
 , implies
 , forall , exists
 , dagger, ddagger
 , infty
 , imath, jmath
 , bot
   -- * Fonts
 , mathdefault
 , mathbf
 , mathrm
 , mathcal
 , mathsf
 , mathtt
 , mathit
 ) where

import Text.LaTeX.Base.Syntax
import Text.LaTeX.Base.Class
import Text.LaTeX.Base.Writer
import Text.LaTeX.Base.Render


-- | Inline mathematical expressions.
math :: LaTeXC l => l -> l
math :: forall l. LaTeXC l => l -> l
math = forall l. LaTeXC l => (LaTeX -> LaTeX) -> l -> l
liftL forall a b. (a -> b) -> a -> b
$ MathType -> LaTeX -> LaTeX
TeXMath MathType
Dollar

-- | Displayed mathematical expressions, i.e. in a seperate line / block.
mathDisplay :: LaTeXC l => l -> l
mathDisplay :: forall l. LaTeXC l => l -> l
mathDisplay = forall l. LaTeXC l => (LaTeX -> LaTeX) -> l -> l
liftL forall a b. (a -> b) -> a -> b
$ MathType -> LaTeX -> LaTeX
TeXMath MathType
Square

-------------------------------------------------------
------- Numeric instances for LaTeX and LaTeXT --------
-------------------------------------------------------

----------- LaTeX instances

-- | The 'signum' method uses a custom 'operatorname' and will not be automatically translated by babel.
--   This instance is defined in the "Text.LaTeX.Packages.AMSMath" module.
instance Num LaTeX where
 + :: LaTeX -> LaTeX -> LaTeX
(+) = forall m. Monoid m => m -> m -> m -> m
between LaTeX
"+"
 (-) = forall m. Monoid m => m -> m -> m -> m
between LaTeX
"-"
 * :: LaTeX -> LaTeX -> LaTeX
(*) = forall a. Semigroup a => a -> a -> a
(<>)
 negate :: LaTeX -> LaTeX
negate = (LaTeX
TeXEmpty forall a. Num a => a -> a -> a
-)
 fromInteger :: Integer -> LaTeX
fromInteger = forall a l. (Render a, LaTeXC l) => a -> l
rendertex
 abs :: LaTeX -> LaTeX
abs = forall l. LaTeXC l => LaTeX -> LaTeX -> l -> l
autoBrackets LaTeX
"|" LaTeX
"|"
 signum :: LaTeX -> LaTeX
signum = (forall l. LaTeXC l => l -> l
operatorname LaTeX
"sgn" forall a. Semigroup a => a -> a -> a
<>)

-- | Division uses the LaTeX 'frac' command.
--   This instance is defined in the "Text.LaTeX.Packages.AMSMath" module.
instance Fractional LaTeX where
 / :: LaTeX -> LaTeX -> LaTeX
(/) = forall l. LaTeXC l => l -> l -> l
frac
 fromRational :: Rational -> LaTeX
fromRational = forall a l. (Render a, LaTeXC l) => a -> l
rendertex forall b c a. (b -> c) -> (a -> b) -> a -> c
. (forall a. Fractional a => Rational -> a
fromRational :: Rational -> Double)

-- | The 'asinh', 'atanh' and 'acosh' methods use custom 'operatorname's and will not be automatically translated by babel.
--   This instance is defined in the "Text.LaTeX.Packages.AMSMath" module.
instance Floating LaTeX where
 pi :: LaTeX
pi = forall l. LaTeXC l => l
pi_
 exp :: LaTeX -> LaTeX
exp = (forall l. LaTeXC l => l
texp forall a. Semigroup a => a -> a -> a
<>)
 sqrt :: LaTeX -> LaTeX
sqrt = forall l. LaTeXC l => Maybe l -> l -> l
tsqrt forall a. Maybe a
Nothing
 log :: LaTeX -> LaTeX
log = (forall l. LaTeXC l => l
tlog forall a. Semigroup a => a -> a -> a
<>)
 ** :: LaTeX -> LaTeX -> LaTeX
(**) = forall l. LaTeXC l => l -> l -> l
(^:)
 logBase :: LaTeX -> LaTeX -> LaTeX
logBase LaTeX
b LaTeX
x = (forall l. LaTeXC l => String -> l
commS String
"log" forall l. LaTeXC l => l -> l -> l
!: LaTeX
b) forall a. Semigroup a => a -> a -> a
<> LaTeX
x
 sin :: LaTeX -> LaTeX
sin = (forall l. LaTeXC l => l
tsin forall a. Semigroup a => a -> a -> a
<>)
 tan :: LaTeX -> LaTeX
tan = (forall l. LaTeXC l => l
ttan forall a. Semigroup a => a -> a -> a
<>)
 cos :: LaTeX -> LaTeX
cos = (forall l. LaTeXC l => l
tcos forall a. Semigroup a => a -> a -> a
<>)
 asin :: LaTeX -> LaTeX
asin = (forall l. LaTeXC l => l
arcsin forall a. Semigroup a => a -> a -> a
<>)
 atan :: LaTeX -> LaTeX
atan = (forall l. LaTeXC l => l
arctan forall a. Semigroup a => a -> a -> a
<>)
 acos :: LaTeX -> LaTeX
acos = (forall l. LaTeXC l => l
arccos forall a. Semigroup a => a -> a -> a
<>)
 sinh :: LaTeX -> LaTeX
sinh = (forall l. LaTeXC l => l
tsinh forall a. Semigroup a => a -> a -> a
<>)
 tanh :: LaTeX -> LaTeX
tanh = (forall l. LaTeXC l => l
ttanh forall a. Semigroup a => a -> a -> a
<>)
 cosh :: LaTeX -> LaTeX
cosh = (forall l. LaTeXC l => l
tcosh forall a. Semigroup a => a -> a -> a
<>)
 asinh :: LaTeX -> LaTeX
asinh = (forall l. LaTeXC l => l -> l
operatorname LaTeX
"arsinh" forall a. Semigroup a => a -> a -> a
<>)
 atanh :: LaTeX -> LaTeX
atanh = (forall l. LaTeXC l => l -> l
operatorname LaTeX
"artanh" forall a. Semigroup a => a -> a -> a
<>)
 acosh :: LaTeX -> LaTeX
acosh = (forall l. LaTeXC l => l -> l
operatorname LaTeX
"arcosh" forall a. Semigroup a => a -> a -> a
<>)

----------- LaTeXT instances

#if !MIN_VERSION_base(4,5,0)

-- | Warning: this instance only exists for the 'Num' instance.
--   This instance is defined in the "Text.LaTeX.Packages.AMSMath" module.
instance Eq (LaTeXT m a) where
 _ == _ = error "Cannot use \"(==)\" Eq method with a LaTeXT value."

-- | Warning: this instance only exists for the 'Num' instance.
--   This instance is defined in the "Text.LaTeX.Packages.AMSMath" module.
instance Show (LaTeXT m a) where
 show _ = error "Cannot use \"show\" Show method with a LaTeXT value."

#endif

-- | Careful! Method 'signum' is undefined. Don't use it!
--   This instance is defined in the "Text.LaTeX.Packages.AMSMath" module.
instance (Monad m, a ~ ()) => Num (LaTeXT m a) where
 + :: LaTeXT m a -> LaTeXT m a -> LaTeXT m a
(+) = forall (m :: * -> *) a b.
Monad m =>
(LaTeX -> LaTeX -> LaTeX) -> LaTeXT m a -> LaTeXT m b -> LaTeXT m b
liftOp forall a. Num a => a -> a -> a
(+)
 (-) = forall (m :: * -> *) a b.
Monad m =>
(LaTeX -> LaTeX -> LaTeX) -> LaTeXT m a -> LaTeXT m b -> LaTeXT m b
liftOp (-)
 * :: LaTeXT m a -> LaTeXT m a -> LaTeXT m a
(*) = forall (m :: * -> *) a b. Monad m => m a -> m b -> m b
(>>)
 negate :: LaTeXT m a -> LaTeXT m a
negate = forall (m :: * -> *) a.
Monad m =>
(LaTeX -> LaTeX) -> LaTeXT m a -> LaTeXT m a
liftFun forall a. Num a => a -> a
negate
 fromInteger :: Integer -> LaTeXT m a
fromInteger = forall l. LaTeXC l => LaTeX -> l
fromLaTeX forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall a. Num a => Integer -> a
fromInteger
 abs :: LaTeXT m a -> LaTeXT m a
abs = forall (m :: * -> *) a.
Monad m =>
(LaTeX -> LaTeX) -> LaTeXT m a -> LaTeXT m a
liftFun forall a. Num a => a -> a
abs
 signum :: LaTeXT m a -> LaTeXT m a
signum = forall (m :: * -> *) a.
Monad m =>
(LaTeX -> LaTeX) -> LaTeXT m a -> LaTeXT m a
liftFun forall a. Num a => a -> a
signum

-- | Division uses the LaTeX 'frac' command.
--   This instance is defined in the "Text.LaTeX.Packages.AMSMath" module.
instance (Monad m, a ~ ()) => Fractional (LaTeXT m a) where
 / :: LaTeXT m a -> LaTeXT m a -> LaTeXT m a
(/) = forall (m :: * -> *) a b.
Monad m =>
(LaTeX -> LaTeX -> LaTeX) -> LaTeXT m a -> LaTeXT m b -> LaTeXT m b
liftOp forall a. Fractional a => a -> a -> a
(/)
 fromRational :: Rational -> LaTeXT m a
fromRational = forall l. LaTeXC l => LaTeX -> l
fromLaTeX forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall a. Fractional a => Rational -> a
fromRational

-- | Undefined methods: 'asinh', 'atanh' and 'acosh'.
--   This instance is defined in the "Text.LaTeX.Packages.AMSMath" module.
instance (Monad m, a ~ ()) => Floating (LaTeXT m a) where
 pi :: LaTeXT m a
pi = forall l. LaTeXC l => l
pi_
 exp :: LaTeXT m a -> LaTeXT m a
exp = forall (m :: * -> *) a.
Monad m =>
(LaTeX -> LaTeX) -> LaTeXT m a -> LaTeXT m a
liftFun forall a. Floating a => a -> a
exp
 sqrt :: LaTeXT m a -> LaTeXT m a
sqrt = forall (m :: * -> *) a.
Monad m =>
(LaTeX -> LaTeX) -> LaTeXT m a -> LaTeXT m a
liftFun forall a. Floating a => a -> a
sqrt
 log :: LaTeXT m a -> LaTeXT m a
log = forall (m :: * -> *) a.
Monad m =>
(LaTeX -> LaTeX) -> LaTeXT m a -> LaTeXT m a
liftFun forall a. Floating a => a -> a
log
 ** :: LaTeXT m a -> LaTeXT m a -> LaTeXT m a
(**) = forall (m :: * -> *) a b.
Monad m =>
(LaTeX -> LaTeX -> LaTeX) -> LaTeXT m a -> LaTeXT m b -> LaTeXT m b
liftOp forall a. Floating a => a -> a -> a
(**)
 logBase :: LaTeXT m a -> LaTeXT m a -> LaTeXT m a
logBase = forall (m :: * -> *) a b.
Monad m =>
(LaTeX -> LaTeX -> LaTeX) -> LaTeXT m a -> LaTeXT m b -> LaTeXT m b
liftOp forall a. Floating a => a -> a -> a
logBase
 sin :: LaTeXT m a -> LaTeXT m a
sin = forall (m :: * -> *) a.
Monad m =>
(LaTeX -> LaTeX) -> LaTeXT m a -> LaTeXT m a
liftFun forall a. Floating a => a -> a
sin
 tan :: LaTeXT m a -> LaTeXT m a
tan = forall (m :: * -> *) a.
Monad m =>
(LaTeX -> LaTeX) -> LaTeXT m a -> LaTeXT m a
liftFun forall a. Floating a => a -> a
tan
 cos :: LaTeXT m a -> LaTeXT m a
cos = forall (m :: * -> *) a.
Monad m =>
(LaTeX -> LaTeX) -> LaTeXT m a -> LaTeXT m a
liftFun forall a. Floating a => a -> a
cos
 asin :: LaTeXT m a -> LaTeXT m a
asin = forall (m :: * -> *) a.
Monad m =>
(LaTeX -> LaTeX) -> LaTeXT m a -> LaTeXT m a
liftFun forall a. Floating a => a -> a
asin
 atan :: LaTeXT m a -> LaTeXT m a
atan = forall (m :: * -> *) a.
Monad m =>
(LaTeX -> LaTeX) -> LaTeXT m a -> LaTeXT m a
liftFun forall a. Floating a => a -> a
atan
 acos :: LaTeXT m a -> LaTeXT m a
acos = forall (m :: * -> *) a.
Monad m =>
(LaTeX -> LaTeX) -> LaTeXT m a -> LaTeXT m a
liftFun forall a. Floating a => a -> a
acos
 sinh :: LaTeXT m a -> LaTeXT m a
sinh = forall (m :: * -> *) a.
Monad m =>
(LaTeX -> LaTeX) -> LaTeXT m a -> LaTeXT m a
liftFun forall a. Floating a => a -> a
sinh
 tanh :: LaTeXT m a -> LaTeXT m a
tanh = forall (m :: * -> *) a.
Monad m =>
(LaTeX -> LaTeX) -> LaTeXT m a -> LaTeXT m a
liftFun forall a. Floating a => a -> a
tanh
 cosh :: LaTeXT m a -> LaTeXT m a
cosh = forall (m :: * -> *) a.
Monad m =>
(LaTeX -> LaTeX) -> LaTeXT m a -> LaTeXT m a
liftFun forall a. Floating a => a -> a
cosh
 asinh :: LaTeXT m a -> LaTeXT m a
asinh = forall (m :: * -> *) a.
Monad m =>
(LaTeX -> LaTeX) -> LaTeXT m a -> LaTeXT m a
liftFun forall a. Floating a => a -> a
asinh
 atanh :: LaTeXT m a -> LaTeXT m a
atanh = forall (m :: * -> *) a.
Monad m =>
(LaTeX -> LaTeX) -> LaTeXT m a -> LaTeXT m a
liftFun forall a. Floating a => a -> a
atanh
 acosh :: LaTeXT m a -> LaTeXT m a
acosh = forall (m :: * -> *) a.
Monad m =>
(LaTeX -> LaTeX) -> LaTeXT m a -> LaTeXT m a
liftFun forall a. Floating a => a -> a
acosh

-- | Prevent an equation from being numbered, where the environment would by default do that.
nonumber :: LaTeXC l => l
nonumber :: forall l. LaTeXC l => l
nonumber = forall l. LaTeXC l => String -> l
comm0 String
"nonumber"

-- | A numbered mathematical equation (or otherwise math expression).
equation :: LaTeXC l => l -> l
equation :: forall l. LaTeXC l => l -> l
equation = forall l. LaTeXC l => (LaTeX -> LaTeX) -> l -> l
liftL forall a b. (a -> b) -> a -> b
$ String -> [TeXArg] -> LaTeX -> LaTeX
TeXEnv String
"equation" []

-- | The unnumbered variant of 'equation'.
equation_ :: LaTeXC l => l -> l
equation_ :: forall l. LaTeXC l => l -> l
equation_ = forall l. LaTeXC l => (LaTeX -> LaTeX) -> l -> l
liftL forall a b. (a -> b) -> a -> b
$ String -> [TeXArg] -> LaTeX -> LaTeX
TeXEnv String
"equation*" []

-------------------------------------
------- Symbols and utilities -------

-- | Surround a LaTeX math expression by parentheses whose height
-- automatically matches the expression's. Translates to @\\left(...\\right)@.
autoParens :: LaTeXC l => l -> l
autoParens :: forall l. LaTeXC l => l -> l
autoParens l
x = forall l. LaTeXC l => String -> l
commS String
"left(" forall a. Semigroup a => a -> a -> a
<> l
x forall a. Semigroup a => a -> a -> a
<> forall l. LaTeXC l => String -> l
commS String
"right)"

-- | Like 'autoParens', but with square brackets. Equivalent to @'autoBrackets'\"[\"\"]\"@.
autoSquareBrackets :: LaTeXC l => l -> l
autoSquareBrackets :: forall l. LaTeXC l => l -> l
autoSquareBrackets l
x = forall l. LaTeXC l => String -> l
commS String
"left[" forall a. Semigroup a => a -> a -> a
<> l
x forall a. Semigroup a => a -> a -> a
<> forall l. LaTeXC l => String -> l
commS String
"right]"

-- | Like 'autoParens', but with curly brackets.
autoBraces :: LaTeXC l => l -> l
autoBraces :: forall l. LaTeXC l => l -> l
autoBraces l
x = forall l. LaTeXC l => String -> l
commS String
"left"forall a. Semigroup a => a -> a -> a
<>l
"{" forall a. Semigroup a => a -> a -> a
<> l
x forall a. Semigroup a => a -> a -> a
<> forall l. LaTeXC l => String -> l
commS String
"right"forall a. Semigroup a => a -> a -> a
<>l
"}"

-- | Like 'autoParens', but with angle brackets \(\langle\) ... \(\rangle\). Equivalent to @'autoBrackets' 'langle' 'rangle'@.
autoAngleBrackets :: LaTeXC l => l -> l
autoAngleBrackets :: forall l. LaTeXC l => l -> l
autoAngleBrackets l
x = forall l. LaTeXC l => String -> l
commS String
"left"forall a. Semigroup a => a -> a -> a
<>forall l. LaTeXC l => l
langle forall a. Semigroup a => a -> a -> a
<> l
x forall a. Semigroup a => a -> a -> a
<> forall l. LaTeXC l => String -> l
commS String
"right"forall a. Semigroup a => a -> a -> a
<>forall l. LaTeXC l => l
rangle

-- | Use custom LaTeX expressions as auto-scaled delimiters to surround math.
-- Suitable delimiters include \(|\ldots|\) (absolute value), \(\|\ldots\|\) (norm,
-- 'dblPipe'), \(\lfloor\ldots\rfloor\) (round-off Gauss brackets, 'lfloor' / 'rfloor') etc..
autoBrackets :: LaTeXC l => LaTeX -> LaTeX -> l -> l
autoBrackets :: forall l. LaTeXC l => LaTeX -> LaTeX -> l -> l
autoBrackets LaTeX
lBrack LaTeX
rBrack l
x
  = forall l. LaTeXC l => String -> l
commS String
"left" forall a. Semigroup a => a -> a -> a
<> forall l. LaTeXC l => LaTeX -> l
fromLaTeX LaTeX
lBrack forall a. Semigroup a => a -> a -> a
<> l
x forall a. Semigroup a => a -> a -> a
<> forall l. LaTeXC l => String -> l
commS String
"right" forall a. Semigroup a => a -> a -> a
<> forall l. LaTeXC l => LaTeX -> l
fromLaTeX LaTeX
rBrack

-- | Left angle bracket, \(\langle\).
langle :: LaTeXC l => l
langle :: forall l. LaTeXC l => l
langle = forall l. LaTeXC l => String -> l
comm0 String
"langle"

-- | Right angle bracket, \(\rangle\).
rangle :: LaTeXC l => l
rangle :: forall l. LaTeXC l => l
rangle = forall l. LaTeXC l => String -> l
comm0 String
"rangle"

-- | Left floor, \(\lfloor\).
lfloor :: LaTeXC l => l
lfloor :: forall l. LaTeXC l => l
lfloor = forall l. LaTeXC l => String -> l
comm0 String
"lfloor"

-- | Right floor, \(\rfloor\).
rfloor :: LaTeXC l => l
rfloor :: forall l. LaTeXC l => l
rfloor = forall l. LaTeXC l => String -> l
comm0 String
"rfloor"

-- | Left ceiling, \(\lceil\).
lceil :: LaTeXC l => l
lceil :: forall l. LaTeXC l => l
lceil = forall l. LaTeXC l => String -> l
comm0 String
"lceil"

-- | Right ceiling, \(\rceil\).
rceil :: LaTeXC l => l
rceil :: forall l. LaTeXC l => l
rceil = forall l. LaTeXC l => String -> l
comm0 String
"rceil"

-- | Double vertical line, used as delimiter for norms \(\| \ldots \|\).
dblPipe :: LaTeXC l => l
dblPipe :: forall l. LaTeXC l => l
dblPipe = forall l. LaTeXC l => String -> l
comm0 String
"|"

-- | Superscript.
(^:) :: LaTeXC l => l -> l -> l
l
x ^: :: forall l. LaTeXC l => l -> l -> l
^: l
y = forall l. LaTeXC l => l -> l
braces l
x forall a. Semigroup a => a -> a -> a
<> forall l. LaTeXC l => Text -> l
raw Text
"^"  forall a. Semigroup a => a -> a -> a
<> forall l. LaTeXC l => l -> l
braces l
y

-- | Subscript.
(!:) :: LaTeXC l => l -> l -> l
l
x !: :: forall l. LaTeXC l => l -> l -> l
!: l
y = forall l. LaTeXC l => l -> l
braces l
x forall a. Semigroup a => a -> a -> a
<> forall l. LaTeXC l => Text -> l
raw Text
"_" forall a. Semigroup a => a -> a -> a
<> forall l. LaTeXC l => l -> l
braces l
y

-- | Sub- and superscript, both stacked.
(!^) :: LaTeXC l => l -> (l,l) -> l
l
x !^ :: forall l. LaTeXC l => l -> (l, l) -> l
!^ (l
y,l
z) = forall l. LaTeXC l => l -> l
braces l
x forall a. Semigroup a => a -> a -> a
<> forall l. LaTeXC l => Text -> l
raw Text
"_" forall a. Semigroup a => a -> a -> a
<> forall l. LaTeXC l => l -> l
braces l
y forall a. Semigroup a => a -> a -> a
<> forall l. LaTeXC l => Text -> l
raw Text
"^" forall a. Semigroup a => a -> a -> a
<> forall l. LaTeXC l => l -> l
braces l
z

---- Function symbols

-- | Sine function symbol.
tsin :: LaTeXC l => l
tsin :: forall l. LaTeXC l => l
tsin = forall l. LaTeXC l => String -> l
comm0 String
"sin"

-- | Arcsine function symbol.
arcsin :: LaTeXC l => l
arcsin :: forall l. LaTeXC l => l
arcsin = forall l. LaTeXC l => String -> l
comm0 String
"arcsin"

-- | Cosine function symbol.
tcos :: LaTeXC l => l
tcos :: forall l. LaTeXC l => l
tcos = forall l. LaTeXC l => String -> l
comm0 String
"cos"

-- | Arccosine function symbol.
arccos :: LaTeXC l => l
arccos :: forall l. LaTeXC l => l
arccos = forall l. LaTeXC l => String -> l
comm0 String
"arccos"

-- | Tangent function symbol.
ttan :: LaTeXC l => l
ttan :: forall l. LaTeXC l => l
ttan = forall l. LaTeXC l => String -> l
comm0 String
"tan"

-- | Arctangent function symbol.
arctan :: LaTeXC l => l
arctan :: forall l. LaTeXC l => l
arctan = forall l. LaTeXC l => String -> l
comm0 String
"arctan"

-- | Cotangent function symbol.
cot :: LaTeXC l => l
cot :: forall l. LaTeXC l => l
cot = forall l. LaTeXC l => String -> l
comm0 String
"cot"

-- | Arccotangent function symbol.
arccot :: LaTeXC l => l
arccot :: forall l. LaTeXC l => l
arccot = forall l. LaTeXC l => String -> l
comm0 String
"arccot"

-- | Hyperbolic sine function symbol.
tsinh :: LaTeXC l => l
tsinh :: forall l. LaTeXC l => l
tsinh = forall l. LaTeXC l => String -> l
comm0 String
"sinh"

-- | Hyperbolic cosine function symbol.
tcosh :: LaTeXC l => l
tcosh :: forall l. LaTeXC l => l
tcosh = forall l. LaTeXC l => String -> l
comm0 String
"cosh"

-- | Hyperbolic tangent function symbol.
ttanh :: LaTeXC l => l
ttanh :: forall l. LaTeXC l => l
ttanh = forall l. LaTeXC l => String -> l
comm0 String
"tanh"

-- | Hyperbolic cotangent function symbol.
coth :: LaTeXC l => l
coth :: forall l. LaTeXC l => l
coth = forall l. LaTeXC l => String -> l
comm0 String
"coth"

-- | Secant function symbol.
sec :: LaTeXC l => l
sec :: forall l. LaTeXC l => l
sec = forall l. LaTeXC l => String -> l
comm0 String
"sec"

-- | Cosecant function symbol.
csc :: LaTeXC l => l
csc :: forall l. LaTeXC l => l
csc = forall l. LaTeXC l => String -> l
comm0 String
"csc"

-- | Exponential function symbol.
texp :: LaTeXC l => l
texp :: forall l. LaTeXC l => l
texp = forall l. LaTeXC l => String -> l
comm0 String
"exp"

-- | Logarithm function symbol.
tlog :: LaTeXC l => l
tlog :: forall l. LaTeXC l => l
tlog = forall l. LaTeXC l => String -> l
comm0 String
"log"

-- | Natural logarithm symbol.
ln :: LaTeXC l => l
ln :: forall l. LaTeXC l => l
ln = forall l. LaTeXC l => String -> l
comm0 String
"ln"

-- | Root notation. Use @tsqrt (Just n) x@ for the @n@th root of @x@.
--   When 'Nothing' is supplied, the function will output a square root.
tsqrt :: LaTeXC l => Maybe l -> l -> l
tsqrt :: forall l. LaTeXC l => Maybe l -> l -> l
tsqrt Maybe l
Nothing  = forall l. LaTeXC l => (LaTeX -> LaTeX) -> l -> l
liftL forall a b. (a -> b) -> a -> b
$ \LaTeX
x -> String -> [TeXArg] -> LaTeX
TeXComm String
"sqrt" [LaTeX -> TeXArg
FixArg LaTeX
x]
tsqrt (Just l
n) = forall l. LaTeXC l => (LaTeX -> LaTeX -> LaTeX) -> l -> l -> l
liftL2 (\LaTeX
m LaTeX
x -> String -> [TeXArg] -> LaTeX
TeXComm String
"sqrt" [LaTeX -> TeXArg
OptArg LaTeX
m, LaTeX -> TeXArg
FixArg LaTeX
x]) l
n

---- Custom Function Symbols
-- | Defines a new function symbol.
-- Note that function symbols defined in this way will not be automatically translated by babel.
operatorname :: LaTeXC l => l -> l
operatorname :: forall l. LaTeXC l => l -> l
operatorname = forall l. LaTeXC l => String -> l -> l
comm1 String
"operatorname"

---- Sum/Integral symbols

-- | Sigma sumation symbol \(\sum\). Use 'sumFromTo' instead if you want to
--   specify the limits of the sum.
tsum :: LaTeXC l => l
tsum :: forall l. LaTeXC l => l
tsum = forall l. LaTeXC l => String -> l
comm0 String
"sum"

-- | Sigma sumation symbol with limits, like \[\sum_0^n\].
sumFromTo :: LaTeXC l
          => l -- ^ Expression below the sigma.
          -> l -- ^ Expression above the sigma.
          -> l
sumFromTo :: forall l. LaTeXC l => l -> l -> l
sumFromTo l
x l
y = forall l. LaTeXC l => String -> l
commS String
"sum" forall a. Semigroup a => a -> a -> a
<> forall l. LaTeXC l => Text -> l
rawText
"_" forall a. Semigroup a => a -> a -> a
<> forall l. LaTeXC l => l -> l
braces l
x forall a. Semigroup a => a -> a -> a
<> forall l. LaTeXC l => Text -> l
rawText
"^" forall a. Semigroup a => a -> a -> a
<> forall l. LaTeXC l => l -> l
braces l
y

-- | Pi product symbol \(\prod\). Use 'prodFromTo' if you want to specify the
--   limits of the product.
prod :: LaTeXC l => l
prod :: forall l. LaTeXC l => l
prod = forall l. LaTeXC l => String -> l
comm0 String
"prod"

-- | Pi product symbol with limits, like \[\prod_0^n\].
prodFromTo :: LaTeXC l
           => l -- ^ Expression below the pi.
           -> l -- ^ Expression above the pi.
           -> l
prodFromTo :: forall l. LaTeXC l => l -> l -> l
prodFromTo l
x l
y = forall l. LaTeXC l => String -> l
commS String
"prod" forall a. Semigroup a => a -> a -> a
<> forall l. LaTeXC l => Text -> l
rawText
"_" forall a. Semigroup a => a -> a -> a
<> forall l. LaTeXC l => l -> l
braces l
x forall a. Semigroup a => a -> a -> a
<> forall l. LaTeXC l => Text -> l
rawText
"^" forall a. Semigroup a => a -> a -> a
<> forall l. LaTeXC l => l -> l
braces l
y

-- | Coproduct symbol \(\coprod\). Use 'coprodFromTo' if you want to specify the
--   limits of the coproduct.
coprod :: LaTeXC l => l
coprod :: forall l. LaTeXC l => l
coprod = forall l. LaTeXC l => String -> l
comm0 String
"coprod"

-- | Coproduct symbol with limits, like \[\coprod_0^n\].
coprodFromTo :: LaTeXC l
           => l -- ^ Expression below.
           -> l -- ^ Expression above.
           -> l
coprodFromTo :: forall l. LaTeXC l => l -> l -> l
coprodFromTo l
x l
y = forall l. LaTeXC l => String -> l
commS String
"coprod" forall a. Semigroup a => a -> a -> a
<> forall l. LaTeXC l => Text -> l
rawText
"_" forall a. Semigroup a => a -> a -> a
<> forall l. LaTeXC l => l -> l
braces l
x forall a. Semigroup a => a -> a -> a
<> forall l. LaTeXC l => Text -> l
rawText
"^" forall a. Semigroup a => a -> a -> a
<> forall l. LaTeXC l => l -> l
braces l
y

-- | Big union symbol \(\bigcup\). Use 'bigcupFromTo' if you want to specify the
--   limits of the union.
bigcup :: LaTeXC l => l
bigcup :: forall l. LaTeXC l => l
bigcup = forall l. LaTeXC l => String -> l
comm0 String
"bigcup"

-- | Big union symbol with limits, like \[\bigcup_0^n\].
bigcupFromTo :: LaTeXC l
           => l -- ^ Expression below.
           -> l -- ^ Expression above.
           -> l
bigcupFromTo :: forall l. LaTeXC l => l -> l -> l
bigcupFromTo l
x l
y = forall l. LaTeXC l => String -> l
commS String
"bigcup" forall a. Semigroup a => a -> a -> a
<> forall l. LaTeXC l => Text -> l
rawText
"_" forall a. Semigroup a => a -> a -> a
<> forall l. LaTeXC l => l -> l
braces l
x forall a. Semigroup a => a -> a -> a
<> forall l. LaTeXC l => Text -> l
rawText
"^" forall a. Semigroup a => a -> a -> a
<> forall l. LaTeXC l => l -> l
braces l
y

-- | Big intersection symbol \(\bigcap\). Use 'bigcapFromTo' if you want to specify the
--   limits of the intersection.
bigcap :: LaTeXC l => l
bigcap :: forall l. LaTeXC l => l
bigcap = forall l. LaTeXC l => String -> l
comm0 String
"bigcap"

-- | Big intersection symbol with limits, like \[\bigcap_0^n\].
bigcapFromTo :: LaTeXC l
           => l -- ^ Expression below.
           -> l -- ^ Expression above.
           -> l
bigcapFromTo :: forall l. LaTeXC l => l -> l -> l
bigcapFromTo l
x l
y = forall l. LaTeXC l => String -> l
commS String
"bigcap" forall a. Semigroup a => a -> a -> a
<> forall l. LaTeXC l => Text -> l
rawText
"_" forall a. Semigroup a => a -> a -> a
<> forall l. LaTeXC l => l -> l
braces l
x forall a. Semigroup a => a -> a -> a
<> forall l. LaTeXC l => Text -> l
rawText
"^" forall a. Semigroup a => a -> a -> a
<> forall l. LaTeXC l => l -> l
braces l
y


-- | Integral symbol. Use 'integralFromTo' if you want to specify
--   the limits of the integral.
integral :: LaTeXC l => l
integral :: forall l. LaTeXC l => l
integral = forall l. LaTeXC l => String -> l
comm0 String
"int"

-- | Integral symbol with limits of integration. \(\int\limits_{-1}^1\)
integralFromTo :: LaTeXC l
               => l -- ^ Lower limit of integration.
               -> l -- ^ Upper limit of integration.
               -> l
integralFromTo :: forall l. LaTeXC l => l -> l -> l
integralFromTo l
x l
y = forall l. LaTeXC l => String -> l
commS String
"int" forall a. Semigroup a => a -> a -> a
<> forall l. LaTeXC l => String -> l
commS String
"limits" forall a. Semigroup a => a -> a -> a
<> forall l. LaTeXC l => Text -> l
rawText
"_" forall a. Semigroup a => a -> a -> a
<> forall l. LaTeXC l => l -> l
braces l
x forall a. Semigroup a => a -> a -> a
<> forall l. LaTeXC l => Text -> l
rawText
"^" forall a. Semigroup a => a -> a -> a
<> forall l. LaTeXC l => l -> l
braces l
y

-- | Partial-differentiation symbol \(\partial\)
partial :: LaTeXC l => l
partial :: forall l. LaTeXC l => l
partial = forall l. LaTeXC l => String -> l
comm0 String
"partial"

-- | Total-differentiation (or integration-variable) symbol d (non-italic!)
--   To be used as @frac (totald) (totald<>"x")@ → \(\frac{\mathrm{d}}{\mathrm{d}x}\).
totald :: LaTeXC l => l
totald :: forall l. LaTeXC l => l
totald = forall l. LaTeXC l => l -> l
mathrm l
"d"

-- | Partial-differentiation of variable, e.g.
--   @frac (partialOf h) (partialOf t)@ → \(\frac{\partial h}{\partial t}\).
partialOf :: LaTeXC l => l -> l
partialOf :: forall l. LaTeXC l => l -> l
partialOf l
v = forall l. LaTeXC l => String -> l
comm0 String
"partial" forall a. Semigroup a => a -> a -> a
<> l
v

-- | Total-differentiation of variable, or integration over variable.
--   To be used as
-- 
-- @
-- integralFromTo 0 infty $ totaldOf "x" <> "f(x)"
-- @
-- 
--   \[\int\limits_0^\infty\mathrm{d}x f(x),\] or
--   @frac (totaldOf"f") (totaldOf"x")@ → \(\frac{\mathrm{d}f}{\mathrm{d}x}\).
totaldOf :: LaTeXC l => l -> l
totaldOf :: forall l. LaTeXC l => l -> l
totaldOf l
v = forall l. LaTeXC l => l -> l
mathrm l
"d" forall a. Semigroup a => a -> a -> a
<> l
v

---- Operator symbols

-- | Negative form of an operator.
notop :: LaTeXC l =>
         (l -> l -> l)
      ->  l -> l -> l
notop :: forall l. LaTeXC l => (l -> l -> l) -> l -> l -> l
notop l -> l -> l
op l
l1 l
l2 = (l
l1 forall a. Semigroup a => a -> a -> a
<> forall l. LaTeXC l => String -> l
commS String
"not") l -> l -> l
`op` l
l2

infixl 6 +-, -+

-- | Plus-or-minus operator \(\pm\). Also available as symbol 'pm'.
(+-) :: LaTeXC l => l -> l -> l
+- :: forall l. LaTeXC l => l -> l -> l
(+-)  = forall m. Monoid m => m -> m -> m -> m
between forall a b. (a -> b) -> a -> b
$ forall l. LaTeXC l => String -> l
comm0 String
"pm"

-- | Minus-or-plus operator \(\mp\). Also available as symbol 'mp'.
(-+) :: LaTeXC l => l -> l -> l
-+ :: forall l. LaTeXC l => l -> l -> l
(-+)  = forall m. Monoid m => m -> m -> m -> m
between forall a b. (a -> b) -> a -> b
$ forall l. LaTeXC l => String -> l
comm0 String
"mp"

-- | Centered-dot operator \(\cdot\).
cdot :: LaTeXC l => l -> l -> l
cdot :: forall l. LaTeXC l => l -> l -> l
cdot  = forall m. Monoid m => m -> m -> m -> m
between forall a b. (a -> b) -> a -> b
$ forall l. LaTeXC l => String -> l
comm0 String
"cdot"

-- | \"x-cross\" multiplication operator \(\times\).
times :: LaTeXC l => l -> l -> l
times :: forall l. LaTeXC l => l -> l -> l
times = forall m. Monoid m => m -> m -> m -> m
between forall a b. (a -> b) -> a -> b
$ forall l. LaTeXC l => String -> l
comm0 String
"times"

-- | Division operator \(\div\).
div_ :: LaTeXC l => l -> l -> l
div_ :: forall l. LaTeXC l => l -> l -> l
div_  = forall m. Monoid m => m -> m -> m -> m
between forall a b. (a -> b) -> a -> b
$ forall l. LaTeXC l => String -> l
comm0 String
"div"

-- | Fraction operator, like @frac 1 2@ → \(\frac12\).
frac :: LaTeXC l => l -> l -> l
frac :: forall l. LaTeXC l => l -> l -> l
frac = forall l. LaTeXC l => (LaTeX -> LaTeX -> LaTeX) -> l -> l -> l
liftL2 forall a b. (a -> b) -> a -> b
$ \LaTeX
p LaTeX
q -> String -> [TeXArg] -> LaTeX
TeXComm String
"frac" [LaTeX -> TeXArg
FixArg LaTeX
p, LaTeX -> TeXArg
FixArg LaTeX
q]

infixl 7 *:

-- | Asterisk operator \(\ast\).
--
-- > infixl 7 *:
(*:) :: LaTeXC l => l -> l -> l
*: :: forall l. LaTeXC l => l -> l -> l
(*:) = forall m. Monoid m => m -> m -> m -> m
between forall a b. (a -> b) -> a -> b
$ forall l. LaTeXC l => String -> l
comm0 String
"ast"

-- | Star operator \(\star\).
star :: LaTeXC l => l -> l -> l
star :: forall l. LaTeXC l => l -> l -> l
star  = forall m. Monoid m => m -> m -> m -> m
between forall a b. (a -> b) -> a -> b
$ forall l. LaTeXC l => String -> l
comm0 String
"star"

-- | Ring operator \(\circ\).
circ :: LaTeXC l => l -> l -> l
circ :: forall l. LaTeXC l => l -> l -> l
circ  = forall m. Monoid m => m -> m -> m -> m
between forall a b. (a -> b) -> a -> b
$ forall l. LaTeXC l => String -> l
comm0 String
"circ"

-- | Bullet operator \(\bullet\).
bullet :: LaTeXC l => l -> l -> l
bullet :: forall l. LaTeXC l => l -> l -> l
bullet  = forall m. Monoid m => m -> m -> m -> m
between forall a b. (a -> b) -> a -> b
$ forall l. LaTeXC l => String -> l
comm0 String
"bullet"

infixr 4 =: , /=:

-- | Simple equals sign \(=\).
--
-- > infixr 4 =:
(=:) :: LaTeXC l => l -> l -> l
=: :: forall l. LaTeXC l => l -> l -> l
(=:)  = forall m. Monoid m => m -> m -> m -> m
between l
"="

-- | Not equal \(\neq\).
--
-- > infixr 4 /=:
(/=:) :: LaTeXC l => l -> l -> l
/=: :: forall l. LaTeXC l => l -> l -> l
(/=:) = forall l. LaTeXC l => (l -> l -> l) -> l -> l -> l
notop forall l. LaTeXC l => l -> l -> l
(=:)

-- | Greater \(>\).
(>:) :: LaTeXC l => l -> l -> l
>: :: forall l. LaTeXC l => l -> l -> l
(>:) = forall m. Monoid m => m -> m -> m -> m
between l
">"

-- | Greater or equal \(\geq\).
(>=:) :: LaTeXC l => l -> l -> l
>=: :: forall l. LaTeXC l => l -> l -> l
(>=:) = forall m. Monoid m => m -> m -> m -> m
between forall a b. (a -> b) -> a -> b
$ forall l. LaTeXC l => String -> l
comm0 String
"geq"

-- | Lesser \(<\).
(<:) :: LaTeXC l => l -> l -> l
<: :: forall l. LaTeXC l => l -> l -> l
(<:) = forall m. Monoid m => m -> m -> m -> m
between l
"<"

-- | Lesser or equal \(\leq\).
(<=:) :: LaTeXC l => l -> l -> l
<=: :: forall l. LaTeXC l => l -> l -> l
(<=:) = forall m. Monoid m => m -> m -> m -> m
between forall a b. (a -> b) -> a -> b
$ forall l. LaTeXC l => String -> l
comm0 String
"leq"

-- | Much less \(\ll\).
ll :: LaTeXC l => l -> l -> l
ll :: forall l. LaTeXC l => l -> l -> l
ll = forall m. Monoid m => m -> m -> m -> m
between forall a b. (a -> b) -> a -> b
$ forall l. LaTeXC l => String -> l
comm0 String
"ll"

-- | Much greater \(\gg\).
gg :: LaTeXC l => l -> l -> l
gg :: forall l. LaTeXC l => l -> l -> l
gg = forall m. Monoid m => m -> m -> m -> m
between forall a b. (a -> b) -> a -> b
$ forall l. LaTeXC l => String -> l
comm0 String
"gg"

-- | Proportional-to \(\propto\).
propto :: LaTeXC l => l -> l -> l
propto :: forall l. LaTeXC l => l -> l -> l
propto  = forall m. Monoid m => m -> m -> m -> m
between forall a b. (a -> b) -> a -> b
$ forall l. LaTeXC l => String -> l
comm0 String
"propto"

-- | Perpendicular \(\perp\). This is the infix version of 'bot'.
perp :: LaTeXC l => l -> l -> l
perp :: forall l. LaTeXC l => l -> l -> l
perp = forall m. Monoid m => m -> m -> m -> m
between forall a b. (a -> b) -> a -> b
$ forall l. LaTeXC l => String -> l
comm0 String
"perp"

-- | Approximate equality \(\approx\)
approx :: LaTeXC l => l -> l -> l
approx :: forall l. LaTeXC l => l -> l -> l
approx = forall m. Monoid m => m -> m -> m -> m
between forall a b. (a -> b) -> a -> b
$ forall l. LaTeXC l => String -> l
comm0 String
"approx"

-- | Generic equivalence relation \(\sim\).
sim :: LaTeXC l => l -> l -> l
sim :: forall l. LaTeXC l => l -> l -> l
sim = forall m. Monoid m => m -> m -> m -> m
between forall a b. (a -> b) -> a -> b
$ forall l. LaTeXC l => String -> l
comm0 String
"sim"

-- | Equivalence relation \(\simeq\). Sometimes used for approximate
--   equality or isomorphism.
simeq :: LaTeXC l => l -> l -> l
simeq :: forall l. LaTeXC l => l -> l -> l
simeq = forall m. Monoid m => m -> m -> m -> m
between forall a b. (a -> b) -> a -> b
$ forall l. LaTeXC l => String -> l
comm0 String
"simeq"

-- | Congruence \(\cong\).
cong :: LaTeXC l => l -> l -> l
cong :: forall l. LaTeXC l => l -> l -> l
cong = forall m. Monoid m => m -> m -> m -> m
between forall a b. (a -> b) -> a -> b
$ forall l. LaTeXC l => String -> l
comm0 String
"cong"

-- | Parallel \(\parallel\).
parallel :: LaTeXC l => l -> l -> l
parallel :: forall l. LaTeXC l => l -> l -> l
parallel = forall m. Monoid m => m -> m -> m -> m
between forall a b. (a -> b) -> a -> b
$ forall l. LaTeXC l => String -> l
comm0 String
"parallel"

-- | Identical \/ defined-as \/ equivalent \(\equiv\).
equiv :: LaTeXC l => l -> l -> l
equiv :: forall l. LaTeXC l => l -> l -> l
equiv  = forall m. Monoid m => m -> m -> m -> m
between forall a b. (a -> b) -> a -> b
$ forall l. LaTeXC l => String -> l
comm0 String
"equiv"

-- | Element-of \(\in\).
in_ :: LaTeXC l => l -> l -> l
in_ :: forall l. LaTeXC l => l -> l -> l
in_ = forall m. Monoid m => m -> m -> m -> m
between forall a b. (a -> b) -> a -> b
$ forall l. LaTeXC l => String -> l
comm0 String
"in"

-- | Mirrored element-of \(\ni\).
ni :: LaTeXC l => l -> l -> l
ni :: forall l. LaTeXC l => l -> l -> l
ni  = forall m. Monoid m => m -> m -> m -> m
between forall a b. (a -> b) -> a -> b
$ forall l. LaTeXC l => String -> l
comm0 String
"ni"

-- | Not element of \(\notin\).
notin :: LaTeXC l => l -> l -> l
notin :: forall l. LaTeXC l => l -> l -> l
notin = forall m. Monoid m => m -> m -> m -> m
between forall a b. (a -> b) -> a -> b
$ forall l. LaTeXC l => String -> l
comm0 String
"notin"

-- | Subset-of \(\subset\).
subset :: LaTeXC l => l -> l -> l
subset :: forall l. LaTeXC l => l -> l -> l
subset  = forall m. Monoid m => m -> m -> m -> m
between forall a b. (a -> b) -> a -> b
$ forall l. LaTeXC l => String -> l
comm0 String
"subset"

-- | Subset-of-or-equal \(\subseteq\).
subseteq :: LaTeXC l => l -> l -> l
subseteq :: forall l. LaTeXC l => l -> l -> l
subseteq  = forall m. Monoid m => m -> m -> m -> m
between forall a b. (a -> b) -> a -> b
$ forall l. LaTeXC l => String -> l
comm0 String
"subseteq"

-- | Superset-of \(\supset\).
supset :: LaTeXC l => l -> l -> l
supset :: forall l. LaTeXC l => l -> l -> l
supset  = forall m. Monoid m => m -> m -> m -> m
between forall a b. (a -> b) -> a -> b
$ forall l. LaTeXC l => String -> l
comm0 String
"supset"

-- | Superset-of-or-equal \(\supseteq\).
supseteq :: LaTeXC l => l -> l -> l
supseteq :: forall l. LaTeXC l => l -> l -> l
supseteq  = forall m. Monoid m => m -> m -> m -> m
between forall a b. (a -> b) -> a -> b
$ forall l. LaTeXC l => String -> l
comm0 String
"supseteq"

-- | Set intersection \(\cap\).
cap :: LaTeXC l => l -> l -> l
cap :: forall l. LaTeXC l => l -> l -> l
cap  = forall m. Monoid m => m -> m -> m -> m
between forall a b. (a -> b) -> a -> b
$ forall l. LaTeXC l => String -> l
comm0 String
"cap"

-- | Set union \(\cup\).
cup :: LaTeXC l => l -> l -> l
cup :: forall l. LaTeXC l => l -> l -> l
cup  = forall m. Monoid m => m -> m -> m -> m
between forall a b. (a -> b) -> a -> b
$ forall l. LaTeXC l => String -> l
comm0 String
"cup"

-- | Set minus \(\setminus\).
setminus :: LaTeXC l => l -> l -> l
setminus :: forall l. LaTeXC l => l -> l -> l
setminus  = forall m. Monoid m => m -> m -> m -> m
between forall a b. (a -> b) -> a -> b
$ forall l. LaTeXC l => String -> l
comm0 String
"setminus"

-- | Angle pointing downwards \(\vee\).
vee :: LaTeXC l => l -> l -> l
vee :: forall l. LaTeXC l => l -> l -> l
vee  = forall m. Monoid m => m -> m -> m -> m
between forall a b. (a -> b) -> a -> b
$ forall l. LaTeXC l => String -> l
comm0 String
"vee"

-- | Angle pointing upwards \(\wedge\).
wedge :: LaTeXC l => l -> l -> l
wedge :: forall l. LaTeXC l => l -> l -> l
wedge  = forall m. Monoid m => m -> m -> m -> m
between forall a b. (a -> b) -> a -> b
$ forall l. LaTeXC l => String -> l
comm0 String
"wedge"

-- | Circled plus operator \(\oplus\).
oplus :: LaTeXC l => l -> l -> l
oplus :: forall l. LaTeXC l => l -> l -> l
oplus  = forall m. Monoid m => m -> m -> m -> m
between forall a b. (a -> b) -> a -> b
$ forall l. LaTeXC l => String -> l
comm0 String
"oplus"

-- | Circled minus operator \(\ominus\).
ominus :: LaTeXC l => l -> l -> l
ominus :: forall l. LaTeXC l => l -> l -> l
ominus  = forall m. Monoid m => m -> m -> m -> m
between forall a b. (a -> b) -> a -> b
$ forall l. LaTeXC l => String -> l
comm0 String
"ominus"

-- | Circled multiplication cross \(\otimes\).
otimes :: LaTeXC l => l -> l -> l
otimes :: forall l. LaTeXC l => l -> l -> l
otimes  = forall m. Monoid m => m -> m -> m -> m
between forall a b. (a -> b) -> a -> b
$ forall l. LaTeXC l => String -> l
comm0 String
"otimes"

-- | Circled slash \(\oslash\).
oslash :: LaTeXC l => l -> l -> l
oslash :: forall l. LaTeXC l => l -> l -> l
oslash  = forall m. Monoid m => m -> m -> m -> m
between forall a b. (a -> b) -> a -> b
$ forall l. LaTeXC l => String -> l
comm0 String
"oslash"

-- | Circled dot operator \(\odot\).
odot :: LaTeXC l => l -> l -> l
odot :: forall l. LaTeXC l => l -> l -> l
odot  = forall m. Monoid m => m -> m -> m -> m
between forall a b. (a -> b) -> a -> b
$ forall l. LaTeXC l => String -> l
comm0 String
"odot"

-- | Disjoint sum operator \(\uplus\).
uplus :: LaTeXC l => l -> l -> l
uplus :: forall l. LaTeXC l => l -> l -> l
uplus  = forall m. Monoid m => m -> m -> m -> m
between forall a b. (a -> b) -> a -> b
$ forall l. LaTeXC l => String -> l
comm0 String
"uplus"

--- Accemts
{-
 , hat, tilde, bar, vec, widehat, widetilde
 , dot, ddot, dddot
 , overline, underline
 -}

-- | Add a hat accent above a symbol, like \(\hat{x}\).
hat :: LaTeXC l => l -> l
hat :: forall l. LaTeXC l => l -> l
hat = forall l. LaTeXC l => String -> l -> l
comm1 String
"hat"

-- | Add a tilde accent above a symbol, like \(\tilde{y}\).
tilde :: LaTeXC l => l -> l
tilde :: forall l. LaTeXC l => l -> l
tilde = forall l. LaTeXC l => String -> l -> l
comm1 String
"tilde"

-- | Add a bar accent above a symbol, like \(\bar{z}\).
bar :: LaTeXC l => l -> l
bar :: forall l. LaTeXC l => l -> l
bar = forall l. LaTeXC l => String -> l -> l
comm1 String
"bar"

-- | Add a vector arrow accent above a symbol, like \(\vec{v}\).
vec :: LaTeXC l => l -> l
vec :: forall l. LaTeXC l => l -> l
vec = forall l. LaTeXC l => String -> l -> l
comm1 String
"vec"

-- | Add a wide hat accent above a symbol, like \(\widehat{w}\).
widehat :: LaTeXC l => l -> l
widehat :: forall l. LaTeXC l => l -> l
widehat = forall l. LaTeXC l => String -> l -> l
comm1 String
"widehat"

-- | Add a wide tilde accent above a symbol, like \(\widetilde{u}\).
widetilde :: LaTeXC l => l -> l
widetilde :: forall l. LaTeXC l => l -> l
widetilde = forall l. LaTeXC l => String -> l -> l
comm1 String
"widetilde"

-- | Add a dot accent above a symbol, as used to denote a derivative,
--   like \(\dot{x}\).
dot :: LaTeXC l => l -> l
dot :: forall l. LaTeXC l => l -> l
dot = forall l. LaTeXC l => String -> l -> l
comm1 String
"dot"

-- | Add a wide line accent above a symbol, like \(\overline{abc}\).
overline :: LaTeXC l => l -> l
overline :: forall l. LaTeXC l => l -> l
overline = forall l. LaTeXC l => String -> l -> l
comm1 String
"overline"

---- Greek alphabet

-- | \(\alpha\) symbol.
alpha :: LaTeXC l => l
alpha :: forall l. LaTeXC l => l
alpha = forall l. LaTeXC l => String -> l
comm0 String
"alpha"

-- | \(\beta\) symbol.
beta :: LaTeXC l => l
beta :: forall l. LaTeXC l => l
beta = forall l. LaTeXC l => String -> l
comm0 String
"beta"

-- | \(\gamma\) symbol.
gamma :: LaTeXC l => l
gamma :: forall l. LaTeXC l => l
gamma = forall l. LaTeXC l => String -> l
comm0 String
"gamma"

-- | \(\Gamma\) symbol.
gammau :: LaTeXC l => l
gammau :: forall l. LaTeXC l => l
gammau = forall l. LaTeXC l => String -> l
comm0 String
"Gamma"

-- | \(\delta\) symbol.
delta :: LaTeXC l => l
delta :: forall l. LaTeXC l => l
delta = forall l. LaTeXC l => String -> l
comm0 String
"delta"

-- | \(\Delta\) symbol.
deltau :: LaTeXC l => l
deltau :: forall l. LaTeXC l => l
deltau = forall l. LaTeXC l => String -> l
comm0 String
"Delta"

-- | \(\epsilon\) symbol.
epsilon :: LaTeXC l => l
epsilon :: forall l. LaTeXC l => l
epsilon = forall l. LaTeXC l => String -> l
comm0 String
"epsilon"

-- | \(\varepsilon\) symbol.
varepsilon :: LaTeXC l => l
varepsilon :: forall l. LaTeXC l => l
varepsilon = forall l. LaTeXC l => String -> l
comm0 String
"varepsilon"

-- | \(\zeta\) symbol.
zeta :: LaTeXC l => l
zeta :: forall l. LaTeXC l => l
zeta = forall l. LaTeXC l => String -> l
comm0 String
"zeta"

-- | \(\eta\) symbol.
eta :: LaTeXC l => l
eta :: forall l. LaTeXC l => l
eta = forall l. LaTeXC l => String -> l
comm0 String
"eta"

-- | \(\theta\) symbol.
theta :: LaTeXC l => l
theta :: forall l. LaTeXC l => l
theta = forall l. LaTeXC l => String -> l
comm0 String
"theta"

-- | \(\vartheta\) symbol.
vartheta :: LaTeXC l => l
vartheta :: forall l. LaTeXC l => l
vartheta = forall l. LaTeXC l => String -> l
comm0 String
"vartheta"

-- | \(\Theta\) symbol.
thetau :: LaTeXC l => l
thetau :: forall l. LaTeXC l => l
thetau = forall l. LaTeXC l => String -> l
comm0 String
"Theta"

-- | \(\iota\) symbol.
iota :: LaTeXC l => l
iota :: forall l. LaTeXC l => l
iota = forall l. LaTeXC l => String -> l
comm0 String
"iota"

-- | \(\kappa\) symbol.
kappa :: LaTeXC l => l
kappa :: forall l. LaTeXC l => l
kappa = forall l. LaTeXC l => String -> l
comm0 String
"kappa"

-- | \(\lambda\) symbol.
lambda :: LaTeXC l => l
lambda :: forall l. LaTeXC l => l
lambda = forall l. LaTeXC l => String -> l
comm0 String
"lambda"

-- | \(\Lambda\) symbol.
lambdau :: LaTeXC l => l
lambdau :: forall l. LaTeXC l => l
lambdau = forall l. LaTeXC l => String -> l
comm0 String
"Lambda"

-- | \(\mu\) symbol.
mu :: LaTeXC l => l
mu :: forall l. LaTeXC l => l
mu = forall l. LaTeXC l => String -> l
comm0 String
"mu"

-- | \(\nu\) symbol.
nu :: LaTeXC l => l
nu :: forall l. LaTeXC l => l
nu = forall l. LaTeXC l => String -> l
comm0 String
"nu"

-- | \(\xi\) symbol.
xi :: LaTeXC l => l
xi :: forall l. LaTeXC l => l
xi = forall l. LaTeXC l => String -> l
comm0 String
"xi"

-- | \(\Xi\) symbol.
xiu :: LaTeXC l => l
xiu :: forall l. LaTeXC l => l
xiu = forall l. LaTeXC l => String -> l
comm0 String
"Xi"

-- | \(\pi\) symbol.
pi_ :: LaTeXC l => l
pi_ :: forall l. LaTeXC l => l
pi_ = forall l. LaTeXC l => String -> l
comm0 String
"pi"

-- | \(\varpi\) symbol.
varpi :: LaTeXC l => l
varpi :: forall l. LaTeXC l => l
varpi = forall l. LaTeXC l => String -> l
comm0 String
"varpi"

-- | \(\Pi\) symbol.
piu :: LaTeXC l => l
piu :: forall l. LaTeXC l => l
piu = forall l. LaTeXC l => String -> l
comm0 String
"Pi"

-- | \(\rho\) symbol.
rho :: LaTeXC l => l
rho :: forall l. LaTeXC l => l
rho = forall l. LaTeXC l => String -> l
comm0 String
"rho"

-- | \(\varrho\) symbol.
varrho :: LaTeXC l => l
varrho :: forall l. LaTeXC l => l
varrho = forall l. LaTeXC l => String -> l
comm0 String
"varrho"

-- | \(\sigma\) symbol.
sigma :: LaTeXC l => l
sigma :: forall l. LaTeXC l => l
sigma = forall l. LaTeXC l => String -> l
comm0 String
"sigma"

-- | \(\varsigma\) symbol.
varsigma :: LaTeXC l => l
varsigma :: forall l. LaTeXC l => l
varsigma = forall l. LaTeXC l => String -> l
comm0 String
"varsigma"

-- | \(\Sigma\) symbol.
sigmau :: LaTeXC l => l
sigmau :: forall l. LaTeXC l => l
sigmau = forall l. LaTeXC l => String -> l
comm0 String
"Sigma"

-- | \(\tau\) symbol.
tau :: LaTeXC l => l
tau :: forall l. LaTeXC l => l
tau = forall l. LaTeXC l => String -> l
comm0 String
"tau"

-- | \(\upsilon\) symbol.
upsilon :: LaTeXC l => l
upsilon :: forall l. LaTeXC l => l
upsilon = forall l. LaTeXC l => String -> l
comm0 String
"upsilon"

-- | \(\Upsilon\) symbol.
upsilonu :: LaTeXC l => l
upsilonu :: forall l. LaTeXC l => l
upsilonu = forall l. LaTeXC l => String -> l
comm0 String
"Upsilon"

-- | \(\phi\) symbol.
phi :: LaTeXC l => l
phi :: forall l. LaTeXC l => l
phi = forall l. LaTeXC l => String -> l
comm0 String
"phi"

-- | \(\varphi\) symbol.
varphi :: LaTeXC l => l
varphi :: forall l. LaTeXC l => l
varphi = forall l. LaTeXC l => String -> l
comm0 String
"varphi"

-- | \(\Phi\) symbol.
phiu :: LaTeXC l => l
phiu :: forall l. LaTeXC l => l
phiu = forall l. LaTeXC l => String -> l
comm0 String
"Phi"

-- | \(\chi\) symbol.
chi :: LaTeXC l => l
chi :: forall l. LaTeXC l => l
chi = forall l. LaTeXC l => String -> l
comm0 String
"chi"

-- | \(\psi\) symbol.
psi :: LaTeXC l => l
psi :: forall l. LaTeXC l => l
psi = forall l. LaTeXC l => String -> l
comm0 String
"psi"

-- | \(\Psi\) symbol.
psiu :: LaTeXC l => l
psiu :: forall l. LaTeXC l => l
psiu = forall l. LaTeXC l => String -> l
comm0 String
"Psi"

-- | \(\omega\) symbol.
omega :: LaTeXC l => l
omega :: forall l. LaTeXC l => l
omega = forall l. LaTeXC l => String -> l
comm0 String
"omega"

-- | \(\Omega\) symbol.
omegau :: LaTeXC l => l
omegau :: forall l. LaTeXC l => l
omegau = forall l. LaTeXC l => String -> l
comm0 String
"Omega"

---- Other symbols

-- | Plus-or-minus symbol \(\pm\). Also available as infix '+-'.
pm :: LaTeXC l => l
pm :: forall l. LaTeXC l => l
pm  = forall l. LaTeXC l => String -> l
comm0 String
"pm"

-- | Minus-or-plus symbol \(\mp\).
mp :: LaTeXC l => l
mp :: forall l. LaTeXC l => l
mp  = forall l. LaTeXC l => String -> l
comm0 String
"mp"

-- | A right-arrow, \(\to\).
to :: LaTeXC l => l
to :: forall l. LaTeXC l => l
to = forall l. LaTeXC l => String -> l
comm0 String
"to"

-- | A right-arrow for function definitions, \(\mapsto\).
mapsto :: LaTeXC l => l
mapsto :: forall l. LaTeXC l => l
mapsto = forall l. LaTeXC l => String -> l
comm0 String
"mapsto"

-- | An implication arrow, \(\implies\).
implies :: LaTeXC l => l
implies :: forall l. LaTeXC l => l
implies = forall l. LaTeXC l => String -> l
comm0 String
"implies"

-- | /For all/ symbol, \(\forall\).
forall :: LaTeXC l => l
forall :: forall l. LaTeXC l => l
forall = forall l. LaTeXC l => String -> l
comm0 String
"forall"

-- | /Exists/ symbol, \(\exists\).
exists :: LaTeXC l => l
exists :: forall l. LaTeXC l => l
exists = forall l. LaTeXC l => String -> l
comm0 String
"exists"

-- | Dagger symbol, \(\dagger\).
dagger :: LaTeXC l => l
dagger :: forall l. LaTeXC l => l
dagger = forall l. LaTeXC l => String -> l
comm0 String
"dagger"

-- | Double dagger symbol, \(\ddagger\).
ddagger :: LaTeXC l => l
ddagger :: forall l. LaTeXC l => l
ddagger = forall l. LaTeXC l => String -> l
comm0 String
"ddagger"

-- | Infinity symbol, \(\infty\).
infty :: LaTeXC l => l
infty :: forall l. LaTeXC l => l
infty = forall l. LaTeXC l => String -> l
comm0 String
"infty"

-- | Dotless letter i, \(\imath\).
imath :: LaTeXC l => l
imath :: forall l. LaTeXC l => l
imath = forall l. LaTeXC l => String -> l
comm0 String
"imath"

-- | Dotless letter j, \(\jmath\).
jmath :: LaTeXC l => l
jmath :: forall l. LaTeXC l => l
jmath = forall l. LaTeXC l => String -> l
comm0 String
"jmath"

-- | Bottom symbol, \(\bot\). For the infix version see 'perp'.
bot :: LaTeXC l => l
bot :: forall l. LaTeXC l => l
bot = forall l. LaTeXC l => String -> l
comm0 String
"bot"



------------------------------------
------------- Arrows ---------------
-- | \(\uparrow\) symbol
uparrow :: LaTeXC l => l
uparrow :: forall l. LaTeXC l => l
uparrow = forall l. LaTeXC l => String -> l
comm0 String
"uparrow"
-- | \(\downarrow\) symbol
downarrow :: LaTeXC l => l
downarrow :: forall l. LaTeXC l => l
downarrow = forall l. LaTeXC l => String -> l
comm0 String
"downarrow"
-- | \(\Uparrow\) symbol
uparrow2 :: LaTeXC l => l
uparrow2 :: forall l. LaTeXC l => l
uparrow2 = forall l. LaTeXC l => String -> l
comm0 String
"Uparrow"
-- | \(\Downarrow\) symbol
downarrow2 :: LaTeXC l => l
downarrow2 :: forall l. LaTeXC l => l
downarrow2 = forall l. LaTeXC l => String -> l
comm0 String
"Downarrow"
-- | \(\updownarrow\) symbol
updownarrow :: LaTeXC l => l
updownarrow :: forall l. LaTeXC l => l
updownarrow = forall l. LaTeXC l => String -> l
comm0 String
"updownarrow"
-- | \(\Updownarrow\) symbol
updownarrow2 :: LaTeXC l => l
updownarrow2 :: forall l. LaTeXC l => l
updownarrow2 = forall l. LaTeXC l => String -> l
comm0 String
"Updownarrow"
-- | \(\leftarrow\) symbol
leftarrow :: LaTeXC l => l
leftarrow :: forall l. LaTeXC l => l
leftarrow = forall l. LaTeXC l => String -> l
comm0 String
"leftarrow"
-- | \(\rightarrow\) symbol
rightarrow :: LaTeXC l => l
rightarrow :: forall l. LaTeXC l => l
rightarrow = forall l. LaTeXC l => String -> l
comm0 String
"rightarrow"
-- | \(\leftrightarrow\) symbol
leftrightarrow :: LaTeXC l => l
leftrightarrow :: forall l. LaTeXC l => l
leftrightarrow = forall l. LaTeXC l => String -> l
comm0 String
"leftrightarrow"
-- | \(\Leftrightarrow\) symbol
leftrightarrow2 :: LaTeXC l => l
leftrightarrow2 :: forall l. LaTeXC l => l
leftrightarrow2 = forall l. LaTeXC l => String -> l
comm0 String
"Leftrightarrow"
-- | \(\Leftarrow\) symbol
leftarrow2 :: LaTeXC l => l
leftarrow2 :: forall l. LaTeXC l => l
leftarrow2 = forall l. LaTeXC l => String -> l
comm0 String
"Leftarrow"
-- | \(\Rightarrow\) symbol
rightarrow2 :: LaTeXC l => l
rightarrow2 :: forall l. LaTeXC l => l
rightarrow2 = forall l. LaTeXC l => String -> l
comm0 String
"Rightarrow"
-- | \(\longleftarrow\) symbol
longleftarrow :: LaTeXC l => l
longleftarrow :: forall l. LaTeXC l => l
longleftarrow = forall l. LaTeXC l => String -> l
comm0 String
"longleftarrow"
-- | \(\longrightarrow\) symbol
longrightarrow :: LaTeXC l => l
longrightarrow :: forall l. LaTeXC l => l
longrightarrow = forall l. LaTeXC l => String -> l
comm0 String
"longrightarrow"
-- | \(\Longleftarrow\) symbol
longleftarrow2 :: LaTeXC l => l
longleftarrow2 :: forall l. LaTeXC l => l
longleftarrow2 = forall l. LaTeXC l => String -> l
comm0 String
"Longleftarrow"
-- | \(\Longrightarrow\) symbol
longrightarrow2 :: LaTeXC l => l
longrightarrow2 :: forall l. LaTeXC l => l
longrightarrow2 = forall l. LaTeXC l => String -> l
comm0 String
"Longrightarrow"
-- | \(\longleftrightarrow\) symbol
longleftrightarrow :: LaTeXC l => l
longleftrightarrow :: forall l. LaTeXC l => l
longleftrightarrow = forall l. LaTeXC l => String -> l
comm0 String
"longleftrightarrow"
-- | \(\Longleftrightarrow\) symbol
longleftrightarrow2 :: LaTeXC l => l
longleftrightarrow2 :: forall l. LaTeXC l => l
longleftrightarrow2 = forall l. LaTeXC l => String -> l
comm0 String
"Longleftrightarrow"
-- | \(\nwarrow\) symbol
nwarrow :: LaTeXC l => l
nwarrow :: forall l. LaTeXC l => l
nwarrow = forall l. LaTeXC l => String -> l
comm0 String
"nwarrow"
-- | \(\nearrow\) symbol
nearrow :: LaTeXC l => l
nearrow :: forall l. LaTeXC l => l
nearrow = forall l. LaTeXC l => String -> l
comm0 String
"nearrow"
-- | \(\swarrow\) symbol
swarrow :: LaTeXC l => l
swarrow :: forall l. LaTeXC l => l
swarrow = forall l. LaTeXC l => String -> l
comm0 String
"swarrow"
-- | \(\searrow\) symbol
searrow :: LaTeXC l => l
searrow :: forall l. LaTeXC l => l
searrow = forall l. LaTeXC l => String -> l
comm0 String
"searrow"
-- | \(\longmapsto\) symbol
longmapsto :: LaTeXC l => l
longmapsto :: forall l. LaTeXC l => l
longmapsto = forall l. LaTeXC l => String -> l
comm0 String
"longmapsto"
-- | \(\hookleftarrow\) symbol
hookleftarrow :: LaTeXC l => l
hookleftarrow :: forall l. LaTeXC l => l
hookleftarrow = forall l. LaTeXC l => String -> l
comm0 String
"hookleftarrow"
-- | \(\hookrightarrow\) symbol
hookrightarrow :: LaTeXC l => l
hookrightarrow :: forall l. LaTeXC l => l
hookrightarrow = forall l. LaTeXC l => String -> l
comm0 String
"hookrightarrow"
-- | \(\leftharpoonup\) symbol
leftharpoonup :: LaTeXC l => l
leftharpoonup :: forall l. LaTeXC l => l
leftharpoonup = forall l. LaTeXC l => String -> l
comm0 String
"leftharpoonup"
-- | \(\rightharpoonup\) symbol
rightharpoonup :: LaTeXC l => l
rightharpoonup :: forall l. LaTeXC l => l
rightharpoonup = forall l. LaTeXC l => String -> l
comm0 String
"rightharpoonup"
-- | \(\leftharpoondown\) symbol
leftharpoondown :: LaTeXC l => l
leftharpoondown :: forall l. LaTeXC l => l
leftharpoondown = forall l. LaTeXC l => String -> l
comm0 String
"leftharpoondown"
-- | \(\rightharpoondown\) symbol
rightharpoondown :: LaTeXC l => l
rightharpoondown :: forall l. LaTeXC l => l
rightharpoondown = forall l. LaTeXC l => String -> l
comm0 String
"rightharpoondown"

-------------------------------------
------------ Math Fonts -------------

-- | Default math symbol font.
mathdefault :: LaTeXC l => l -> l
mathdefault :: forall l. LaTeXC l => l -> l
mathdefault = forall l. LaTeXC l => String -> l -> l
comm1 String
"mathdefault"

-- | Bold face, like \(\mathbf{Abc}\).
mathbf :: LaTeXC l => l -> l
mathbf :: forall l. LaTeXC l => l -> l
mathbf = forall l. LaTeXC l => String -> l -> l
comm1 String
"mathbf"

-- | Roman, i.e. not-italic math, \(\mathrm{deF}\)
mathrm :: LaTeXC l => l -> l
mathrm :: forall l. LaTeXC l => l -> l
mathrm = forall l. LaTeXC l => String -> l -> l
comm1 String
"mathrm"

-- | Calligraphic math symbols. Only works (reliably) with uppercase letters, like \(\mathcal{LMN}\).
mathcal :: LaTeXC l => l -> l
mathcal :: forall l. LaTeXC l => l -> l
mathcal = forall l. LaTeXC l => String -> l -> l
comm1 String
"mathcal"

-- | Sans-serif math, \(\mathsf{xyz}\).
mathsf :: LaTeXC l => l -> l
mathsf :: forall l. LaTeXC l => l -> l
mathsf = forall l. LaTeXC l => String -> l -> l
comm1 String
"mathsf"

-- | Typewriter font, \(\mathtt{ijk}\).
mathtt :: LaTeXC l => l -> l
mathtt :: forall l. LaTeXC l => l -> l
mathtt = forall l. LaTeXC l => String -> l -> l
comm1 String
"mathtt"

-- | Italic math. Uses the same glyphs as 'mathdefault', but with spacings
--   intended for multi-character symbols rather than juxtaposition of single-character symbols.
mathit :: LaTeXC l => l -> l
mathit :: forall l. LaTeXC l => l -> l
mathit = forall l. LaTeXC l => String -> l -> l
comm1 String
"mathit"