Skip to content

A simple Django app to render Latex templates and compile them into Pdf files.

License

Notifications You must be signed in to change notification settings

rodrperezi/django-tex

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

42 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

DJANGO-TEX

Django-tex is a simple Django app to render LaTeX templates and compile them into PDF files.

Django-tex requires a local LaTeX installation and uses the jinja2 templating engine for template rendering.

Quick start

  1. Add "django_tex" to your INSTALLED_APPS setting:
INSTALLED_APPS = [
    ...
    'django_tex',
]
  1. Create a LaTeX template in your template directory:
# test.tex
\documentclass{article}

\begin{document}

\section{ {{- foo -}} }

\end{document}
  1. Use "compile_template_to_pdf" in your code to get the PDF file as a bytes object:
from django_tex.core import compile_template_to_pdf

template_name = 'test.tex'
context = {'foo': 'Bar'}
PDF = compile_template_to_pdf(template_name, context)

Or use render_to_pdf to generate a HTTPResponse containing the PDF file:

from django_tex.views import render_to_pdf

def view(request):
    template_name = 'test.tex'
    context = {'foo': 'Bar'}
    return render_to_pdf(template_name, context, filename='test.pdf')

Some notes on usage

Since django-tex uses jinja, you can use jinja's whitespace control in LaTeX templates. For example, \section{ {{ foo }} } would be rendered as \section{ Bar } with the above context; \section{ {{- foo -}} }, however, gets rendered nicely as \section{Bar}.

Django's built-in filters are available. So you can use {{ foo|date('d. F Y') }} to get 1. Januar 2018, for instance.

Further, django-tex adds the custom filter localize to the jinja environment. This runs its input through django.utils.formats.localize_input to create a localized representation. The output depends on the USE_L10N and LANGUAGE_CODE settings. Use the filter like this: {{ foo|localize }}.

If you want to convert linebreaks into LaTeX linebreaks (\\), use the linebreaks filter ({{ foo | linebreaks }}).

About

A simple Django app to render Latex templates and compile them into Pdf files.

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages

  • Python 97.2%
  • TeX 2.8%