{-# LANGUAGE OverloadedStrings #-}
module Text.LaTeX.Packages.Multirow
( multirowp
, BigStrutsCount(..)
, multirow
) where
import Data.Monoid ((<>))
import Data.Maybe (catMaybes)
import Text.LaTeX.Base.Syntax (LaTeX(TeXComm), TeXArg(FixArg, OptArg))
import Text.LaTeX.Base.Class (LaTeXC, liftL)
import Text.LaTeX.Base.Types (PackageName, Pos, Measure)
import Text.LaTeX.Base.Render (Render, render, rendertex)
multirowp :: PackageName
multirowp = "multirow"
data BigStrutsCount
= BigStruts Int
| BigStrutsTop Int
| BigStrutsBottom Int
| BigStrutsTopBottom Int
deriving (Show)
instance Render BigStrutsCount where
render (BigStruts n) = render n
render (BigStrutsTop n) = "t" <> render n
render (BigStrutsBottom n) = "b" <> render n
render (BigStrutsTopBottom n) = "tb" <> render n
multirow :: LaTeXC l =>
Maybe Pos
-> Double
-> Maybe BigStrutsCount
-> Measure
-> Maybe Measure
-> l
-> l
multirow mVPos nrows mBigstruts width mVMove text =
liftL (\l ->
TeXComm "multirow" $ catMaybes [ fmap (OptArg . rendertex) mVPos
, Just (FixArg . rendertex $ nrows)
, fmap (OptArg . rendertex) mBigstruts
, Just (FixArg . rendertex $ width)
, fmap (OptArg . rendertex) mVMove
, Just (FixArg l)
]
) text