HaTeX-3.2: Text/LaTeX/Packages/AMSThm.hs
{-# OPTIONS_HATEX MakeMonadic #-}
{-# LANGUAGE OverloadedStrings #-}
-- | Package for theorem environments.
module Text.LaTeX.Packages.AMSThm
( -- * AMSThm package
amsthm
-- * AMSThm functions
, newtheorem
, theorem
, proof
, qedhere
, TheoremStyle (..)
, theoremstyle
) where
import Text.LaTeX.Base.Syntax
import Text.LaTeX.Base.Render
import Text.LaTeX.Base.Types
-- | AMSThm package.
-- Example:
--
-- > usepackage [] amsthm
amsthm :: PackageName
amsthm = "amsthm"
-- | Create a new 'theorem' environment type.
-- Arguments are environment name (this will be the argument
-- when using the 'theorem' function) and the displayed title.
--
-- For example:
--
-- > newtheorem "prop" "Proposition"
--
-- > theorem "prop" "This is it."
newtheorem :: String -> LaTeX -> LaTeX
newtheorem str l = TeXComm "newtheorem" [ FixArg $ fromString str , FixArg l ]
theorem :: String -> LaTeX -> LaTeX
theorem str l = TeXEnv str [] l
-- | The 'proof' environment. The first optional argument
-- is used to put a custom title to the proof.
proof :: Maybe LaTeX -> LaTeX -> LaTeX
proof Nothing l = TeXEnv "proof" [ ] l
proof (Just n) l = TeXEnv "proof" [ OptArg n ] l
-- | Insert the /QED/ symbol.
qedhere :: LaTeX
qedhere = TeXComm "qedhere" []
data TheoremStyle =
Plain
| Definition
| Remark
| CustomThmStyle String
deriving Show
instance Render TheoremStyle where
render Plain = "plain"
render Definition = "definition"
render Remark = "remark"
render (CustomThmStyle str) = fromString str
-- | Set the theorem style. Call this function in the preamble.
theoremstyle :: TheoremStyle -> LaTeX
theoremstyle thmsty = TeXComm "theoremstyle" [ FixArg $ TeXRaw $ render thmsty ]