Documentation can be found at https://pythonhosted.org/latex .
Allows calling LaTeX from Python without leaving a mess. Similar to the (officially obsolete) tex package, whose successor is not PyPi-installable:
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 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
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
{% ... %}:
\documentclass{article} \begin{document} \BLOCK{block body}\BLOCK{endblock} \end{document}
Finally, doc.latex shows why the %- syntax is usually preferable:
%- extends "base.latex" %- block body Hello, \VAR{name|e}. %- endblock
Translations using Babel
Strings from .latex-templates can be extracted, provided your babel.cfg is setup correctly:
[jinja2: *.latex] block_start_string = \BLOCK{ block_end_string = } variable_start_string = \VAR{ variable_end_string = } comment_start_string = \#{ comment_end_string = } line_statement_prefix = %- line_comment_prefix = %# trim_blocks = True autoescape = False