{-# LANGUAGE OverloadedStrings #-}
module Text.LaTeX.Packages.TabularX
(
tabularxp
, tabularx
) where
import Text.LaTeX.Base.Syntax (LaTeX(TeXEnv, TeXRaw), TeXArg(FixArg, OptArg))
import Text.LaTeX.Base.Class (LaTeXC, liftL)
import Text.LaTeX.Base.Render (render, renderAppend)
import Text.LaTeX.Base.Types (PackageName, Pos, TableSpec, Measure)
tabularxp :: PackageName
tabularxp :: PackageName
tabularxp = PackageName
"tabularx"
tabularx :: LaTeXC l =>
Measure
-> Maybe Pos
-> [TableSpec]
-> l
-> l
tabularx :: forall l. LaTeXC l => Measure -> Maybe Pos -> [TableSpec] -> l -> l
tabularx Measure
width Maybe Pos
maybePos [TableSpec]
ts =
(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
$ PackageName -> [TeXArg] -> LaTeX -> LaTeX
TeXEnv PackageName
"tabularx" [TeXArg]
args
where
width' :: TeXArg
width' = LaTeX -> TeXArg
FixArg (LaTeX -> TeXArg) -> LaTeX -> TeXArg
forall a b. (a -> b) -> a -> b
$ Text -> LaTeX
TeXRaw (Text -> LaTeX) -> Text -> LaTeX
forall a b. (a -> b) -> a -> b
$ Measure -> Text
forall a. Render a => a -> Text
render Measure
width
ts' :: TeXArg
ts' = LaTeX -> TeXArg
FixArg (LaTeX -> TeXArg) -> LaTeX -> TeXArg
forall a b. (a -> b) -> a -> b
$ Text -> LaTeX
TeXRaw (Text -> LaTeX) -> Text -> LaTeX
forall a b. (a -> b) -> a -> b
$ [TableSpec] -> Text
forall a. Render a => [a] -> Text
renderAppend [TableSpec]
ts
args :: [TeXArg]
args = case Maybe Pos
maybePos of
Maybe Pos
Nothing -> [TeXArg
width', TeXArg
ts']
Just Pos
p -> [TeXArg
width', TeXArg
p', TeXArg
ts']
where
p' :: TeXArg
p' = LaTeX -> TeXArg
OptArg (LaTeX -> TeXArg) -> LaTeX -> TeXArg
forall a b. (a -> b) -> a -> b
$ Text -> LaTeX
TeXRaw (Text -> LaTeX) -> Text -> LaTeX
forall a b. (a -> b) -> a -> b
$ Pos -> Text
forall a. Render a => a -> Text
render Pos
p