{-# LANGUAGE OverloadedStrings #-}
module Text.LaTeX.Packages.Geometry (
geometry
, importGeometry
, GeometryOption (..)
, applyGeometry
) where
import Text.LaTeX
import Text.LaTeX.Base.Syntax
import Text.LaTeX.Base.Class
geometry :: PackageName
geometry :: PackageName
geometry = PackageName
"geometry"
data GeometryOption =
GHeight Measure
| GWidth Measure
| GPaper PaperType
| GCentered
| GPaperHeight Measure
| GPaperWidth Measure
| GLandscape Bool
deriving Int -> GeometryOption -> ShowS
[GeometryOption] -> ShowS
GeometryOption -> PackageName
forall a.
(Int -> a -> ShowS)
-> (a -> PackageName) -> ([a] -> ShowS) -> Show a
showList :: [GeometryOption] -> ShowS
$cshowList :: [GeometryOption] -> ShowS
show :: GeometryOption -> PackageName
$cshow :: GeometryOption -> PackageName
showsPrec :: Int -> GeometryOption -> ShowS
$cshowsPrec :: Int -> GeometryOption -> ShowS
Show
renderOption :: Render a => Text -> a -> Text
renderOption :: forall a. Render a => Text -> a -> Text
renderOption Text
t a
x = Text
t forall a. Semigroup a => a -> a -> a
<> Text
"=" forall a. Semigroup a => a -> a -> a
<> forall a. Render a => a -> Text
render a
x
instance Render GeometryOption where
render :: GeometryOption -> Text
render (GHeight Measure
m) = forall a. Render a => Text -> a -> Text
renderOption Text
"height" Measure
m
render (GWidth Measure
m) = forall a. Render a => Text -> a -> Text
renderOption Text
"width" Measure
m
render (GPaper PaperType
p) = forall a. Render a => a -> Text
render (PaperType -> ClassOption
Paper PaperType
p)
render GeometryOption
GCentered = Text
"centered"
render (GPaperHeight Measure
m) = forall a. Render a => Text -> a -> Text
renderOption Text
"paperheight" Measure
m
render (GPaperWidth Measure
m) = forall a. Render a => Text -> a -> Text
renderOption Text
"paperwidth" Measure
m
render (GLandscape Bool
b) = forall a. Render a => Text -> a -> Text
renderOption Text
"landscape" Bool
b
applyGeometry :: LaTeXC l => [GeometryOption] -> l
applyGeometry :: forall l. LaTeXC l => [GeometryOption] -> l
applyGeometry [GeometryOption]
opts = forall l. LaTeXC l => LaTeX -> l
fromLaTeX forall a b. (a -> b) -> a -> b
$ PackageName -> [TeXArg] -> LaTeX
TeXComm PackageName
"geometry" [LaTeX -> TeXArg
FixArg forall a b. (a -> b) -> a -> b
$ forall l. LaTeXC l => Text -> l
raw forall a b. (a -> b) -> a -> b
$ forall a. Render a => [a] -> Text
renderCommas [GeometryOption]
opts]
importGeometry :: LaTeXC l => [GeometryOption] -> l
importGeometry :: forall l. LaTeXC l => [GeometryOption] -> l
importGeometry [GeometryOption]
opts = forall l. LaTeXC l => [l] -> PackageName -> l
usepackage (forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap forall a l. (Render a, LaTeXC l) => a -> l
rendertex [GeometryOption]
opts) PackageName
geometry