Python中的pylatex模块
乳胶 :
Latex 发音为“Lay-tech”,是一种用于高质量文档的文档制作系统。它主要用于技术或科学文件的准备,但它几乎可以用于所有形式的出版。 Latex 不是像 MS Word 或 LibreOffice Writer 这样的文字处理器。相反,Latex 鼓励作者不要担心文档的外观,而是专注于获取正确的内容。例如,考虑以下文档:
This article explains the use of pylatex module
GeeksforGeeks
October 2018
要在大多数文字处理器中生成这个,作者必须决定使用什么布局,所以会选择(假设) 18pt Helvetica
作为标题, 12pt Times Roman
作为名称,等等。这导致作者浪费时间设计文档。 Latex 的理念是让作者继续编写文档并将文档的设计留给文档设计者。因此,在 Latex 中,您可以将上述文档输入为:
\documentclass{article}
\title{This article explains use of pylatex module}
\author{GeeksforGeeks}
\date{October 2018}
\begin{document}
\maketitle
Continue reading
\end{document}
乳胶文件的布局:
Latex 文档有两个主要部分:
序言:
- 序言是乳胶文件的第一部分。
- 它包含有关文档的详细信息,例如文档类、作者姓名、标题等
身体 :
- 在 Latex 文档的正文部分,可以包含部分、表格、数学方程式、图表等
- 文档的所有内容都在一个 '\begin{document}' 和一个 '\end{document}' 中
Latex 的一些特点是:
- 准备期刊文章、技术报告、技术或非技术书籍,以及幻灯片演示。
- 它可以更好地控制包含切片、参考、表格和图形的大型文档。
- 它还可用于准备包含复杂数学公式的文档。
- 在 LaTeX 中,书目和索引的生成是自动的。
- 它还提供多语言排版支持。
- 在 Latex 文档中,我们还可以添加图形、艺术品、印刷色或专色。
- 在 LaTeX 中也可以使用 PostScript 或 metafont 字体。
LaTeX 文档示例:
示例 1:在此示例中,我们形成了一个简单的乳胶,以便从乳胶中提取,我们使用乳胶中使用的简单输入格式。
\documentclass{article}%
\usepackage[T1]{fontenc}%
\usepackage[utf8]{inputenc}%
\usepackage{lmodern}%
\usepackage{textcomp}%
\usepackage{lastpage}%
\usepackage[tmargin=1cm, lmargin=10cm]{geometry}%
\usepackage{amsmath}%
\usepackage{tikz}%
\usepackage{pgfplots}%
\pgfplotsset{compat=newest}%
\usepackage{graphicx}%
%
%
%
\begin{document}%
\normalsize%
\section{The regular stuff}%
\label{sec:The regular stuff}%
Some text and some%
\textit{italic text. }%
\newline%
Also some crazy symbols: \$\&\#\{\}%
\subsection{Incorrect math}%
\label{subsec:Incorrect math}%
\[%
2*3 = 22%
\]
%
\end{document}
输出:
示例 2:在此示例中,我们使用标签、小节来形成乳胶。
\documentclass{article}%
\usepackage[T1]{fontenc}%
\usepackage[utf8]{inputenc}%
\usepackage{lmodern}%
\usepackage{textcomp}%
\usepackage{lastpage}%
\usepackage[tmargin=1cm, lmargin=10cm]{geometry}%
\usepackage{amsmath}%
\usepackage{tikz}%
\usepackage{pgfplots}%
\pgfplotsset{compat=newest}%
\usepackage{graphicx}%
%
%
%
%
\subsection{Table}%
\label{subsec:Table}%
\begin{tabular}{rc|cl}%
\hline%
a&b&c&d\\%
\cline{1%
-%
2}%
&&&\\%
e&f&g&7h\\%
\end{tabular}
%
\section{Special features}%
\label{sec:Special features}%
\subsection{Correct matrix equations}%
\label{subsec:Correct matrix equations}%
\[%
\begin{pmatrix}%
1&4&4\\%
2&3&4\\%
2&2&5%
\end{pmatrix} \begin{pmatrix}%
800\\%
30\\%
30%
\end{pmatrix} = \begin{pmatrix}%
810\\%
60\\%
50%
\end{pmatrix}%
\]
%
\end{document}
输出 :
什么是 Pylatex :
PyLaTeX 是一个用于创建和编译 Latex 文档的Python库。这个库的目标是简单但也提供Python和 Latex 之间的可扩展接口。
pylatex 的一些特点是:
- 我们可以使用这个模块在Python中访问 LaTeX 的所有功能
- 我们可以用更少的代码行制作文档
- 由于Python是一种高级语言,因此与 LaTeX 相比,在Python中为 pylatex 编写代码更容易
- 在上面的 LaTeX 代码中,您一定已经看到,要给出方程式,我们必须计算值,然后输入到 LaTeX 文档中,但是使用 python 的附加功能来执行算术运算,准备文档要容易得多
创建一个 Pylatex 文档:
- 在您的系统中安装 MikTeX 和 pylatex 模块并将其导入Python代码。
要在您的系统上安装 MikTeX,请访问:https://miktex.org/download
要在基于 Windows 的操作系统上安装 pylatex,请在命令提示符下输入以下命令:
python -m pip install pylatex
- 从 pylatex 模块创建文档导入文档类。在乳胶中有不同的文档类型:文章、报告、信件等。要创建文章类型的文档,请创建乳胶文档类的对象并作为参数传递“文章”
doc=Document(documentclass='article')
- 要在文档中添加必要的更改(例如样式或格式),请从 pylatex 导入Python代码中所需的类。要使用 pylatex 在 Latex 文档中添加不同的实用程序,以下方式是可行的
from pylatex import Document, Section, Subsection from pylatex.utils import italic, bold
- 要生成文档的 PDF 文件,请使用 Document 类的对象调用 Document 类的 generate_pdf 方法,并确保以这种方式在其参数中传递 pdf 文档的名称
doc.generate_pdf("Demo_article")
Pylatex 示例:
代码 1:
# Python program creating a
# small document using pylatex
import numpy as np
# importing from a pylatex module
from pylatex import Document, Section, Subsection, Tabular
from pylatex import Math, TikZ, Axis, Plot, Figure, Matrix, Alignat
from pylatex.utils import italic
import os
if __name__ == '__main__':
image_filename = os.path.join(os.path.dirname(__file__), 'kitten.jpg')
geometry_options = {"tmargin": "1cm", "lmargin": "10cm"}
doc = Document(geometry_options=geometry_options)
# creating a pdf with title "the simple stuff"
with doc.create(Section('The simple stuff')):
doc.append('Some regular text and some')
doc.append(italic('italic text. '))
doc.append('\nAlso some crazy characters: ${}')
with doc.create(Subsection('Math that is incorrect')):
doc.append(Math(data=['2*3', '=', 9]))
# creating subsection of a pdf
with doc.create(Subsection('Table of something')):
with doc.create(Tabular('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))
# making a pdf using .generate_pdf
doc.generate_pdf('full', clean_tex=False)
输出:
代码 2:
import numpy as np
from pylatex import Document, Section, Subsection, Tabular
from pylatex import Math, TikZ, Axis, Plot, Figure, Matrix, Alignat
from pylatex.utils import italic
import os
if __name__ == '__main__':
image_filename = os.path.join(os.path.dirname(__file__), 'kitten.jpg')
geometry_options = {"tmargin": "1cm", "lmargin": "10cm"}
doc = Document(geometry_options=geometry_options)
# making a matrix using numpy module
a = np.array([[100, 10, 20]]).T
M = np.matrix([[2, 3, 4],
[0, 0, 1],
[0, 0, 2]])
# creating a title using "the fancy stuff"
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)]))
# creating a subsection of pdf
with doc.create(Subsection('Alignat math environment')):
with doc.create(Alignat(numbering=False, escape=False)) as agn:
agn.append(r'\frac{a}{b} &= 0 \\')
agn.extend([Matrix(M), Matrix(a), '&=', Matrix(M * a)])
with doc.create(Subsection('Beautiful graphs')):
with doc.create(TikZ()):
plot_options = 'height=4cm, 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(image_filename, width='120px')
kitten_pic.add_caption('Look it\'s on its back')
# Creating a pdf
doc.generate_pdf('full', clean_tex=False)
输出 :