HaTeX-1.0.1: Library for generate LaTeX code.

Text.LaTeX

Contents

Synopsis

How to use HaTeX

Introduction

If you know how to use LaTeX, you will easily understand how to use HaTeX. Otherwise, you will need to read well the documentation.

A first step may be to know the LaTeX file structure.

LaTeX file structure

A LaTeX file has two parts:

  • A header where you define general settings (document class, page style, use of extern packages, ...) of your document.
  • The document's content.

A simple example

We're going to write an example, the best for understanding.

Then, with this three functions, we will define a header in the LaTeX monad. LaTeX is a writer monad that concatenates the text generated by the programmer. Usually, the text is generated simply writing it, or by functions.

 example = do documentclass [] article
              author "Daniel Diaz"
              title "Example"

The first argument of documentclass is used for change certain settings of the class. For example, you can set the document's main font size to 12pt, writing:

 documentclass [pt 12] article

Or set paper size to A4:

 documentclass [pt 12,a4paper] article

Now, I will write a content:

 hello = "Hello, world!"

To insert the content into the document, we have the function document. Completing our first example:

 example = do documentclass [] article
              author "Daniel Diaz"
              title "Example"
              document hello

At first glance, it seems that author, title or document receive a String as argument. Really, they require a LaTeX argument. LaTeX is the type that represents texts in HaTeX. So, I recommend to use Overloaded Strings (See http://www.haskell.org/ghc/docs/6.12.2/html/users_guide/type-class-extensions.html#overloaded-strings).

Enriching your text

There are numerous functions to enrich your document. One feature is change your font format with the functions shown here: Text.LaTeX.Commands.

For example, in:

 texttt "Hello!"

texttt sets as monospaced font his content. Or composing:

 texttt $ textbf "Hello!"

textbf sets as bold font the monospaced font of "Hello!".

If you only want "ll" with bold format:

 texttt $ do "He"
             textbf "ll"
             "o!"

Applying the function to only part of the text, we achieve modify just that part.

Performing IO computations

To includes an IO computation in LaTeX monad, use iolx.

 gtime = do t <- iolx getClockTime
            ...

Some IO computations are predefined in Text.LaTeX.IO.

HaTeX related functions

hatex :: LaTeXSource

HaTeX nice word.

hatexVersion :: LaTeXSource

Your HaTeX version.

Exporting to .tex

exportSource

Arguments

:: LaTeX

LaTeX to export.

-> FilePath

Path of export.

-> IO () 

Export the Result of a LaTeX sequence in a .tex file.

Re-exports