Safe Haskell | None |
---|
This module is the Prelude of LaTeX functions. It includes commands, environments, and some other useful abstractions, that don't require you to import additional LaTeX packages.
- raw :: LaTeXC l => Text -> l
- between :: Monoid m => m -> m -> m -> m
- comment :: LaTeXC l => Text -> l
- (%:) :: LaTeXC l => l -> Text -> l
- title :: LaTeXC l => l -> l
- author :: LaTeXC l => l -> l
- date :: LaTeXC l => l -> l
- institute :: LaTeXC l => Maybe l -> l -> l
- thanks :: LaTeXC l => l -> l
- documentclass :: LaTeXC l => [ClassOption] -> ClassName -> l
- usepackage :: LaTeXC l => [l] -> PackageName -> l
- linespread :: LaTeXC l => Float -> l
- article :: ClassName
- proc :: ClassName
- report :: ClassName
- minimal :: ClassName
- book :: ClassName
- slides :: ClassName
- data ClassOption
- customopt :: String -> ClassOption
- draft :: ClassOption
- titlepage :: ClassOption
- notitlepage :: ClassOption
- onecolumn :: ClassOption
- twocolumn :: ClassOption
- oneside :: ClassOption
- twoside :: ClassOption
- landscape :: ClassOption
- openright :: ClassOption
- openany :: ClassOption
- fleqn :: ClassOption
- leqno :: ClassOption
- data PaperType
- a0paper :: ClassOption
- a1paper :: ClassOption
- a2paper :: ClassOption
- a3paper :: ClassOption
- a4paper :: ClassOption
- a5paper :: ClassOption
- a6paper :: ClassOption
- b0paper :: ClassOption
- b1paper :: ClassOption
- b2paper :: ClassOption
- b3paper :: ClassOption
- b4paper :: ClassOption
- b5paper :: ClassOption
- b6paper :: ClassOption
- letterpaper :: ClassOption
- executivepaper :: ClassOption
- legalpaper :: ClassOption
- pagestyle :: LaTeXC l => PageStyle -> l
- thispagestyle :: LaTeXC l => PageStyle -> l
- plain :: PageStyle
- headings :: PageStyle
- empty :: PageStyle
- myheadings :: PageStyle
- markboth :: LaTeXC l => l -> l -> l
- markright :: LaTeXC l => l -> l
- document :: LaTeXC l => l -> l
- maketitle :: LaTeXC l => l
- tableofcontents :: LaTeXC l => l
- abstract :: LaTeXC l => l -> l
- appendix :: LaTeXC l => l
- part :: LaTeXC l => l -> l
- chapter :: LaTeXC l => l -> l
- section :: LaTeXC l => l -> l
- subsection :: LaTeXC l => l -> l
- subsubsection :: LaTeXC l => l -> l
- paragraph :: LaTeXC l => l -> l
- subparagraph :: LaTeXC l => l -> l
- today :: LaTeXC l => l
- thePage :: LaTeXC l => l
- tex :: LaTeXC l => l
- latex :: LaTeXC l => l
- laTeX2 :: LaTeXC l => l
- laTeXe :: LaTeXC l => l
- ldots :: LaTeXC l => l
- vdots :: LaTeXC l => l
- ddots :: LaTeXC l => l
- hatex :: LaTeXC l => l
- hatex3 :: LaTeXC l => l
- version :: Version
- hatex_version :: LaTeXC l => l
- par :: LaTeXC l => l
- newline :: LaTeXC l => l
- lnbk :: LaTeXC l => l
- lnbk_ :: LaTeXC l => l
- newpage :: LaTeXC l => l
- cleardoublepage :: LaTeXC l => l
- clearpage :: LaTeXC l => l
- linebreak :: LaTeXC l => l -> l
- nolinebreak :: LaTeXC l => l -> l
- pagebreak :: LaTeXC l => l -> l
- nopagebreak :: LaTeXC l => l -> l
- hspace :: LaTeXC l => Measure -> l
- hspace_ :: LaTeXC l => Measure -> l
- vspace :: LaTeXC l => Measure -> l
- hfill :: LaTeXC l => l
- vfill :: LaTeXC l => l
- stretch :: LaTeXC l => Int -> l
- smallskip :: LaTeXC l => l
- bigskip :: LaTeXC l => l
- indent :: LaTeXC l => l
- noindent :: LaTeXC l => l
- textwidth :: LaTeXC l => l
- linewidth :: LaTeXC l => l
- verbatim :: LaTeXC l => Text -> l
- verb :: LaTeXC l => Text -> l
- textbf :: LaTeXC l => l -> l
- textit :: LaTeXC l => l -> l
- texttt :: LaTeXC l => l -> l
- textrm :: LaTeXC l => l -> l
- textsf :: LaTeXC l => l -> l
- textmd :: LaTeXC l => l -> l
- textup :: LaTeXC l => l -> l
- textsl :: LaTeXC l => l -> l
- textsc :: LaTeXC l => l -> l
- textnormal :: LaTeXC l => l -> l
- underline :: LaTeXC l => l -> l
- emph :: LaTeXC l => l -> l
- tiny :: LaTeXC l => l -> l
- scriptsize :: LaTeXC l => l -> l
- footnotesize :: LaTeXC l => l -> l
- small :: LaTeXC l => l -> l
- normalsize :: LaTeXC l => l -> l
- large :: LaTeXC l => l -> l
- large2 :: LaTeXC l => l -> l
- large3 :: LaTeXC l => l -> l
- huge :: LaTeXC l => l -> l
- huge2 :: LaTeXC l => l -> l
- enumerate :: LaTeXC l => l -> l
- itemize :: LaTeXC l => l -> l
- item :: LaTeXC l => Maybe l -> l
- flushleft :: LaTeXC l => l -> l
- flushright :: LaTeXC l => l -> l
- center :: LaTeXC l => l -> l
- quote :: LaTeXC l => l -> l
- verse :: LaTeXC l => l -> l
- cite :: LaTeXC l => l -> l
- description :: LaTeXC l => l -> l
- minipage :: LaTeXC l => Maybe Pos -> l -> l -> l
- figure :: LaTeXC l => Maybe Pos -> l -> l
- pagenumbering :: LaTeXC l => l -> l
- arabic :: LaTeXC l => l
- roman :: LaTeXC l => l
- roman_ :: LaTeXC l => l
- alph :: LaTeXC l => l
- alph_ :: LaTeXC l => l
- mbox :: LaTeXC l => l -> l
- fbox :: LaTeXC l => l -> l
- parbox :: LaTeXC l => Maybe Pos -> Measure -> l -> l
- framebox :: LaTeXC l => Maybe Measure -> Maybe Pos -> l -> l
- makebox :: LaTeXC l => Maybe Measure -> Maybe Pos -> l -> l
- raisebox :: LaTeXC l => Measure -> Maybe Measure -> Maybe Measure -> l -> l
- rule :: LaTeXC l => Maybe Measure -> Measure -> Measure -> l
- caption :: LaTeXC l => l -> l
- label :: LaTeXC l => l -> l
- ref :: LaTeXC l => l -> l
- pageref :: LaTeXC l => l -> l
- tabular :: LaTeXC l => Maybe Pos -> [TableSpec] -> l -> l
- (&) :: LaTeXC l => l -> l -> l
- hline :: LaTeXC l => l
- cline :: LaTeXC l => Int -> Int -> l
- multicolumn :: LaTeXC l => Int -> [TableSpec] -> l -> l
- matrixTabular :: (LaTeXC l, Texy a) => [l] -> Matrix a -> l
- footnote :: LaTeXC l => l -> l
- protect :: LaTeXC l => l -> l
- hyphenation :: LaTeXC l => l -> l
- hyp :: LaTeXC l => l
- qts :: LaTeXC l => l -> l
- input :: LaTeXC l => FilePath -> l
- include :: LaTeXC l => FilePath -> l
Basic functions
raw :: LaTeXC l => Text -> lSource
Insert a raw piece of Text
.
This functions doesn't escape LaTeX
reserved characters,
it insert the text just as it is received.
Warning: This function is unsafe, in the sense that it does not check that the input text is a valid LaTeX block. Make sure any braces, commands or environments are properly closed.
between :: Monoid m => m -> m -> m -> mSource
Calling between
c l1 l2
puts c
between l1
and l2
and
appends them.
between c l1 l2 = l1 <> c <> l2
(%:) :: LaTeXC l => l -> Text -> lSource
This operator appends a comment after a expression. For example:
textbf "I'm just an example." %: "Insert a few words here."
The implementation is
(%:) l = (l <>) . comment
Since you are writing in Haskell, you may not need to output comments as you can add them in the Haskell source. I added this feature for completeness. It may be useful for debugging the output as well.
Preamble commands
institute :: LaTeXC l => Maybe l -> l -> lSource
Set either an institute or an organization
for the document. It does not work for
a document of the article
class.
:: LaTeXC l | |
=> [ClassOption] | Class options |
-> ClassName | Class name |
-> l |
Set the document class. Needed in all documents.
usepackage :: LaTeXC l => [l] -> PackageName -> lSource
Import a package. First argument is a list of options for the package named in the second argument.
linespread :: LaTeXC l => Float -> lSource
Classes
Document classes
Class options
data ClassOption Source
A class option to be passed to the documentclass
function.
customopt :: String -> ClassOptionSource
landscape :: ClassOptionSource
Changes the layout of the document to print in landscape mode
openright :: ClassOptionSource
Makes chapters begin either only on right hand pages
Makes chapters begin on the next page available.
Typesets displayed formulae left-aligned instead of centred.
Places the numbering of formulae on the left hand side instead of the right.
Paper sizes
LaTeX available paper types.
Page styles
thispagestyle :: LaTeXC l => PageStyle -> lSource
markboth :: LaTeXC l => l -> l -> lSource
Used in conjunction with myheadings
for setting both the left and the right heading.
markright :: LaTeXC l => l -> lSource
Used in conjunction with myheadings
for setting the right heading.
Body commands
Document structure
tableofcontents :: LaTeXC l => lSource
Create the table of contents, automatically generated
from your section
s, subsection
s, and related functions.
Sections
subsection :: LaTeXC l => l -> lSource
Start a new subsection.
subsubsection :: LaTeXC l => l -> lSource
Start a new subsubsection.
subparagraph :: LaTeXC l => l -> lSource
Start a subparagraph (minimal level of sectioning).
Logos & symbols
HaTeX specific
hatex_version :: LaTeXC l => lSource
Print the HaTeX logo, beside the complete version number.
Document layout
cleardoublepage :: LaTeXC l => lSource
nolinebreak :: LaTeXC l => l -> lSource
nopagebreak :: LaTeXC l => l -> lSource
Document measures
Formatting text
verbatim :: LaTeXC l => Text -> lSource
The point of verbatim
is to include text that will
not be parsed as LaTeX in any way at all, but should simply
appear as given in the document, in a separate display
in typewriter font.
verb :: LaTeXC l => Text -> lSource
Include text, as given and in typewriter, but in-line. Note that, for LaTeX-specific technical reasons, verbatim text can generally only be used "at the top level", not in e.g. section titles or other command-arguments.
Unlike verbatim
, which LaTeX implements as an ordinary environment,
its command verb
uses a syntax trick to avoid braking its parsing
when the literal text contains a closing brace: rather than using braces
at all, the first character after \verb
will be the right delimiter as well.
Translating this method to HaTeX wouldn't really make sense since Haskell
has string literals with their own escaping possibilities; instead, we make
it secure by automatically choosing a delimiter that does not turn up
in the given string.
Fonts
textnormal :: LaTeXC l => l -> lSource
Sizes
Sizes are sorted from smallest to biggest.
scriptsize :: LaTeXC l => l -> lSource
footnotesize :: LaTeXC l => l -> lSource
normalsize :: LaTeXC l => l -> lSource
Environments
Math environments, such as equation
, defined in Text.LaTeX.Packages.AMSMath.
enumerate :: LaTeXC l => l -> lSource
Environment of ordered lists. Use item
to start each list
item.
itemize :: LaTeXC l => l -> lSource
Environment of unordered lists. Use item
to start each list
item.
flushright :: LaTeXC l => l -> lSource
Right-justify the argument.
description :: LaTeXC l => l -> lSource
Minipage environment.
Page numbering
pagenumbering :: LaTeXC l => l -> lSource
Boxes
Produce a simple black box.
Cross references
Tables
:: LaTeXC l | |
=> Maybe Pos | This optional parameter can be used to specify the vertical position of the table.
Defaulted to |
-> [TableSpec] | Table specification of columns and vertical lines. |
-> l | |
-> l | Resulting table syntax. |
The tabular
environment can be used to typeset tables with optional horizontal and vertical lines.
cline :: LaTeXC l => Int -> Int -> lSource
cline i j
writes a partial horizontal line beginning in column i
and ending in column j
.
multicolumn :: LaTeXC l => Int -> [TableSpec] -> l -> lSource
Cell taking multiple columns.
Special tables
:: (LaTeXC l, Texy a) | |
=> [l] | (Non-empty) List of column titles |
-> Matrix a | Matrix of data |
-> l | Data organized in a tabular environment |
If you are able to arrange some data in matrix form, you
might want to use this function to quickly generate a
tabular with your data. Each element of the matrix is
rendered using the Texy
instance of its type. If you
want a custom instance for an already instantiated type,
wrap that type using newtype
, and then create your own
instance. Since every element of a matrix must be of the
same type, for mixed tables you might want to create an
union type. For example, if your data matrix contains
Int
s and Double
s:
data Number = R Double | I Int instance Texy Number where texy (R x) = texy x texy (I x) = texy x
Now you can have a matrix of type Matrix Number
and use it
to render your mixed data in a LaTeX table.
The function matrixTabular
does not give you many options,
so it is not as flexible as generating the table by yourself,
but it uses a reasonable standard style.
A very simple example:
matrixTabular (fmap textbf ["x","y","z"]) $ fromList 3 3 [ (1 :: Int)..]
This code generates the following table:
For more examples see the file Examples/tables.hs
, included
in the source distribution.
For more info about how to generate and manipulate matrices, see Data.Matrix.
Others
hyphenation :: LaTeXC l => l -> lSource