{-# 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 =
  forall l. LaTeXC l => (LaTeX -> LaTeX) -> l -> l
liftL forall a b. (a -> b) -> a -> b
$ PackageName -> [TeXArg] -> LaTeX -> LaTeX
TeXEnv PackageName
"tabularx" [TeXArg]
args
  where
    width' :: TeXArg
width' = LaTeX -> TeXArg
FixArg forall a b. (a -> b) -> a -> b
$ Text -> LaTeX
TeXRaw forall a b. (a -> b) -> a -> b
$ forall a. Render a => a -> Text
render Measure
width
    ts' :: TeXArg
ts' = LaTeX -> TeXArg
FixArg forall a b. (a -> b) -> a -> b
$ Text -> LaTeX
TeXRaw forall a b. (a -> b) -> a -> b
$ 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 forall a b. (a -> b) -> a -> b
$ Text -> LaTeX
TeXRaw forall a b. (a -> b) -> a -> b
$ forall a. Render a => a -> Text
render Pos
p