Safe Haskell | None |
---|---|
Language | Haskell2010 |
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
- baselineskip :: LaTeXC l => l
- indent :: LaTeXC l => l
- noindent :: LaTeXC l => l
- textwidth :: LaTeXC l => l
- textheight :: 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 HPos -> l -> l
- makebox :: LaTeXC l => Maybe Measure -> Maybe HPos -> 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
- array :: 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 -> l Source
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 -> m Source
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 -> l Source
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 -> l Source
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 -> l Source
Import a package. First argument is a list of options for the package named in the second argument.
linespread :: LaTeXC l => Float -> l Source
Classes
Document classes
Class options
data ClassOption Source
A class option to be passed to the documentclass
function.
customopt :: String -> ClassOption Source
landscape :: ClassOption Source
Changes the layout of the document to print in landscape mode
openright :: ClassOption Source
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 -> l Source
markboth :: LaTeXC l => l -> l -> l Source
Used in conjunction with myheadings
for setting both the left and the right heading.
markright :: LaTeXC l => l -> l Source
Used in conjunction with myheadings
for setting the right heading.
Body commands
Document structure
tableofcontents :: LaTeXC l => l Source
Create the table of contents, automatically generated
from your section
s, subsection
s, and related functions.
Sections
subsection :: LaTeXC l => l -> l Source
Start a new subsection.
subsubsection :: LaTeXC l => l -> l Source
Start a new subsubsection.
subparagraph :: LaTeXC l => l -> l Source
Start a subparagraph (minimal level of sectioning).
Logos & symbols
HaTeX specific
hatex_version :: LaTeXC l => l Source
Print the HaTeX logo, beside the complete version number.
Document layout
cleardoublepage :: LaTeXC l => l Source
nolinebreak :: LaTeXC l => l -> l Source
nopagebreak :: LaTeXC l => l -> l Source
baselineskip :: LaTeXC l => l Source
Document measures
textheight :: LaTeXC l => l Source
Formatting text
verbatim :: LaTeXC l => Text -> l Source
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 -> l Source
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 -> l Source
Sizes
Sizes are sorted from smallest to biggest.
scriptsize :: LaTeXC l => l -> l Source
footnotesize :: LaTeXC l => l -> l Source
normalsize :: LaTeXC l => l -> l Source
Environments
Math environments, such as equation
, defined in Text.LaTeX.Packages.AMSMath.
enumerate :: LaTeXC l => l -> l Source
Environment of ordered lists. Use item
to start each list
item.
itemize :: LaTeXC l => l -> l Source
Environment of unordered lists. Use item
to start each list
item.
flushright :: LaTeXC l => l -> l Source
Right-justify the argument.
description :: LaTeXC l => l -> l Source
Minipage environment.
Page numbering
pagenumbering :: LaTeXC l => l -> l Source
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.
:: 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. |
Like tabular
but in math mode by default
cline :: LaTeXC l => Int -> Int -> l Source
cline i j
writes a partial horizontal line beginning in column i
and ending in column j
.
multicolumn :: LaTeXC l => Int -> [TableSpec] -> l -> l Source
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 -> l Source