使用Python语法产生LaTex文档的函数库:PyLaTeX
jopen
10年前
PyLaTeX使用Python语法产生LaTex文档的函数库。LaTeX是一种基于TEX的排版系统。PyLaTeX可以使用Python相对容易的语法产生LaTex文档片段,或者全文档。
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()
特性:
-
Document generation and compilation
-
Section, table, math, figure 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
依赖:
-
Python 3.x or Python 2.7
-
ordered-set
安装:pip install pylatex