【问题标题】:Generate TeX/LaTeX file and compile both in Python生成 TeX/LaTeX 文件并在 Python 中编译
【发布时间】:2015-02-14 16:16:00
【问题描述】:

我正在准备一个数据处理代码,并将这些结果提供给 TeX/LaTeX 文件,该文件将由 Python 编译(即 Python 应该发送命令来编译 TeX/LaTeX 文件)

目前我计划用 TeX/LaTeX 的必要语法生成一个文本文件(扩展名为 .tex),然后使用 os.system 调用外部系统命令。有没有更简单的方法或模块可以做到这一点?

【问题讨论】:

  • starship.python.net/crew/bhoel/PyLaTeX-0.2/html/… ,但我不知道它目前的支持情况如何(Python 的版本等)。
  • 根据 LaTeX 文档的复杂程度,您可能需要多次运行 pdflatex(可能还有其他工具)。因此,如果您的 TeX 发行版包含 latexmk,则更好的解决方案是调用它。这将解决所有这些问题。

标签: python latex tex pdflatex


【解决方案1】:

不存在这样的 Python 模块,但您可以尝试使用扩展名为 .tex 的文本文件的所需语法生成文本文件,并通过使用 Python 运行系统命令来编译它:

import os
os.system("pdflatex filename")

【讨论】:

  • 文档中建议改用subprocess模块。此外,最好检查返回值和/或输出以查看是否需要再次运行 pdflatex。
【解决方案2】:

您可以为此使用 PyLaTeX。这正是它的用途之一。 https://github.com/JelteF/PyLaTeX

【讨论】:

  • pyLatex 也需要一个编译器,有没有一种无需在系统上安装任何额外的包就能生成的方法?
【解决方案3】:

确保您已在系统中安装 PerlMikTeX(用于支持 latexmkpdflatex 编译器)。

如果没有,你可以从https://www.perl.org/get.html下载Perl

和来自https://miktex.org/downloadMikTeX

也不要忘记查看http://mg.readthedocs.io/latexmk.html#installation,因为它很好地指导了 Latex 编译器。

我有document.tex,内容如下。

\documentclass{article}%
\usepackage[T1]{fontenc}%
\usepackage[utf8]{inputenc}%
\usepackage{lmodern}%
\usepackage{textcomp}%
\usepackage{lastpage}%
%
%
%
\begin{document}%
\normalsize%
\section{A section}%
\label{sec:A section}%
Some regular text and some %
\textit{italic text. }%
\subsection{A subsection}%
\label{subsec:A subsection}%
Also some crazy characters: \$\&\#\{\}

%
\end{document}

最后创建任意python文件并粘贴以下任意一段代码并运行。

第一种方式

# 1st way
import os

tex_file_name = "document.tex";
os.system("latexmk " + tex_file_name + " -pdf");

第二种方式

# 2nd way
import os

tex_file_name = "document.tex";
os.system("pdflatex " + tex_file_name);

对于编译复杂的 Latex 文件,您需要寻找通过latexmkpdflatex 命令传递的额外选项。

谢谢。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多