{-# LANGUAGE OverloadedStrings #-}
module Text.LaTeX.Packages.Multirow
( multirowp
, BigStrutsCount(..)
, multirow
) where
import qualified Data.Semigroup as SG ((<>))
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 :: PackageName
multirowp = PackageName
"multirow"
data BigStrutsCount
= BigStruts Int
| BigStrutsTop Int
| BigStrutsBottom Int
| BigStrutsTopBottom Int
deriving (Int -> BigStrutsCount -> ShowS
[BigStrutsCount] -> ShowS
BigStrutsCount -> PackageName
(Int -> BigStrutsCount -> ShowS)
-> (BigStrutsCount -> PackageName)
-> ([BigStrutsCount] -> ShowS)
-> Show BigStrutsCount
forall a.
(Int -> a -> ShowS)
-> (a -> PackageName) -> ([a] -> ShowS) -> Show a
$cshowsPrec :: Int -> BigStrutsCount -> ShowS
showsPrec :: Int -> BigStrutsCount -> ShowS
$cshow :: BigStrutsCount -> PackageName
show :: BigStrutsCount -> PackageName
$cshowList :: [BigStrutsCount] -> ShowS
showList :: [BigStrutsCount] -> ShowS
Show)
instance Render BigStrutsCount where
render :: BigStrutsCount -> Text
render (BigStruts Int
n) = Int -> Text
forall a. Render a => a -> Text
render Int
n
render (BigStrutsTop Int
n) = Text
"t" Text -> Text -> Text
forall a. Semigroup a => a -> a -> a
SG.<> Int -> Text
forall a. Render a => a -> Text
render Int
n
render (BigStrutsBottom Int
n) = Text
"b" Text -> Text -> Text
forall a. Semigroup a => a -> a -> a
SG.<> Int -> Text
forall a. Render a => a -> Text
render Int
n
render (BigStrutsTopBottom Int
n) = Text
"tb" Text -> Text -> Text
forall a. Semigroup a => a -> a -> a
SG.<> Int -> Text
forall a. Render a => a -> Text
render Int
n
multirow :: LaTeXC l =>
Maybe Pos
-> Double
-> Maybe BigStrutsCount
-> Measure
-> Maybe Measure
-> l
-> l
multirow :: forall l.
LaTeXC l =>
Maybe Pos
-> Double
-> Maybe BigStrutsCount
-> Measure
-> Maybe Measure
-> l
-> l
multirow Maybe Pos
mVPos Double
nrows Maybe BigStrutsCount
mBigstruts Measure
width Maybe Measure
mVMove =
(LaTeX -> LaTeX) -> l -> l
forall l. LaTeXC l => (LaTeX -> LaTeX) -> l -> l
liftL (\LaTeX
l ->
PackageName -> [TeXArg] -> LaTeX
TeXComm PackageName
"multirow" ([TeXArg] -> LaTeX) -> [TeXArg] -> LaTeX
forall a b. (a -> b) -> a -> b
$ [Maybe TeXArg] -> [TeXArg]
forall a. [Maybe a] -> [a]
catMaybes [ (Pos -> TeXArg) -> Maybe Pos -> Maybe TeXArg
forall a b. (a -> b) -> Maybe a -> Maybe b
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap (LaTeX -> TeXArg
OptArg (LaTeX -> TeXArg) -> (Pos -> LaTeX) -> Pos -> TeXArg
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Pos -> LaTeX
forall a l. (Render a, LaTeXC l) => a -> l
rendertex) Maybe Pos
mVPos
, TeXArg -> Maybe TeXArg
forall a. a -> Maybe a
Just (LaTeX -> TeXArg
FixArg (LaTeX -> TeXArg) -> (Double -> LaTeX) -> Double -> TeXArg
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Double -> LaTeX
forall a l. (Render a, LaTeXC l) => a -> l
rendertex (Double -> TeXArg) -> Double -> TeXArg
forall a b. (a -> b) -> a -> b
$ Double
nrows)
, (BigStrutsCount -> TeXArg) -> Maybe BigStrutsCount -> Maybe TeXArg
forall a b. (a -> b) -> Maybe a -> Maybe b
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap (LaTeX -> TeXArg
OptArg (LaTeX -> TeXArg)
-> (BigStrutsCount -> LaTeX) -> BigStrutsCount -> TeXArg
forall b c a. (b -> c) -> (a -> b) -> a -> c
. BigStrutsCount -> LaTeX
forall a l. (Render a, LaTeXC l) => a -> l
rendertex) Maybe BigStrutsCount
mBigstruts
, TeXArg -> Maybe TeXArg
forall a. a -> Maybe a
Just (LaTeX -> TeXArg
FixArg (LaTeX -> TeXArg) -> (Measure -> LaTeX) -> Measure -> TeXArg
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Measure -> LaTeX
forall a l. (Render a, LaTeXC l) => a -> l
rendertex (Measure -> TeXArg) -> Measure -> TeXArg
forall a b. (a -> b) -> a -> b
$ Measure
width)
, (Measure -> TeXArg) -> Maybe Measure -> Maybe TeXArg
forall a b. (a -> b) -> Maybe a -> Maybe b
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap (LaTeX -> TeXArg
OptArg (LaTeX -> TeXArg) -> (Measure -> LaTeX) -> Measure -> TeXArg
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Measure -> LaTeX
forall a l. (Render a, LaTeXC l) => a -> l
rendertex) Maybe Measure
mVMove
, TeXArg -> Maybe TeXArg
forall a. a -> Maybe a
Just (LaTeX -> TeXArg
FixArg LaTeX
l)
]
)