{-# LANGUAGE OverloadedStrings #-}
{-# LANGUAGE CPP               #-}

-- | 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 :: l -> l
math = (LaTeX -> LaTeX) -> l -> l
forall l. LaTeXC l => (LaTeX -> LaTeX) -> l -> l
liftL ((LaTeX -> LaTeX) -> l -> l) -> (LaTeX -> LaTeX) -> l -> l
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 :: l -> l
mathDisplay = (LaTeX -> LaTeX) -> l -> l
forall l. LaTeXC l => (LaTeX -> LaTeX) -> l -> l
liftL ((LaTeX -> LaTeX) -> l -> l) -> (LaTeX -> LaTeX) -> l -> l
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
(+) = LaTeX -> LaTeX -> LaTeX -> LaTeX
forall m. Monoid m => m -> m -> m -> m
between LaTeX
"+"
 (-) = LaTeX -> LaTeX -> LaTeX -> LaTeX
forall m. Monoid m => m -> m -> m -> m
between LaTeX
"-"
 * :: LaTeX -> LaTeX -> LaTeX
(*) = LaTeX -> LaTeX -> LaTeX
forall a. Semigroup a => a -> a -> a
(<>)
 negate :: LaTeX -> LaTeX
negate = (LaTeX
TeXEmpty LaTeX -> LaTeX -> LaTeX
forall a. Num a => a -> a -> a
-)
 fromInteger :: Integer -> LaTeX
fromInteger = Integer -> LaTeX
forall a l. (Render a, LaTeXC l) => a -> l
rendertex
 abs :: LaTeX -> LaTeX
abs = LaTeX -> LaTeX -> LaTeX -> LaTeX
forall l. LaTeXC l => LaTeX -> LaTeX -> l -> l
autoBrackets LaTeX
"|" LaTeX
"|"
 signum :: LaTeX -> LaTeX
signum = (LaTeX -> LaTeX
forall l. LaTeXC l => l -> l
operatorname LaTeX
"sgn" LaTeX -> LaTeX -> LaTeX
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
(/) = LaTeX -> LaTeX -> LaTeX
forall l. LaTeXC l => l -> l -> l
frac
 fromRational :: Rational -> LaTeX
fromRational = Double -> LaTeX
forall a l. (Render a, LaTeXC l) => a -> l
rendertex (Double -> LaTeX) -> (Rational -> Double) -> Rational -> LaTeX
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (Rational -> Double
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 = LaTeX
forall l. LaTeXC l => l
pi_
 exp :: LaTeX -> LaTeX
exp = (LaTeX
forall l. LaTeXC l => l
texp LaTeX -> LaTeX -> LaTeX
forall a. Semigroup a => a -> a -> a
<>)
 sqrt :: LaTeX -> LaTeX
sqrt = Maybe LaTeX -> LaTeX -> LaTeX
forall l. LaTeXC l => Maybe l -> l -> l
tsqrt Maybe LaTeX
forall a. Maybe a
Nothing
 log :: LaTeX -> LaTeX
log = (LaTeX
forall l. LaTeXC l => l
tlog LaTeX -> LaTeX -> LaTeX
forall a. Semigroup a => a -> a -> a
<>)
 ** :: LaTeX -> LaTeX -> LaTeX
(**) = LaTeX -> LaTeX -> LaTeX
forall l. LaTeXC l => l -> l -> l
(^:)
 logBase :: LaTeX -> LaTeX -> LaTeX
logBase LaTeX
b LaTeX
x = (String -> LaTeX
forall l. LaTeXC l => String -> l
commS String
"log" LaTeX -> LaTeX -> LaTeX
forall l. LaTeXC l => l -> l -> l
!: LaTeX
b) LaTeX -> LaTeX -> LaTeX
forall a. Semigroup a => a -> a -> a
<> LaTeX
x
 sin :: LaTeX -> LaTeX
sin = (LaTeX
forall l. LaTeXC l => l
tsin LaTeX -> LaTeX -> LaTeX
forall a. Semigroup a => a -> a -> a
<>)
 tan :: LaTeX -> LaTeX
tan = (LaTeX
forall l. LaTeXC l => l
ttan LaTeX -> LaTeX -> LaTeX
forall a. Semigroup a => a -> a -> a
<>)
 cos :: LaTeX -> LaTeX
cos = (LaTeX
forall l. LaTeXC l => l
tcos LaTeX -> LaTeX -> LaTeX
forall a. Semigroup a => a -> a -> a
<>)
 asin :: LaTeX -> LaTeX
asin = (LaTeX
forall l. LaTeXC l => l
arcsin LaTeX -> LaTeX -> LaTeX
forall a. Semigroup a => a -> a -> a
<>)
 atan :: LaTeX -> LaTeX
atan = (LaTeX
forall l. LaTeXC l => l
arctan LaTeX -> LaTeX -> LaTeX
forall a. Semigroup a => a -> a -> a
<>)
 acos :: LaTeX -> LaTeX
acos = (LaTeX
forall l. LaTeXC l => l
arccos LaTeX -> LaTeX -> LaTeX
forall a. Semigroup a => a -> a -> a
<>)
 sinh :: LaTeX -> LaTeX
sinh = (LaTeX
forall l. LaTeXC l => l
tsinh LaTeX -> LaTeX -> LaTeX
forall a. Semigroup a => a -> a -> a
<>)
 tanh :: LaTeX -> LaTeX
tanh = (LaTeX
forall l. LaTeXC l => l
ttanh LaTeX -> LaTeX -> LaTeX
forall a. Semigroup a => a -> a -> a
<>)
 cosh :: LaTeX -> LaTeX
cosh = (LaTeX
forall l. LaTeXC l => l
tcosh LaTeX -> LaTeX -> LaTeX
forall a. Semigroup a => a -> a -> a
<>)
 asinh :: LaTeX -> LaTeX
asinh = (LaTeX -> LaTeX
forall l. LaTeXC l => l -> l
operatorname LaTeX
"arsinh" LaTeX -> LaTeX -> LaTeX
forall a. Semigroup a => a -> a -> a
<>)
 atanh :: LaTeX -> LaTeX
atanh = (LaTeX -> LaTeX
forall l. LaTeXC l => l -> l
operatorname LaTeX
"artanh" LaTeX -> LaTeX -> LaTeX
forall a. Semigroup a => a -> a -> a
<>)
 acosh :: LaTeX -> LaTeX
acosh = (LaTeX -> LaTeX
forall l. LaTeXC l => l -> l
operatorname LaTeX
"arcosh" LaTeX -> LaTeX -> LaTeX
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
(+) = (LaTeX -> LaTeX -> LaTeX) -> 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 LaTeX -> LaTeX -> LaTeX
forall a. Num a => a -> a -> a
(+)
 (-) = (LaTeX -> LaTeX -> LaTeX) -> 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 (-)
 * :: LaTeXT m a -> LaTeXT m a -> LaTeXT m a
(*) = 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 = (LaTeX -> LaTeX) -> LaTeXT m a -> LaTeXT m a
forall (m :: * -> *) a.
Monad m =>
(LaTeX -> LaTeX) -> LaTeXT m a -> LaTeXT m a
liftFun LaTeX -> LaTeX
forall a. Num a => a -> a
negate
 fromInteger :: Integer -> LaTeXT m a
fromInteger = LaTeX -> LaTeXT m a
forall l. LaTeXC l => LaTeX -> l
fromLaTeX (LaTeX -> LaTeXT m a)
-> (Integer -> LaTeX) -> Integer -> LaTeXT m a
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Integer -> LaTeX
forall a. Num a => Integer -> a
fromInteger
 abs :: LaTeXT m a -> LaTeXT m a
abs = (LaTeX -> LaTeX) -> LaTeXT m a -> LaTeXT m a
forall (m :: * -> *) a.
Monad m =>
(LaTeX -> LaTeX) -> LaTeXT m a -> LaTeXT m a
liftFun LaTeX -> LaTeX
forall a. Num a => a -> a
abs
 signum :: LaTeXT m a -> LaTeXT m a
signum = (LaTeX -> LaTeX) -> LaTeXT m a -> LaTeXT m a
forall (m :: * -> *) a.
Monad m =>
(LaTeX -> LaTeX) -> LaTeXT m a -> LaTeXT m a
liftFun LaTeX -> LaTeX
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
(/) = (LaTeX -> LaTeX -> LaTeX) -> 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 LaTeX -> LaTeX -> LaTeX
forall a. Fractional a => a -> a -> a
(/)
 fromRational :: Rational -> LaTeXT m a
fromRational = LaTeX -> LaTeXT m a
forall l. LaTeXC l => LaTeX -> l
fromLaTeX (LaTeX -> LaTeXT m a)
-> (Rational -> LaTeX) -> Rational -> LaTeXT m a
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Rational -> LaTeX
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 = LaTeXT m a
forall l. LaTeXC l => l
pi_
 exp :: LaTeXT m a -> LaTeXT m a
exp = (LaTeX -> LaTeX) -> LaTeXT m a -> LaTeXT m a
forall (m :: * -> *) a.
Monad m =>
(LaTeX -> LaTeX) -> LaTeXT m a -> LaTeXT m a
liftFun LaTeX -> LaTeX
forall a. Floating a => a -> a
exp
 sqrt :: LaTeXT m a -> LaTeXT m a
sqrt = (LaTeX -> LaTeX) -> LaTeXT m a -> LaTeXT m a
forall (m :: * -> *) a.
Monad m =>
(LaTeX -> LaTeX) -> LaTeXT m a -> LaTeXT m a
liftFun LaTeX -> LaTeX
forall a. Floating a => a -> a
sqrt
 log :: LaTeXT m a -> LaTeXT m a
log = (LaTeX -> LaTeX) -> LaTeXT m a -> LaTeXT m a
forall (m :: * -> *) a.
Monad m =>
(LaTeX -> LaTeX) -> LaTeXT m a -> LaTeXT m a
liftFun LaTeX -> LaTeX
forall a. Floating a => a -> a
log
 ** :: LaTeXT m a -> LaTeXT m a -> LaTeXT m a
(**) = (LaTeX -> LaTeX -> LaTeX) -> 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 LaTeX -> LaTeX -> LaTeX
forall a. Floating a => a -> a -> a
(**)
 logBase :: LaTeXT m a -> LaTeXT m a -> LaTeXT m a
logBase = (LaTeX -> LaTeX -> LaTeX) -> 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 LaTeX -> LaTeX -> LaTeX
forall a. Floating a => a -> a -> a
logBase
 sin :: LaTeXT m a -> LaTeXT m a
sin = (LaTeX -> LaTeX) -> LaTeXT m a -> LaTeXT m a
forall (m :: * -> *) a.
Monad m =>
(LaTeX -> LaTeX) -> LaTeXT m a -> LaTeXT m a
liftFun LaTeX -> LaTeX
forall a. Floating a => a -> a
sin
 tan :: LaTeXT m a -> LaTeXT m a
tan = (LaTeX -> LaTeX) -> LaTeXT m a -> LaTeXT m a
forall (m :: * -> *) a.
Monad m =>
(LaTeX -> LaTeX) -> LaTeXT m a -> LaTeXT m a
liftFun LaTeX -> LaTeX
forall a. Floating a => a -> a
tan
 cos :: LaTeXT m a -> LaTeXT m a
cos = (LaTeX -> LaTeX) -> LaTeXT m a -> LaTeXT m a
forall (m :: * -> *) a.
Monad m =>
(LaTeX -> LaTeX) -> LaTeXT m a -> LaTeXT m a
liftFun LaTeX -> LaTeX
forall a. Floating a => a -> a
cos
 asin :: LaTeXT m a -> LaTeXT m a
asin = (LaTeX -> LaTeX) -> LaTeXT m a -> LaTeXT m a
forall (m :: * -> *) a.
Monad m =>
(LaTeX -> LaTeX) -> LaTeXT m a -> LaTeXT m a
liftFun LaTeX -> LaTeX
forall a. Floating a => a -> a
asin
 atan :: LaTeXT m a -> LaTeXT m a
atan = (LaTeX -> LaTeX) -> LaTeXT m a -> LaTeXT m a
forall (m :: * -> *) a.
Monad m =>
(LaTeX -> LaTeX) -> LaTeXT m a -> LaTeXT m a
liftFun LaTeX -> LaTeX
forall a. Floating a => a -> a
atan
 acos :: LaTeXT m a -> LaTeXT m a
acos = (LaTeX -> LaTeX) -> LaTeXT m a -> LaTeXT m a
forall (m :: * -> *) a.
Monad m =>
(LaTeX -> LaTeX) -> LaTeXT m a -> LaTeXT m a
liftFun LaTeX -> LaTeX
forall a. Floating a => a -> a
acos
 sinh :: LaTeXT m a -> LaTeXT m a
sinh = (LaTeX -> LaTeX) -> LaTeXT m a -> LaTeXT m a
forall (m :: * -> *) a.
Monad m =>
(LaTeX -> LaTeX) -> LaTeXT m a -> LaTeXT m a
liftFun LaTeX -> LaTeX
forall a. Floating a => a -> a
sinh
 tanh :: LaTeXT m a -> LaTeXT m a
tanh = (LaTeX -> LaTeX) -> LaTeXT m a -> LaTeXT m a
forall (m :: * -> *) a.
Monad m =>
(LaTeX -> LaTeX) -> LaTeXT m a -> LaTeXT m a
liftFun LaTeX -> LaTeX
forall a. Floating a => a -> a
tanh
 cosh :: LaTeXT m a -> LaTeXT m a
cosh = (LaTeX -> LaTeX) -> LaTeXT m a -> LaTeXT m a
forall (m :: * -> *) a.
Monad m =>
(LaTeX -> LaTeX) -> LaTeXT m a -> LaTeXT m a
liftFun LaTeX -> LaTeX
forall a. Floating a => a -> a
cosh
 asinh :: LaTeXT m a -> LaTeXT m a
asinh = (LaTeX -> LaTeX) -> LaTeXT m a -> LaTeXT m a
forall (m :: * -> *) a.
Monad m =>
(LaTeX -> LaTeX) -> LaTeXT m a -> LaTeXT m a
liftFun LaTeX -> LaTeX
forall a. Floating a => a -> a
asinh
 atanh :: LaTeXT m a -> LaTeXT m a
atanh = (LaTeX -> LaTeX) -> LaTeXT m a -> LaTeXT m a
forall (m :: * -> *) a.
Monad m =>
(LaTeX -> LaTeX) -> LaTeXT m a -> LaTeXT m a
liftFun LaTeX -> LaTeX
forall a. Floating a => a -> a
atanh
 acosh :: LaTeXT m a -> LaTeXT m a
acosh = (LaTeX -> LaTeX) -> LaTeXT m a -> LaTeXT m a
forall (m :: * -> *) a.
Monad m =>
(LaTeX -> LaTeX) -> LaTeXT m a -> LaTeXT m a
liftFun LaTeX -> LaTeX
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 :: l
nonumber = String -> l
forall l. LaTeXC l => String -> l
comm0 String
"nonumber"

-- | A numbered mathematical equation (or otherwise math expression).
equation :: LaTeXC l => l -> l
equation :: l -> l
equation = (LaTeX -> LaTeX) -> l -> l
forall l. LaTeXC l => (LaTeX -> LaTeX) -> l -> l
liftL ((LaTeX -> LaTeX) -> l -> l) -> (LaTeX -> LaTeX) -> l -> l
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_ :: l -> l
equation_ = (LaTeX -> LaTeX) -> l -> l
forall l. LaTeXC l => (LaTeX -> LaTeX) -> l -> l
liftL ((LaTeX -> LaTeX) -> l -> l) -> (LaTeX -> LaTeX) -> l -> l
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 :: l -> l
autoParens l
x = String -> l
forall l. LaTeXC l => String -> l
commS String
"left(" l -> l -> l
forall a. Semigroup a => a -> a -> a
<> l
x l -> l -> l
forall a. Semigroup a => a -> a -> a
<> String -> l
forall l. LaTeXC l => String -> l
commS String
"right)"

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

-- | Like 'autoParens', but with curly brackets.
autoBraces :: LaTeXC l => l -> l
autoBraces :: l -> l
autoBraces l
x = String -> l
forall l. LaTeXC l => String -> l
commS String
"left"l -> l -> l
forall a. Semigroup a => a -> a -> a
<>l
"{" l -> l -> l
forall a. Semigroup a => a -> a -> a
<> l
x l -> l -> l
forall a. Semigroup a => a -> a -> a
<> String -> l
forall l. LaTeXC l => String -> l
commS String
"right"l -> l -> l
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 :: l -> l
autoAngleBrackets l
x = String -> l
forall l. LaTeXC l => String -> l
commS String
"left"l -> l -> l
forall a. Semigroup a => a -> a -> a
<>l
forall l. LaTeXC l => l
langle l -> l -> l
forall a. Semigroup a => a -> a -> a
<> l
x l -> l -> l
forall a. Semigroup a => a -> a -> a
<> String -> l
forall l. LaTeXC l => String -> l
commS String
"right"l -> l -> l
forall a. Semigroup a => a -> a -> a
<>l
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 :: LaTeX -> LaTeX -> l -> l
autoBrackets LaTeX
lBrack LaTeX
rBrack l
x
  = String -> l
forall l. LaTeXC l => String -> l
commS String
"left" l -> l -> l
forall a. Semigroup a => a -> a -> a
<> LaTeX -> l
forall l. LaTeXC l => LaTeX -> l
fromLaTeX LaTeX
lBrack l -> l -> l
forall a. Semigroup a => a -> a -> a
<> l
x l -> l -> l
forall a. Semigroup a => a -> a -> a
<> String -> l
forall l. LaTeXC l => String -> l
commS String
"right" l -> l -> l
forall a. Semigroup a => a -> a -> a
<> LaTeX -> l
forall l. LaTeXC l => LaTeX -> l
fromLaTeX LaTeX
rBrack

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

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

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

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

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

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

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

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

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

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

---- Function symbols

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

-- | Natural logarithm symbol.
ln :: LaTeXC l => l
ln :: l
ln = String -> l
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 :: Maybe l -> l -> l
tsqrt Maybe l
Nothing  = (LaTeX -> LaTeX) -> l -> l
forall l. LaTeXC l => (LaTeX -> LaTeX) -> l -> l
liftL ((LaTeX -> LaTeX) -> l -> l) -> (LaTeX -> LaTeX) -> l -> l
forall a b. (a -> b) -> a -> b
$ \LaTeX
x -> String -> [TeXArg] -> LaTeX
TeXComm String
"sqrt" [LaTeX -> TeXArg
FixArg LaTeX
x]
tsqrt (Just l
n) = (LaTeX -> LaTeX -> LaTeX) -> l -> l -> l
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 :: l -> l
operatorname = String -> l -> l
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 :: l
tsum = String -> l
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 :: l -> l -> l
sumFromTo l
x l
y = String -> l
forall l. LaTeXC l => String -> l
commS String
"sum" l -> l -> l
forall a. Semigroup a => a -> a -> a
<> Text -> l
forall l. LaTeXC l => Text -> l
rawText
"_" l -> l -> l
forall a. Semigroup a => a -> a -> a
<> l -> l
forall l. LaTeXC l => l -> l
braces l
x l -> l -> l
forall a. Semigroup a => a -> a -> a
<> Text -> l
forall l. LaTeXC l => Text -> l
rawText
"^" l -> l -> l
forall a. Semigroup a => a -> a -> a
<> l -> l
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 :: l
prod = String -> l
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 :: l -> l -> l
prodFromTo l
x l
y = String -> l
forall l. LaTeXC l => String -> l
commS String
"prod" l -> l -> l
forall a. Semigroup a => a -> a -> a
<> Text -> l
forall l. LaTeXC l => Text -> l
rawText
"_" l -> l -> l
forall a. Semigroup a => a -> a -> a
<> l -> l
forall l. LaTeXC l => l -> l
braces l
x l -> l -> l
forall a. Semigroup a => a -> a -> a
<> Text -> l
forall l. LaTeXC l => Text -> l
rawText
"^" l -> l -> l
forall a. Semigroup a => a -> a -> a
<> l -> l
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 :: l
coprod = String -> l
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 :: l -> l -> l
coprodFromTo l
x l
y = String -> l
forall l. LaTeXC l => String -> l
commS String
"coprod" l -> l -> l
forall a. Semigroup a => a -> a -> a
<> Text -> l
forall l. LaTeXC l => Text -> l
rawText
"_" l -> l -> l
forall a. Semigroup a => a -> a -> a
<> l -> l
forall l. LaTeXC l => l -> l
braces l
x l -> l -> l
forall a. Semigroup a => a -> a -> a
<> Text -> l
forall l. LaTeXC l => Text -> l
rawText
"^" l -> l -> l
forall a. Semigroup a => a -> a -> a
<> l -> l
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 :: l
bigcup = String -> l
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 :: l -> l -> l
bigcupFromTo l
x l
y = String -> l
forall l. LaTeXC l => String -> l
commS String
"bigcup" l -> l -> l
forall a. Semigroup a => a -> a -> a
<> Text -> l
forall l. LaTeXC l => Text -> l
rawText
"_" l -> l -> l
forall a. Semigroup a => a -> a -> a
<> l -> l
forall l. LaTeXC l => l -> l
braces l
x l -> l -> l
forall a. Semigroup a => a -> a -> a
<> Text -> l
forall l. LaTeXC l => Text -> l
rawText
"^" l -> l -> l
forall a. Semigroup a => a -> a -> a
<> l -> l
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 :: l
bigcap = String -> l
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 :: l -> l -> l
bigcapFromTo l
x l
y = String -> l
forall l. LaTeXC l => String -> l
commS String
"bigcap" l -> l -> l
forall a. Semigroup a => a -> a -> a
<> Text -> l
forall l. LaTeXC l => Text -> l
rawText
"_" l -> l -> l
forall a. Semigroup a => a -> a -> a
<> l -> l
forall l. LaTeXC l => l -> l
braces l
x l -> l -> l
forall a. Semigroup a => a -> a -> a
<> Text -> l
forall l. LaTeXC l => Text -> l
rawText
"^" l -> l -> l
forall a. Semigroup a => a -> a -> a
<> l -> l
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 :: l
integral = String -> l
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 :: l -> l -> l
integralFromTo l
x l
y = String -> l
forall l. LaTeXC l => String -> l
commS String
"int" l -> l -> l
forall a. Semigroup a => a -> a -> a
<> String -> l
forall l. LaTeXC l => String -> l
commS String
"limits" l -> l -> l
forall a. Semigroup a => a -> a -> a
<> Text -> l
forall l. LaTeXC l => Text -> l
rawText
"_" l -> l -> l
forall a. Semigroup a => a -> a -> a
<> l -> l
forall l. LaTeXC l => l -> l
braces l
x l -> l -> l
forall a. Semigroup a => a -> a -> a
<> Text -> l
forall l. LaTeXC l => Text -> l
rawText
"^" l -> l -> l
forall a. Semigroup a => a -> a -> a
<> l -> l
forall l. LaTeXC l => l -> l
braces l
y

-- | Partial-differentiation symbol \(\partial\)
partial :: LaTeXC l => l
partial :: l
partial = String -> l
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 :: l
totald = l -> l
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 :: l -> l
partialOf l
v = String -> l
forall l. LaTeXC l => String -> l
comm0 String
"partial" l -> l -> l
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 :: l -> l
totaldOf l
v = l -> l
forall l. LaTeXC l => l -> l
mathrm l
"d" l -> l -> l
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 :: (l -> l -> l) -> l -> l -> l
notop l -> l -> l
op l
l1 l
l2 = (l
l1 l -> l -> l
forall a. Semigroup a => a -> a -> a
<> String -> l
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
+- :: l -> l -> l
(+-)  = l -> l -> l -> l
forall m. Monoid m => m -> m -> m -> m
between (l -> l -> l -> l) -> l -> l -> l -> l
forall a b. (a -> b) -> a -> b
$ String -> l
forall l. LaTeXC l => String -> l
comm0 String
"pm"

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

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

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

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

-- | Fraction operator, like @frac 1 2@ → \(\frac12\).
frac :: LaTeXC l => l -> l -> l
frac :: l -> l -> l
frac = (LaTeX -> LaTeX -> LaTeX) -> l -> l -> l
forall l. LaTeXC l => (LaTeX -> LaTeX -> LaTeX) -> l -> l -> l
liftL2 ((LaTeX -> LaTeX -> LaTeX) -> l -> l -> l)
-> (LaTeX -> LaTeX -> LaTeX) -> l -> l -> l
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
*: :: l -> l -> l
(*:) = l -> l -> l -> l
forall m. Monoid m => m -> m -> m -> m
between (l -> l -> l -> l) -> l -> l -> l -> l
forall a b. (a -> b) -> a -> b
$ String -> l
forall l. LaTeXC l => String -> l
comm0 String
"ast"

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

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

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

infixr 4 =: , /=:

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

-- | Disjoint sum operator \(\uplus\).
uplus :: LaTeXC l => l -> l -> l
uplus :: l -> l -> l
uplus  = l -> l -> l -> l
forall m. Monoid m => m -> m -> m -> m
between (l -> l -> l -> l) -> l -> l -> l -> l
forall a b. (a -> b) -> a -> b
$ String -> l
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 :: l -> l
hat = String -> l -> l
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 :: l -> l
tilde = String -> l -> l
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 :: l -> l
bar = String -> l -> l
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 :: l -> l
vec = String -> l -> l
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 :: l -> l
widehat = String -> l -> l
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 :: l -> l
widetilde = String -> l -> l
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 :: l -> l
dot = String -> l -> l
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 :: l -> l
overline = String -> l -> l
forall l. LaTeXC l => String -> l -> l
comm1 String
"overline"

---- Greek alphabet

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

-- | \(\Omega\) symbol.
omegau :: LaTeXC l => l
omegau :: l
omegau = String -> l
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 :: l
pm  = String -> l
forall l. LaTeXC l => String -> l
comm0 String
"pm"

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

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

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

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

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

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

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

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

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

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

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

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



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

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

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

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

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

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

-- | Typewriter font, \(\mathtt{ijk}\).
mathtt :: LaTeXC l => l -> l
mathtt :: l -> l
mathtt = String -> l -> l
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 :: l -> l
mathit = String -> l -> l
forall l. LaTeXC l => String -> l -> l
comm1 String
"mathit"