latex
=====

Documentation can be found at https://pythonhosted.org/latex .

Allows calling LaTeX from Python without leaving a mess. Similar to the
(officially obsolete) `tex <https://pypi.python.org/pypi/tex/>`_ package, whose
`successor <http://www.profv.de/texcaller/>`_ is not PyPi-installable:

.. code-block:: python

     min_latex = (r"\documentclass{article}"
                  r"\begin{document}"
                  r"Hello, world!"
                  r"\end{document}")

     from latex import build_pdf

     # this builds a pdf-file inside a temporary directory
     pdf = build_pdf(min_latex)

     # look at the first few bytes of the header
     print bytes(pdf)[:10]

Also comes with support for using `Jinja2 <http://jinja.pocoo.org/>`_ templates
to generate LaTeX files.

``make_env`` can be used to create an ``Environment`` that plays well with
LaTex::

   Variables can be used in a LaTeX friendly way: Hello, \VAR{name|e}.

   Note that autoescaping is off. Blocks are creating using the block macro:

   \BLOCK{if weather is 'good'}
   Hooray.
   \BLOCK{endif}

   \#{comments are supported as well}
   %# and so are line comments

   To keep things short, line statements can be used:

   %- if weather is good
   Yay.
   %- endif


Example use
-----------

.. code-block:: python

    from jinja2.loaders import FileSystemLoader
    from latex.jinja2 import make_env

    env = make_env(loader=FileSystemLoader('.'))
    tpl = env.get_template('doc.latex')

    print(tpl.render(name="Alice"))

The ``base.latex`` demonstrates how ``\BLOCK{...}`` is substituted for
``{% ... %}``:

.. code-block:: latex

    \documentclass{article}
    \begin{document}
    \BLOCK{block body}\BLOCK{endblock}
    \end{document}

Finally, ``doc.latex`` shows why the ``%-`` syntax is usually preferable:

.. code-block:: latex

    %- extends "base.latex"

    %- block body
    Hello, \VAR{name|e}.
    %- endblock
