-- | The @relsize@ package is used to set the font size relative to the -- current size. -- -- CTAN page for relsize: . module Text.LaTeX.Packages.Relsize ( -- * Relsize package prelsize -- * Commands , relsize , larger, smaller , relscale , textlarger, textsmaller, textscale ) where import Text.LaTeX.Base.Class import Text.LaTeX.Base.Render (rendertex) import Text.LaTeX.Base.Syntax import Text.LaTeX.Base.Types -- | The 'prelsize' package. -- Example: -- -- > usepackage [] prelsize prelsize :: ClassName prelsize = "relsize" -- Commands -- | Change font size by 'i' steps. A step is a number of '\magsteps' to -- change size; from this are defined commands '\larger', '\smaller', -- '\textlarger', etc. relsize :: LaTeXC l => Int -> l relsize i = fromLaTeX $ TeXComm "relsize" [FixArg $ rendertex i] -- | Increase font size by (optional) 'i' steps (default 1). larger :: LaTeXC l => Maybe Int -> l larger Nothing = comm0 "larger" larger (Just i) = fromLaTeX $ TeXComm "larger" [OptArg $ rendertex i] -- | Reduce font size by 'i' steps (default 1). smaller :: LaTeXC l => Maybe Int -> l smaller Nothing = comm0 "smaller" smaller (Just i) = fromLaTeX $ TeXComm "smaller" [OptArg $ rendertex i] -- | Change font size by scale factor 'f'. relscale :: LaTeXC l => Float -> l relscale f = fromLaTeX $ TeXComm "relscale" [FixArg $ rendertex f] -- | Text size enlarged by (optional) 'i' steps. textlarger :: LaTeXC l => Maybe Int -> l -> l textlarger Nothing = comm1 "textlarger" textlarger (Just i) = liftL $ \l -> TeXComm "textlarger" [OptArg $ rendertex i, FixArg l] -- | Text size reduced by (optional) 'i' steps. textsmaller :: LaTeXC l => Maybe Int -> l -> l textsmaller Nothing = comm1 "textsmaller" textsmaller (Just i) = liftL $ \l -> TeXComm "textsmaller" [OptArg $ rendertex i, FixArg l] -- | Text size scaled by factor 'f'. textscale :: LaTeXC l => Float -> l -> l textscale f = liftL $ \l -> TeXComm "textscale" [FixArg $ rendertex f, FixArg l]