{-# LANGUAGE OverloadedStrings #-}
{-# LANGUAGE RankNTypes #-}
{-# LANGUAGE ScopedTypeVariables #-}
{-# LANGUAGE UnicodeSyntax #-}
{-# LANGUAGE TemplateHaskell #-}
{-# LANGUAGE CPP #-}
module Math.LaTeX.Internal.Display where
import qualified Text.LaTeX as LaTeX
import Text.LaTeX (raw)
import Text.LaTeX.Base.Class (LaTeXC, fromLaTeX)
import qualified Text.LaTeX.Base.Class as LaTeX
import qualified Text.LaTeX.Base.Types as LaTeX
import qualified Text.LaTeX.Base.Commands as LaTeX
import Text.LaTeX.Base.Syntax (LaTeX(TeXEnv, TeXComm))
import qualified Text.LaTeX.Packages.AMSMath as LaTeX
import qualified Text.LaTeX.Packages.AMSFonts as LaTeX
import CAS.Dumb
import CAS.Dumb.Tree
import CAS.Dumb.Symbols
import CAS.Dumb.LaTeX.Symbols
import Math.LaTeX.Internal.MathExpr
import Data.Foldable (fold)
import Data.Monoid ((<>))
import Control.Arrow
import Data.String (fromString)
import Data.Char (isAlpha)
import GHC.Stack (HasCallStack)
infixl 1 >$
(>$) :: (LaTeXC r, LaTeXSymbol σ)
=> r -> LaTeXMath σ -> r
r
s >$ :: forall r σ. (LaTeXC r, LaTeXSymbol σ) => r -> LaTeXMath σ -> r
>$ LaTeXMath σ
m = r
s forall a. Semigroup a => a -> a -> a
<> r
" " forall a. Semigroup a => a -> a -> a
<> forall l. LaTeXC l => l -> l
LaTeX.math (forall σ l.
(LaTeXC l, SymbolClass σ, SCConstraint σ LaTeX) =>
CAS (Infix LaTeX) (Encapsulation LaTeX) (SymbolD σ LaTeX) -> l
toMathLaTeX' LaTeXMath σ
m)
infixr 6 $<>
($<>) :: (LaTeXC r, LaTeXSymbol σ)
=> LaTeXMath σ -> r -> r
LaTeXMath σ
m $<> :: forall r σ. (LaTeXC r, LaTeXSymbol σ) => LaTeXMath σ -> r -> r
$<> r
s = forall l. LaTeXC l => l -> l
LaTeX.math (forall σ l.
(LaTeXC l, SymbolClass σ, SCConstraint σ LaTeX) =>
CAS (Infix LaTeX) (Encapsulation LaTeX) (SymbolD σ LaTeX) -> l
toMathLaTeX' LaTeXMath σ
m) forall a. Semigroup a => a -> a -> a
<> r
s
dmaths :: (LaTeXC r, LaTeXSymbol σ)
=> [[LaTeXMath σ]]
-> String
-> r
dmaths :: forall r σ.
(LaTeXC r, LaTeXSymbol σ) =>
[[LaTeXMath σ]] -> String -> r
dmaths [[LaTeXMath σ
e]] String
garnish = case Maybe LaTeX
eqnum of
Maybe LaTeX
Nothing -> forall l. LaTeXC l => LaTeX -> l
fromLaTeX forall b c a. (b -> c) -> (a -> b) -> a -> c
. String -> [TeXArg] -> LaTeX -> LaTeX
TeXEnv String
"dmath*" [] forall a b. (a -> b) -> a -> b
$ forall σ l.
(l ~ LaTeX, SymbolClass σ, SCConstraint σ l) =>
CAS (Infix l) (Encapsulation l) (SymbolD σ l) -> l
toMathLaTeX LaTeXMath σ
e forall a. Semigroup a => a -> a -> a
<> LaTeX
terminator
Just LaTeX
n -> forall l. LaTeXC l => LaTeX -> l
fromLaTeX forall b c a. (b -> c) -> (a -> b) -> a -> c
. String -> [TeXArg] -> LaTeX -> LaTeX
TeXEnv String
"equation" [] forall a b. (a -> b) -> a -> b
$ LaTeX
n forall a. Semigroup a => a -> a -> a
<> forall σ l.
(l ~ LaTeX, SymbolClass σ, SCConstraint σ l) =>
CAS (Infix l) (Encapsulation l) (SymbolD σ l) -> l
toMathLaTeX LaTeXMath σ
e forall a. Semigroup a => a -> a -> a
<> LaTeX
terminator
where (Maybe LaTeX
eqnum, LaTeX
terminator) = forall r. LaTeXC r => String -> (Maybe r, r)
parseEqnum String
garnish
dmaths [[LaTeXMath σ]]
eqLines String
garnish = forall l. LaTeXC l => LaTeX -> l
fromLaTeX forall b c a. (b -> c) -> (a -> b) -> a -> c
. String -> [TeXArg] -> LaTeX -> LaTeX
TeXEnv
(case Maybe LaTeX
eqnum of{Maybe LaTeX
Nothing->String
"align*";Just LaTeX
_->String
"align"}) [] forall a b. (a -> b) -> a -> b
$ forall {σ}.
(SCConstraint σ LaTeX, SymbolClass σ) =>
[[LaTeXMath σ]] -> LaTeX
stack [[LaTeXMath σ]]
eqLines
where stack :: [[LaTeXMath σ]] -> LaTeX
stack [[LaTeXMath σ]
singline] = forall (t :: * -> *) m. (Foldable t, Monoid m) => t m -> m
fold Maybe LaTeX
eqnum forall a. Semigroup a => a -> a -> a
<> forall {σ} {a}.
(SCConstraint σ LaTeX, LaTeXC a, SymbolClass σ) =>
[LaTeXMath σ] -> a
aliLine [LaTeXMath σ]
singline forall a. Semigroup a => a -> a -> a
<> LaTeX
terminator
stack ([LaTeXMath σ]
line : [[LaTeXMath σ]]
lines) = forall {σ} {a}.
(SCConstraint σ LaTeX, LaTeXC a, SymbolClass σ) =>
[LaTeXMath σ] -> a
aliLine [LaTeXMath σ]
line forall a. Semigroup a => a -> a -> a
<> forall l. LaTeXC l => l
LaTeX.lnbk forall a. Semigroup a => a -> a -> a
<> [[LaTeXMath σ]] -> LaTeX
stack [[LaTeXMath σ]]
lines
aliLine :: [LaTeXMath σ] -> a
aliLine [] = forall a. Monoid a => a
mempty
aliLine [LaTeXMath σ
q] = forall c σ. (LaTeXC c, LaTeXSymbol σ) => LaTeXMath σ -> c
contentsWithAlignAnchor LaTeXMath σ
q
aliLine (LaTeXMath σ
q : [LaTeXMath σ]
cols)
= forall c σ. (LaTeXC c, LaTeXSymbol σ) => LaTeXMath σ -> c
contentsWithAlignAnchor LaTeXMath σ
q forall l. LaTeXC l => l -> l -> l
LaTeX.& [LaTeXMath σ] -> a
aliLine [LaTeXMath σ]
cols
(Maybe LaTeX
eqnum, LaTeX
terminator) = forall r. LaTeXC r => String -> (Maybe r, r)
parseEqnum String
garnish
equations :: (LaTeXC r, LaTeXSymbol σ, HasCallStack)
=> [(LaTeXMath σ, String)]
-> String
-> r
equations :: forall r σ.
(LaTeXC r, LaTeXSymbol σ, HasCallStack) =>
[(LaTeXMath σ, String)] -> String -> r
equations [(LaTeXMath σ
e,String
lbl)] String
garnish = forall l. LaTeXC l => LaTeX -> l
fromLaTeX forall a b. (a -> b) -> a -> b
$ case Maybe LaTeX
eqnum of
Maybe LaTeX
Nothing -> String -> [TeXArg] -> LaTeX -> LaTeX
TeXEnv String
"equation" []
forall a b. (a -> b) -> a -> b
$ forall b a. b -> (a -> b) -> Maybe a -> b
maybe forall a. Monoid a => a
mempty forall a. a -> a
id Maybe LaTeX
eqnum forall a. Semigroup a => a -> a -> a
<> forall σ l.
(l ~ LaTeX, SymbolClass σ, SCConstraint σ l) =>
CAS (Infix l) (Encapsulation l) (SymbolD σ l) -> l
toMathLaTeX LaTeXMath σ
e forall a. Semigroup a => a -> a -> a
<> LaTeX
terminator forall a. Semigroup a => a -> a -> a
<> HasCallStack => String -> LaTeX
asSafeLabel String
lbl
Just LaTeX
tag -> String -> [TeXArg] -> LaTeX -> LaTeX
TeXEnv String
"equation*" []
forall a b. (a -> b) -> a -> b
$ LaTeX
tag forall a. Semigroup a => a -> a -> a
<> forall σ l.
(l ~ LaTeX, SymbolClass σ, SCConstraint σ l) =>
CAS (Infix l) (Encapsulation l) (SymbolD σ l) -> l
toMathLaTeX LaTeXMath σ
e forall a. Semigroup a => a -> a -> a
<> LaTeX
terminator forall a. Semigroup a => a -> a -> a
<> HasCallStack => String -> LaTeX
asSafeLabel String
lbl
where (Maybe LaTeX
eqnum, LaTeX
terminator) = forall r. LaTeXC r => String -> (Maybe r, r)
parseEqnum String
garnish
equations [(LaTeXMath σ, String)]
eqLines String
garnish = forall l. LaTeXC l => LaTeX -> l
fromLaTeX forall b c a. (b -> c) -> (a -> b) -> a -> c
. String -> [TeXArg] -> LaTeX -> LaTeX
TeXEnv String
"align" [] forall a b. (a -> b) -> a -> b
$ forall {σ}.
(SCConstraint σ LaTeX, SymbolClass σ) =>
[(LaTeXMath σ, String)] -> LaTeX
stack [(LaTeXMath σ, String)]
eqLines
where stack :: [(LaTeXMath σ, String)] -> LaTeX
stack [(LaTeXMath σ, String)
singline] = forall (t :: * -> *) m. (Foldable t, Monoid m) => t m -> m
fold Maybe LaTeX
eqnum forall a. Semigroup a => a -> a -> a
<> forall {σ}.
(SCConstraint σ LaTeX, SymbolClass σ) =>
(LaTeXMath σ, String) -> LaTeX
aliLine (LaTeXMath σ, String)
singline forall a. Semigroup a => a -> a -> a
<> LaTeX
terminator
stack ((LaTeXMath σ, String)
line : [(LaTeXMath σ, String)]
lines) = forall {σ}.
(SCConstraint σ LaTeX, SymbolClass σ) =>
(LaTeXMath σ, String) -> LaTeX
aliLine (LaTeXMath σ, String)
line forall a. Semigroup a => a -> a -> a
<> forall l. LaTeXC l => l
LaTeX.lnbk forall a. Semigroup a => a -> a -> a
<> [(LaTeXMath σ, String)] -> LaTeX
stack [(LaTeXMath σ, String)]
lines
aliLine :: (LaTeXMath σ, String) -> LaTeX
aliLine (LaTeXMath σ
q, String
lbl) = forall c σ. (LaTeXC c, LaTeXSymbol σ) => LaTeXMath σ -> c
contentsWithAlignAnchor LaTeXMath σ
q forall a. Semigroup a => a -> a -> a
<> HasCallStack => String -> LaTeX
asSafeLabel String
lbl
terminator :: LaTeX
(Maybe LaTeX
eqnum, LaTeX
terminator) = forall r. LaTeXC r => String -> (Maybe r, r)
parseEqnum String
garnish
asSafeLabel :: HasCallStack => String -> LaTeX
asSafeLabel :: HasCallStack => String -> LaTeX
asSafeLabel String
lbl
| forall (t :: * -> *) a. Foldable t => (a -> Bool) -> t a -> Bool
all Char -> Bool
safeChar String
lbl = forall l. LaTeXC l => l -> l
LaTeX.label forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall l. LaTeXC l => Text -> l
raw forall a b. (a -> b) -> a -> b
$ forall a. IsString a => String -> a
fromString String
lbl
| Bool
otherwise = forall a. HasCallStack => String -> a
error forall a b. (a -> b) -> a -> b
$ String
"Labels can only contain alphabetic characters or “"
forall a. [a] -> [a] -> [a]
++String
safeSpecialCharsforall a. [a] -> [a] -> [a]
++String
"”."
where safeChar :: Char -> Bool
safeChar Char
c = Char -> Bool
isAlpha Char
c Bool -> Bool -> Bool
|| Char
cforall (t :: * -> *) a. (Foldable t, Eq a) => a -> t a -> Bool
`elem`String
safeSpecialChars
safeSpecialChars :: String
safeSpecialChars = String
"[]:/._"
maths :: (LaTeXC r, LaTeXSymbol σ)
=> [[LaTeXMath σ]]
-> String
-> r
maths :: forall r σ.
(LaTeXC r, LaTeXSymbol σ) =>
[[LaTeXMath σ]] -> String -> r
maths [[LaTeXMath σ
e]] String
garnish = case Maybe LaTeX
eqnum of
Maybe LaTeX
Nothing -> forall l. LaTeXC l => LaTeX -> l
fromLaTeX forall b c a. (b -> c) -> (a -> b) -> a -> c
. String -> [TeXArg] -> LaTeX -> LaTeX
TeXEnv String
"equation*" [] forall a b. (a -> b) -> a -> b
$ forall σ l.
(l ~ LaTeX, SymbolClass σ, SCConstraint σ l) =>
CAS (Infix l) (Encapsulation l) (SymbolD σ l) -> l
toMathLaTeX LaTeXMath σ
e forall a. Semigroup a => a -> a -> a
<> LaTeX
terminator
Just LaTeX
n -> forall l. LaTeXC l => LaTeX -> l
fromLaTeX forall b c a. (b -> c) -> (a -> b) -> a -> c
. String -> [TeXArg] -> LaTeX -> LaTeX
TeXEnv String
"equation" [] forall a b. (a -> b) -> a -> b
$ LaTeX
n forall a. Semigroup a => a -> a -> a
<> forall σ l.
(l ~ LaTeX, SymbolClass σ, SCConstraint σ l) =>
CAS (Infix l) (Encapsulation l) (SymbolD σ l) -> l
toMathLaTeX LaTeXMath σ
e forall a. Semigroup a => a -> a -> a
<> LaTeX
terminator
where (Maybe LaTeX
eqnum, LaTeX
terminator) = forall r. LaTeXC r => String -> (Maybe r, r)
parseEqnum String
garnish
maths [[LaTeXMath σ]]
eqLines String
garnish = forall l. LaTeXC l => LaTeX -> l
fromLaTeX forall b c a. (b -> c) -> (a -> b) -> a -> c
. String -> [TeXArg] -> LaTeX -> LaTeX
TeXEnv
(case Maybe LaTeX
eqnum of{Maybe LaTeX
Nothing->String
"align*";Just LaTeX
_->String
"align"}) [] forall a b. (a -> b) -> a -> b
$ forall {σ}.
(SCConstraint σ LaTeX, SymbolClass σ) =>
[[LaTeXMath σ]] -> LaTeX
stack [[LaTeXMath σ]]
eqLines
where stack :: [[LaTeXMath σ]] -> LaTeX
stack [[LaTeXMath σ]
singline] = forall (t :: * -> *) m. (Foldable t, Monoid m) => t m -> m
fold Maybe LaTeX
eqnum forall a. Semigroup a => a -> a -> a
<> forall {σ} {a}.
(SCConstraint σ LaTeX, LaTeXC a, SymbolClass σ) =>
[LaTeXMath σ] -> a
aliLine [LaTeXMath σ]
singline forall a. Semigroup a => a -> a -> a
<> LaTeX
terminator
stack ([LaTeXMath σ]
line : [[LaTeXMath σ]]
lines) = forall {σ} {a}.
(SCConstraint σ LaTeX, LaTeXC a, SymbolClass σ) =>
[LaTeXMath σ] -> a
aliLine [LaTeXMath σ]
line forall a. Semigroup a => a -> a -> a
<> forall l. LaTeXC l => l
LaTeX.lnbk forall a. Semigroup a => a -> a -> a
<> [[LaTeXMath σ]] -> LaTeX
stack [[LaTeXMath σ]]
lines
aliLine :: [LaTeXMath σ] -> a
aliLine [] = forall a. Monoid a => a
mempty
aliLine [LaTeXMath σ
q] = forall c σ. (LaTeXC c, LaTeXSymbol σ) => LaTeXMath σ -> c
contentsWithAlignAnchor LaTeXMath σ
q
aliLine (LaTeXMath σ
q : [LaTeXMath σ]
cols)
= forall c σ. (LaTeXC c, LaTeXSymbol σ) => LaTeXMath σ -> c
contentsWithAlignAnchor LaTeXMath σ
q forall l. LaTeXC l => l -> l -> l
LaTeX.& [LaTeXMath σ] -> a
aliLine [LaTeXMath σ]
cols
(Maybe LaTeX
eqnum, LaTeX
terminator) = forall r. LaTeXC r => String -> (Maybe r, r)
parseEqnum String
garnish
dcalculation :: (LaTeXC (m ()), LaTeXSymbol σ, Functor m)
=> LaTeXMath σ
-> String
-> m (LaTeXMath σ)
dcalculation :: forall (m :: * -> *) σ.
(LaTeXC (m ()), LaTeXSymbol σ, Functor m) =>
LaTeXMath σ -> String -> m (LaTeXMath σ)
dcalculation LaTeXMath σ
ch String
garnish = forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap (\() -> LaTeXMath σ
result) forall a b. (a -> b) -> a -> b
$ case Maybe LaTeX
eqnum of
Maybe LaTeX
Nothing -> forall l. LaTeXC l => LaTeX -> l
fromLaTeX forall b c a. (b -> c) -> (a -> b) -> a -> c
. String -> [TeXArg] -> LaTeX -> LaTeX
TeXEnv String
"dmath*" [] forall a b. (a -> b) -> a -> b
$ forall σ l.
(l ~ LaTeX, SymbolClass σ, SCConstraint σ l) =>
CAS (Infix l) (Encapsulation l) (SymbolD σ l) -> l
toMathLaTeX LaTeXMath σ
ch forall a. Semigroup a => a -> a -> a
<> LaTeX
terminator
Just LaTeX
n -> forall l. LaTeXC l => LaTeX -> l
fromLaTeX forall b c a. (b -> c) -> (a -> b) -> a -> c
. String -> [TeXArg] -> LaTeX -> LaTeX
TeXEnv String
"equation" [] forall a b. (a -> b) -> a -> b
$ LaTeX
n forall a. Semigroup a => a -> a -> a
<> forall σ l.
(l ~ LaTeX, SymbolClass σ, SCConstraint σ l) =>
CAS (Infix l) (Encapsulation l) (SymbolD σ l) -> l
toMathLaTeX LaTeXMath σ
ch forall a. Semigroup a => a -> a -> a
<> LaTeX
terminator
where (Maybe LaTeX
eqnum, LaTeX
terminator) = forall r. LaTeXC r => String -> (Maybe r, r)
parseEqnum String
garnish
result :: LaTeXMath σ
result = case LaTeXMath σ
ch of
OperatorChain LaTeXMath σ
_ ((Infix LaTeX
_,LaTeXMath σ
r):[(Infix LaTeX, LaTeXMath σ)]
_) -> LaTeXMath σ
r
LaTeXMath σ
r -> LaTeXMath σ
r
parseEqnum :: LaTeXC r => String -> (Maybe r, r)
parseEqnum :: forall r. LaTeXC r => String -> (Maybe r, r)
parseEqnum [] = (forall a. Maybe a
Nothing, forall a. Monoid a => a
mempty)
parseEqnum (Char
'.':String
n) = forall (a :: * -> * -> *) b c d.
Arrow a =>
a b c -> a (d, b) (d, c)
second (r
"."forall a. Semigroup a => a -> a -> a
<>) forall a b. (a -> b) -> a -> b
$ forall r. LaTeXC r => String -> (Maybe r, r)
parseEqnum String
n
parseEqnum (Char
',':String
n) = forall (a :: * -> * -> *) b c d.
Arrow a =>
a b c -> a (d, b) (d, c)
second (r
","forall a. Semigroup a => a -> a -> a
<>) forall a b. (a -> b) -> a -> b
$ forall r. LaTeXC r => String -> (Maybe r, r)
parseEqnum String
n
parseEqnum (Char
'!':String
n) = forall (a :: * -> * -> *) b c d.
Arrow a =>
a b c -> a (d, b) (d, c)
second (r
"!"forall a. Semigroup a => a -> a -> a
<>) forall a b. (a -> b) -> a -> b
$ forall r. LaTeXC r => String -> (Maybe r, r)
parseEqnum String
n
parseEqnum (Char
'?':String
n) = forall (a :: * -> * -> *) b c d.
Arrow a =>
a b c -> a (d, b) (d, c)
second (r
"?"forall a. Semigroup a => a -> a -> a
<>) forall a b. (a -> b) -> a -> b
$ forall r. LaTeXC r => String -> (Maybe r, r)
parseEqnum String
n
parseEqnum (Char
';':String
n) = forall (a :: * -> * -> *) b c d.
Arrow a =>
a b c -> a (d, b) (d, c)
second (r
";"forall a. Semigroup a => a -> a -> a
<>) forall a b. (a -> b) -> a -> b
$ forall r. LaTeXC r => String -> (Maybe r, r)
parseEqnum String
n
parseEqnum (Char
':':String
n) = forall (a :: * -> * -> *) b c d.
Arrow a =>
a b c -> a (d, b) (d, c)
second (forall l. LaTeXC l => Text -> l
rawText
"{:}"forall a. Semigroup a => a -> a -> a
<>) forall a b. (a -> b) -> a -> b
$ forall r. LaTeXC r => String -> (Maybe r, r)
parseEqnum String
n
parseEqnum (Char
'(':String
n) = ( forall a. a -> Maybe a
Just forall a b. (a -> b) -> a -> b
$ forall l. LaTeXC l => Text -> l
rawText
"\\tag{"forall a. Semigroup a => a -> a -> a
<>forall a. IsString a => String -> a
fromString String
numforall a. Semigroup a => a -> a -> a
<>forall l. LaTeXC l => Text -> l
rawText
"}"
, forall a b. (a, b) -> b
snd forall a b. (a -> b) -> a -> b
$ forall r. LaTeXC r => String -> (Maybe r, r)
parseEqnum String
r )
where (String
num,Char
')':String
r) = forall a. (a -> Bool) -> [a] -> ([a], [a])
break (forall a. Eq a => a -> a -> Bool
==Char
')') String
n
parseEqnum (Char
c:String
n) = forall r. LaTeXC r => String -> (Maybe r, r)
parseEqnum String
n
contentsWithAlignAnchor :: (LaTeXC c, LaTeXSymbol σ)
=> LaTeXMath σ -> c
contentsWithAlignAnchor :: forall c σ. (LaTeXC c, LaTeXSymbol σ) => LaTeXMath σ -> c
contentsWithAlignAnchor (OperatorChain CAS' Void (Infix LaTeX) (Encapsulation LaTeX) (SymbolD σ LaTeX)
lc rcs :: [(Infix LaTeX,
CAS' Void (Infix LaTeX) (Encapsulation LaTeX) (SymbolD σ LaTeX))]
rcs@((Infix LaTeX,
CAS' Void (Infix LaTeX) (Encapsulation LaTeX) (SymbolD σ LaTeX))
_:[(Infix LaTeX,
CAS' Void (Infix LaTeX) (Encapsulation LaTeX) (SymbolD σ LaTeX))]
_))
= forall σ l.
(LaTeXC l, SymbolClass σ, SCConstraint σ LaTeX) =>
CAS (Infix LaTeX) (Encapsulation LaTeX) (SymbolD σ LaTeX) -> l
toMathLaTeX' CAS' Void (Infix LaTeX) (Encapsulation LaTeX) (SymbolD σ LaTeX)
lc forall a. Semigroup a => a -> a -> a
<> forall l. LaTeXC l => LaTeX -> l
fromLaTeX LaTeX
op
forall a. Semigroup a => a -> a -> a
<> forall l. LaTeXC l => Text -> l
rawText
"\\:"forall l. LaTeXC l => l -> l -> l
LaTeX.&forall σ l.
(LaTeXC l, SymbolClass σ, SCConstraint σ LaTeX) =>
CAS (Infix LaTeX) (Encapsulation LaTeX) (SymbolD σ LaTeX) -> l
toMathLaTeX' (forall γ s² s¹ s⁰.
CAS' γ s² s¹ s⁰ -> [(s², CAS' γ s² s¹ s⁰)] -> CAS' γ s² s¹ s⁰
OperatorChain CAS' Void (Infix LaTeX) (Encapsulation LaTeX) (SymbolD σ LaTeX)
rc₀ forall a b. (a -> b) -> a -> b
$ forall a. [a] -> [a]
init [(Infix LaTeX,
CAS' Void (Infix LaTeX) (Encapsulation LaTeX) (SymbolD σ LaTeX))]
rcs)
where (Infix Fixity
_ LaTeX
op, CAS' Void (Infix LaTeX) (Encapsulation LaTeX) (SymbolD σ LaTeX)
rc₀) = forall a. [a] -> a
last [(Infix LaTeX,
CAS' Void (Infix LaTeX) (Encapsulation LaTeX) (SymbolD σ LaTeX))]
rcs
contentsWithAlignAnchor (Operator (Infix Fixity
_ LaTeX
op) CAS' Void (Infix LaTeX) (Encapsulation LaTeX) (SymbolD σ LaTeX)
lc CAS' Void (Infix LaTeX) (Encapsulation LaTeX) (SymbolD σ LaTeX)
rc)
= forall σ l.
(LaTeXC l, SymbolClass σ, SCConstraint σ LaTeX) =>
CAS (Infix LaTeX) (Encapsulation LaTeX) (SymbolD σ LaTeX) -> l
toMathLaTeX' CAS' Void (Infix LaTeX) (Encapsulation LaTeX) (SymbolD σ LaTeX)
lc forall a. Semigroup a => a -> a -> a
<> forall l. LaTeXC l => LaTeX -> l
fromLaTeX LaTeX
op forall a. Semigroup a => a -> a -> a
<> forall l. LaTeXC l => Text -> l
rawText
"\\:"forall l. LaTeXC l => l -> l -> l
LaTeX.&forall σ l.
(LaTeXC l, SymbolClass σ, SCConstraint σ LaTeX) =>
CAS (Infix LaTeX) (Encapsulation LaTeX) (SymbolD σ LaTeX) -> l
toMathLaTeX' CAS' Void (Infix LaTeX) (Encapsulation LaTeX) (SymbolD σ LaTeX)
rc
contentsWithAlignAnchor CAS' Void (Infix LaTeX) (Encapsulation LaTeX) (SymbolD σ LaTeX)
q = forall l. LaTeXC l => Text -> l
rawText
"\\:" forall l. LaTeXC l => l -> l -> l
LaTeX.& forall σ l.
(LaTeXC l, SymbolClass σ, SCConstraint σ LaTeX) =>
CAS (Infix LaTeX) (Encapsulation LaTeX) (SymbolD σ LaTeX) -> l
toMathLaTeX' CAS' Void (Infix LaTeX) (Encapsulation LaTeX) (SymbolD σ LaTeX)
q