{-# LANGUAGE CPP, OverloadedStrings, TypeFamilies #-}
#if __GLASGOW_HASKELL__ >= 801
{-# OPTIONS_GHC -Wno-orphans #-}
#else
{-# OPTIONS_GHC -fno-warn-orphans #-}
#endif
module Text.LaTeX.Packages.AMSMath
(
amsmath
, math, mathDisplay
, equation , equation_
, align , align_
, cases
, eqref , nonumber
, autoParens
, autoSquareBrackets, autoBraces, autoAngleBrackets
, autoBrackets
, langle , rangle
, lfloor , rfloor
, lceil , rceil
, dblPipe
, (^:) , (!:), (!^)
, tsin , arcsin
, tcos , arccos
, ttan , arctan
, cot , arccot
, tsinh , tcosh , ttanh , coth
, sec , csc
, texp
, tlog , ln
, tsqrt
, operatorname
, tsum , sumFromTo
, prod , prodFromTo
, coprod, coprodFromTo
, integral , integralFromTo
, partial, totald, partialOf, totaldOf
, bigcup, bigcupFromTo
, bigcap, bigcapFromTo
, (+-), (-+)
, cdot , times , div_
, frac, tfrac
, (*:) , star
, circ , bullet
, (=:) , (/=:)
, (<:) , (<=:)
, (>:) , (>=:)
, ll , gg
, equiv
, propto
, parallel
, perp
, approx
, sim
, simeq
, cong
, in_ , ni , notin
, subset , supset
, subseteq , supseteq
, cap , cup
, setminus
, vee , wedge
, oplus , ominus , otimes
, oslash , odot
, hat, tilde, bar, vec, widehat, widetilde
, dot, ddot, dddot
, overline
, 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
, pm , mp
, to , mapsto, implies
, forall , exists
, dagger, ddagger
, infty
, imath, jmath
, bot
, mathdefault
, mathbf
, mathrm
, text
, mathcal
, mathsf
, mathtt
, mathit
, pmatrix , bmatrix
, b2matrix , vmatrix
, v2matrix
, quad, qquad
, thinspace, medspace, thickspace, negspace, space
) where
import Text.LaTeX.Base
import Text.LaTeX.Base.Syntax
import Text.LaTeX.Base.Class
import Data.List
import Data.Ratio
import Data.Matrix
amsmath :: PackageName
amsmath :: PackageName
amsmath = PackageName
"amsmath"
eqref :: LaTeXC l => l -> l
eqref :: forall l. LaTeXC l => l -> l
eqref = forall l. LaTeXC l => (LaTeX -> LaTeX) -> l -> l
liftL forall a b. (a -> b) -> a -> b
$ \LaTeX
l -> PackageName -> [TeXArg] -> LaTeX
TeXComm PackageName
"eqref" [LaTeX -> TeXArg
FixArg forall b c a. (b -> c) -> (a -> b) -> a -> c
. Text -> LaTeX
TeXRaw forall a b. (a -> b) -> a -> b
$ forall a. Render a => a -> Text
render LaTeX
l]
align :: LaTeXC l => [l] -> l
align :: forall l. LaTeXC l => [l] -> l
align = forall l. LaTeXC l => (LaTeX -> LaTeX) -> l -> l
liftL(PackageName -> [TeXArg] -> LaTeX -> LaTeX
TeXEnv PackageName
"align" []) forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall a. Monoid a => [a] -> a
mconcat forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall a. a -> [a] -> [a]
intersperse forall l. LaTeXC l => l
lnbk
align_ :: LaTeXC l => [l] -> l
align_ :: forall l. LaTeXC l => [l] -> l
align_ = forall l. LaTeXC l => (LaTeX -> LaTeX) -> l -> l
liftL(PackageName -> [TeXArg] -> LaTeX -> LaTeX
TeXEnv PackageName
"align*" []) forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall a. Monoid a => [a] -> a
mconcat forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall a. a -> [a] -> [a]
intersperse forall l. LaTeXC l => l
lnbk
cases :: LaTeXC l => l -> l
cases :: forall l. LaTeXC l => l -> l
cases = forall l. LaTeXC l => (LaTeX -> LaTeX) -> l -> l
liftL forall a b. (a -> b) -> a -> b
$ PackageName -> [TeXArg] -> LaTeX -> LaTeX
TeXEnv PackageName
"cases" []
tfrac :: LaTeXC l => l -> l -> l
tfrac :: forall l. LaTeXC l => l -> l -> l
tfrac = forall l. LaTeXC l => (LaTeX -> LaTeX -> LaTeX) -> l -> l -> l
liftL2 forall a b. (a -> b) -> a -> b
$ \LaTeX
p LaTeX
q -> PackageName -> [TeXArg] -> LaTeX
TeXComm PackageName
"tfrac" [LaTeX -> TeXArg
FixArg LaTeX
p, LaTeX -> TeXArg
FixArg LaTeX
q]
ddot :: LaTeXC l => l -> l
ddot :: forall l. LaTeXC l => l -> l
ddot = forall l. LaTeXC l => PackageName -> l -> l
comm1 PackageName
"ddot"
dddot :: LaTeXC l => l -> l
dddot :: forall l. LaTeXC l => l -> l
dddot = forall l. LaTeXC l => PackageName -> l -> l
comm1 PackageName
"dddot"
text :: LaTeXC l => l -> l
text :: forall l. LaTeXC l => l -> l
text = forall l. LaTeXC l => PackageName -> l -> l
comm1 PackageName
"text"
matrix2tex :: (Texy a, LaTeXC l) => Matrix a -> l
matrix2tex :: forall a l. (Texy a, LaTeXC l) => Matrix a -> l
matrix2tex Matrix a
m = forall a. Monoid a => [a] -> a
mconcat
[ forall (t :: * -> *) a. Foldable t => (a -> a -> a) -> t a -> a
foldr1 forall l. LaTeXC l => l -> l -> l
(&) [ forall t l. (Texy t, LaTeXC l) => t -> l
texy forall a b. (a -> b) -> a -> b
$ Matrix a
m forall a. Matrix a -> (Int, Int) -> a
! (Int
i,Int
j)
| Int
j <- [Int
1 .. forall a. Matrix a -> Int
ncols Matrix a
m]
] forall a. Semigroup a => a -> a -> a
<> forall l. LaTeXC l => l
lnbk
| Int
i <- [Int
1 .. forall a. Matrix a -> Int
nrows Matrix a
m]
]
toMatrix :: (Texy a, LaTeXC l) => String -> Maybe HPos -> Matrix a -> l
toMatrix :: forall a l.
(Texy a, LaTeXC l) =>
PackageName -> Maybe HPos -> Matrix a -> l
toMatrix PackageName
str Maybe HPos
Nothing = forall l. LaTeXC l => (LaTeX -> LaTeX) -> l -> l
liftL (PackageName -> [TeXArg] -> LaTeX -> LaTeX
TeXEnv PackageName
str []) forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall a l. (Texy a, LaTeXC l) => Matrix a -> l
matrix2tex
toMatrix PackageName
str (Just HPos
p) = forall l. LaTeXC l => (LaTeX -> LaTeX) -> l -> l
liftL (PackageName -> [TeXArg] -> LaTeX -> LaTeX
TeXEnv (PackageName
str forall a. [a] -> [a] -> [a]
++ PackageName
"*") [LaTeX -> TeXArg
OptArg forall a b. (a -> b) -> a -> b
$ forall a l. (Render a, LaTeXC l) => a -> l
rendertex HPos
p]) forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall a l. (Texy a, LaTeXC l) => Matrix a -> l
matrix2tex
pmatrix :: (Texy a, LaTeXC l) => Maybe HPos -> Matrix a -> l
pmatrix :: forall a l. (Texy a, LaTeXC l) => Maybe HPos -> Matrix a -> l
pmatrix = forall a l.
(Texy a, LaTeXC l) =>
PackageName -> Maybe HPos -> Matrix a -> l
toMatrix PackageName
"pmatrix"
bmatrix :: (Texy a, LaTeXC l) => Maybe HPos -> Matrix a -> l
bmatrix :: forall a l. (Texy a, LaTeXC l) => Maybe HPos -> Matrix a -> l
bmatrix = forall a l.
(Texy a, LaTeXC l) =>
PackageName -> Maybe HPos -> Matrix a -> l
toMatrix PackageName
"bmatrix"
b2matrix :: (Texy a, LaTeXC l) => Maybe HPos -> Matrix a -> l
b2matrix :: forall a l. (Texy a, LaTeXC l) => Maybe HPos -> Matrix a -> l
b2matrix = forall a l.
(Texy a, LaTeXC l) =>
PackageName -> Maybe HPos -> Matrix a -> l
toMatrix PackageName
"Bmatrix"
vmatrix :: (Texy a, LaTeXC l) => Maybe HPos -> Matrix a -> l
vmatrix :: forall a l. (Texy a, LaTeXC l) => Maybe HPos -> Matrix a -> l
vmatrix = forall a l.
(Texy a, LaTeXC l) =>
PackageName -> Maybe HPos -> Matrix a -> l
toMatrix PackageName
"vmatrix"
v2matrix :: (Texy a, LaTeXC l) => Maybe HPos -> Matrix a -> l
v2matrix :: forall a l. (Texy a, LaTeXC l) => Maybe HPos -> Matrix a -> l
v2matrix = forall a l.
(Texy a, LaTeXC l) =>
PackageName -> Maybe HPos -> Matrix a -> l
toMatrix PackageName
"Vmatrix"
#if MIN_VERSION_base(4,9,0)
instance Texy a => Texy (Ratio a) where
#else
instance (Integral a, Texy a) => Texy (Ratio a) where
#endif
texy :: forall l. LaTeXC l => Ratio a -> l
texy Ratio a
x = forall l. LaTeXC l => l -> l -> l
frac (forall t l. (Texy t, LaTeXC l) => t -> l
texy forall a b. (a -> b) -> a -> b
$ forall a. Ratio a -> a
numerator Ratio a
x) (forall t l. (Texy t, LaTeXC l) => t -> l
texy forall a b. (a -> b) -> a -> b
$ forall a. Ratio a -> a
denominator Ratio a
x)
instance (Texy a, Texy b) => Texy (a,b) where
texy :: forall l. LaTeXC l => (a, b) -> l
texy (a
x,b
y) = forall l. LaTeXC l => l -> l
autoParens forall a b. (a -> b) -> a -> b
$ forall t l. (Texy t, LaTeXC l) => t -> l
texy a
x forall a. Semigroup a => a -> a -> a
<> l
"," forall a. Semigroup a => a -> a -> a
<> forall t l. (Texy t, LaTeXC l) => t -> l
texy b
y
instance (Texy a, Texy b, Texy c) => Texy (a,b,c) where
texy :: forall l. LaTeXC l => (a, b, c) -> l
texy (a
x,b
y,c
z) = forall l. LaTeXC l => l -> l
autoParens forall a b. (a -> b) -> a -> b
$ forall t l. (Texy t, LaTeXC l) => t -> l
texy a
x forall a. Semigroup a => a -> a -> a
<> l
"," forall a. Semigroup a => a -> a -> a
<> forall t l. (Texy t, LaTeXC l) => t -> l
texy b
y forall a. Semigroup a => a -> a -> a
<> l
"," forall a. Semigroup a => a -> a -> a
<> forall t l. (Texy t, LaTeXC l) => t -> l
texy c
z
instance (Texy a, Texy b, Texy c, Texy d) => Texy (a,b,c,d) where
texy :: forall l. LaTeXC l => (a, b, c, d) -> l
texy (a
a,b
b,c
c,d
d) = forall l. LaTeXC l => l -> l
autoParens forall a b. (a -> b) -> a -> b
$ forall t l. (Texy t, LaTeXC l) => t -> l
texy a
a forall a. Semigroup a => a -> a -> a
<> l
"," forall a. Semigroup a => a -> a -> a
<> forall t l. (Texy t, LaTeXC l) => t -> l
texy b
b forall a. Semigroup a => a -> a -> a
<> l
"," forall a. Semigroup a => a -> a -> a
<> forall t l. (Texy t, LaTeXC l) => t -> l
texy c
c forall a. Semigroup a => a -> a -> a
<> l
"," forall a. Semigroup a => a -> a -> a
<> forall t l. (Texy t, LaTeXC l) => t -> l
texy d
d
instance Texy a => Texy (Matrix a) where
texy :: forall l. LaTeXC l => Matrix a -> l
texy = forall a l. (Texy a, LaTeXC l) => Maybe HPos -> Matrix a -> l
pmatrix forall a. Maybe a
Nothing
instance Texy a => Texy [a] where
texy :: forall l. LaTeXC l => [a] -> l
texy = forall l. LaTeXC l => l -> l
autoSquareBrackets forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall a. Monoid a => [a] -> a
mconcat forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall a. a -> [a] -> [a]
intersperse l
"," forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap forall t l. (Texy t, LaTeXC l) => t -> l
texy
thinspace :: LaTeXC l => l
thinspace :: forall l. LaTeXC l => l
thinspace = forall l. LaTeXC l => PackageName -> l
comm0 PackageName
","
medspace :: LaTeXC l => l
medspace :: forall l. LaTeXC l => l
medspace = forall l. LaTeXC l => PackageName -> l
comm0 PackageName
":"
thickspace :: LaTeXC l => l
thickspace :: forall l. LaTeXC l => l
thickspace = forall l. LaTeXC l => PackageName -> l
comm0 PackageName
";"
negspace :: LaTeXC l => l
negspace :: forall l. LaTeXC l => l
negspace = forall l. LaTeXC l => PackageName -> l
comm0 PackageName
"!"
space :: LaTeXC l => l
space :: forall l. LaTeXC l => l
space = forall l. LaTeXC l => PackageName -> l
comm0 PackageName
" "