module Text.LaTeX.Define ( -- * Some @LaTeX@ Utils space , keys , listOpts -- * Defining Commands , comm0_ , comm0 , comm1 , comm2 , comm3 , comm4 , comm5 , comm6 , comm7 , comm8 , comm9 , comm10 , comm11 , comm12 -- * Defining Environments , env , env2 , env3 ) where import Control.Monad.Writer import Data.List (intersperse) import Text.LaTeX.Monad import Text.LaTeX.Result space :: LaTeX space = " " keys :: LaTeX -> LaTeX keys = reslx ks listOpts :: [LaTeX] -> LaTeX listOpts [] = "" listOpts xs = reslx bs . sequence_ . intersperse "," $ xs -- comm0_ :: LaTeX -> LaTeX comm0_ = reslx comm comm0 :: LaTeX -> LaTeX comm0 n = do comm0_ n "{}" comm1 :: LaTeX -> LaTeX -> LaTeX comm1 n x = do comm0_ n keys x comm2 :: LaTeX -> LaTeX -> [LaTeX] -> LaTeX comm2 n x opts = do comm1 n x listOpts opts comm3 :: LaTeX -> [LaTeX] -> LaTeX comm3 n opts = do comm0_ n listOpts opts comm4 :: LaTeX -> [LaTeX] -> LaTeX -> LaTeX comm4 n opts x = do comm3 n opts keys x comm5 :: LaTeX -> LaTeX -> LaTeX -> LaTeX comm5 n x y = do comm1 n x keys y comm6 :: LaTeX -> LaTeX -> [LaTeX] -> LaTeX -> LaTeX comm6 n x opts y = do comm2 n x opts keys y comm7 :: LaTeX -> LaTeX -> [LaTeX] -> LaTeX -> LaTeX -> LaTeX comm7 n x opts y z = do comm6 n x opts y keys z comm8 :: LaTeX -> LaTeX -> LaTeX comm8 n x = keys $ do comm0 n x comm9 :: LaTeX -> [LaTeX] -> LaTeX -> LaTeX -> LaTeX comm9 n opts x y = do comm4 n opts x keys y comm10 :: LaTeX -> [LaTeX] -> [LaTeX] -> LaTeX -> LaTeX comm10 n opts1 opts2 x = do comm3 n opts1 listOpts opts2 keys x comm11 :: LaTeX -> LaTeX -> [LaTeX] -> [LaTeX] -> LaTeX -> LaTeX comm11 n x opts1 opts2 y = do comm2 n x opts1 listOpts opts2 keys y comm12 :: LaTeX -> LaTeX -> LaTeX -> LaTeX -> LaTeX comm12 n x y z = do comm5 n x y keys z env :: LaTeX -> LaTeX -> LaTeX env t x = do comm1 "begin" t x comm1 "end" t env2 :: LaTeX -> [LaTeX] -> LaTeX -> LaTeX env2 t opts x = do comm2 "begin" t opts x comm1 "end" t env3 :: LaTeX -> [LaTeX] -> LaTeX -> LaTeX -> LaTeX env3 t opts x y = do comm6 "begin" t opts x y comm1 "end" t