Skip to main content

PyLaTeX

PyLaTeX is a Python library for creating and compiling LaTeX files. The goal of this library is being an easy, but extensible interface between Python and LaTeX.

Features

  • Document generation and compilation

  • Section, table, math, figure, matplotlib and package classes

  • A matrix class that can compile NumPy ndarrays and matrices to LaTeX

  • Very exstensible base classes that you can use to easily add new features

  • Contextmanager style class hierarchy

  • Functionality to escape special LaTeX characters

  • Bold, italic and verbatim functions

  • Every class has a dump method, which writes the output to a filepointer this way you can use snippets in in normal LaTeX files using input

Everything else you want you can still add to the document by adding LaTeX formatted strings to the container class you want it to be in.

Dependencies

  • Python 3.x or Python 2.7

  • ordered-set

Optional dependencies

  • pdflatex (only if you want to compile the tex file)

  • NumPy (only if you want to convert it’s matrixes)

  • awkwardduet (only if you want to compile to python 2 source code yourself)

Installation

pip install pylatex

Example

This is generated by the code below:

https://raw.github.com/JelteF/PyLaTeX/master/docs/static/screenshot.png
import numpy as np

from pylatex import Document, Section, Subsection, Table, Math, TikZ, Axis, \
    Plot, Figure, Package
from pylatex.numpy import Matrix
from pylatex.utils import italic, escape_latex

doc = Document()
doc.packages.append(Package('geometry', options=['tmargin=1cm',
                                                 'lmargin=10cm']))

with doc.create(Section('The simple stuff')):
    doc.append('Some regular text and some ' + italic('italic text. '))
    doc.append(escape_latex('\nAlso some crazy characters: $&#{}'))
    with doc.create(Subsection('Math that is incorrect')) as math:
        doc.append(Math(data=['2*3', '=', 9]))

    with doc.create(Subsection('Table of something')):
        with doc.create(Table('rc|cl')) as table:
            table.add_hline()
            table.add_row((1, 2, 3, 4))
            table.add_hline(1, 2)
            table.add_empty_row()
            table.add_row((4, 5, 6, 7))

a = np.array([[100, 10, 20]]).T
M = np.matrix([[2, 3, 4],
               [0, 0, 1],
               [0, 0, 2]])

with doc.create(Section('The fancy stuff')):
    with doc.create(Subsection('Correct matrix equations')):
        doc.append(Math(data=[Matrix(M), Matrix(a), '=', Matrix(M*a)]))

    with doc.create(Subsection('Beautiful graphs')):
        with doc.create(TikZ()):
            plot_options = 'height=6cm, width=6cm, grid=major'
            with doc.create(Axis(options=plot_options)) as plot:
                plot.append(Plot(name='model', func='-x^5 - 242'))

                coordinates = [
                    (-4.77778, 2027.60977),
                    (-3.55556, 347.84069),
                    (-2.33333, 22.58953),
                    (-1.11111, -493.50066),
                    (0.11111, 46.66082),
                    (1.33333, -205.56286),
                    (2.55556, -341.40638),
                    (3.77778, -1169.24780),
                    (5.00000, -3269.56775),
                ]

                plot.append(Plot(name='estimate', coordinates=coordinates))

    with doc.create(Subsection('Cute kitten pictures')):
        with doc.create(Figure(position='h!')) as kitten_pic:
            kitten_pic.add_image('docs/static/kitten.jpg', width='120px')
            kitten_pic.add_caption('Look it\'s on its back')

doc.generate_pdf()

Future development

I will keep adding functionality I need to this library.

If you add a feature yourself, or fix a bug, please send a pull request. The code is not very difficult and mostly speaks for itself. If you have a question just let me know.

You can submit issues and I will probably respond quite quick. However, it might take a lot more time for me to fix something. I also have a job, education and a personal life to worry about. If you want something done try to fix it yourself as well. Accepting pull requests costs way less time.

Support

This library is being developed in and for Python 3. Because of a conversion script the current version also works in Python 2.7. For future versions, no such promise will be made. Python 3 features that are useful but incompatible with Python 2 will be used. If you find a bug for Python 2 and it is fixable without ugly hacks feel free to send a pull request.

The platform this library is developed for is Linux. I have no intention to write fixes or test for platform specific bugs with every update. Pull requests that fix those issues are always welcome though.

Metadata

Release files for PyLaTeX 0.7.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for PyLaTeX 0.7.0
File Size Uploaded
PyLaTeX-0.7.0.tar.gz 22.1 kB Details

Release files / PyLaTeX-0.7.0.tar.gz

Download URL PyLaTeX-0.7.0.tar.gz
Size 22.1 kB
Tags Source
SHA-256 checksum
How to use checksums
cb633501c018dfcb31102264bbc811fd7ff4a2f7769c4fc39fd11556aa7f1f54
BLAKE2b-256 checksum
How to use checksums
200c92ff3b8ca66b4a81dfaa1b86b124c1d03c7a27615bc20484a04bc18b8668
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No

Release history Release notifications | RSS feed

1.4.2

1 release file

1.4.1

1 release file

1.4.0

1 release file

1.3.4

1 release file

1.3.3

1 release file

1.3.2

1 release file

1.3.1

1 release file

1.3.0

1 release file

1.2.1

1 release file

1.2.0

1 release file

1.1.1

1 release file

1.1.0

1 release file

1.0.0

1 release file

0.8.0

1 release file

0.7.1

1 release file

This release

0.7.0 This release

1 release file

0.6.1

1 release file

0.6

1 release file

0.5

1 release file

0.4.2

1 release file

0.4.1

1 release file

0.4

1 release file

0.3.2

1 release file

0.3.1.1

1 release file

0.3.1

1 release file

0.2.2.1

1 release file

0.2.2

1 release file

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page