📜  Python中的pylatex模块

📅  最后修改于: 2022-05-13 01:54:44.711000             🧑  作者: Mango

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 的一些特点是:

  1. 准备期刊文章、技术报告、技术或非技术书籍,以及幻灯片演示。
  2. 它可以更好地控制包含切片、参考、表格和图形的大型文档。
  3. 它还可用于准备包含复杂数学公式的文档。
  4. 在 LaTeX 中,书目和索引的生成是自动的。
  5. 它还提供多语言排版支持。
  6. 在 Latex 文档中,我们还可以添加图形、艺术品、印刷色或专色。
  7. 在 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)

输出 :