Difference between revisions of "HaTeX"

From HaskellWiki
Jump to navigation Jump to search
m
(Updated to version 2 of the package)
Line 2: Line 2:
   
 
HaTeX is a package wich lets you to write LaTeX code from Haskell.
 
HaTeX is a package wich lets you to write LaTeX code from Haskell.
  +
  +
HaTeX page: http://ddiaz.asofilak.es/packages/HaTeX
   
 
Here a link to the package in Hackage: http://hackage.haskell.org/package/HaTeX
 
Here a link to the package in Hackage: http://hackage.haskell.org/package/HaTeX
Line 84: Line 86:
 
Applying the function to only part of the text, we achieve modify just that part.
 
Applying the function to only part of the text, we achieve modify just that part.
   
== Performing IO computations ==
+
== Performing monadic computations ==
   
To includes an <code>IO</code> computation in <code>LaTeX</code> monad, use <code>iolx</code>.
+
All computations in HaTeX take place in the <code>LaTeXT</code> monadic transformer.
  +
To includes a monadic computation, use <code>mlx</code>.
 
<haskell>
 
<haskell>
gtime = do t <- iolx getClockTime
+
gtime = do t <- mlx getClockTime
 
...
 
...
 
</haskell>
 
</haskell>
 
Some <code>IO</code> computations are predefined in Text.LaTeX.IO.
 
Some <code>IO</code> computations are predefined in Text.LaTeX.IO.
  +
  +
== Adding sections ==
  +
  +
Commands to adding sections are included in Text.LaTeX.Commands. Examples are <code>section</code> or <code>paragraph</code>.
  +
  +
If you want sections without number, use <code>section_</code>. This also avoid showing the section into the table of contents.
  +
  +
If you want title of section to be different in the context than in the table of contents, use <code>sectiontab</code>.
   
 
== HaTeX Support ==
 
== HaTeX Support ==
Line 97: Line 108:
 
You can report any bug or suggestion at:
 
You can report any bug or suggestion at:
   
  +
danieldiaz@asofilak.es
lazy.ddiaz@gmail.com
 
   
 
[[Category:Packages]]
 
[[Category:Packages]]

Revision as of 20:35, 2 August 2010

About HaTeX

HaTeX is a package wich lets you to write LaTeX code from Haskell.

HaTeX page: http://ddiaz.asofilak.es/packages/HaTeX

Here a link to the package in Hackage: http://hackage.haskell.org/package/HaTeX

How to use HaTeX

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.

  • Function documentclass is used for determining if our document is an article, a book, a report, etc.
  • Function author is used for specify document's authory.
  • Function title for document's title.

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 [1]).

Enriching your text

There are numerous functions to enrich your document. One feature is change your font format. 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 monadic computations

All computations in HaTeX take place in the LaTeXT monadic transformer. To includes a monadic computation, use mlx.

gtime = do t <- mlx getClockTime
           ...

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

Adding sections

Commands to adding sections are included in Text.LaTeX.Commands. Examples are section or paragraph.

If you want sections without number, use section_. This also avoid showing the section into the table of contents.

If you want title of section to be different in the context than in the table of contents, use sectiontab.

HaTeX Support

You can report any bug or suggestion at:

danieldiaz@asofilak.es