gpt4 book ai didi

python - 以编程方式将 LaTeX 代码转换/解析为纯文本

转载 作者:太空狗 更新时间:2023-10-29 22:27:57 30 4
gpt4 key购买 nike

我有几个 C++/Python 代码项目,其中 LaTeX 格式的描述和标签用于生成 PDF 文档或使用 LaTeX+pstricks 制作的图表。然而,我们也有一些纯文本输出,例如文档的 HTML 版本(我已经有代码为此编写最小标记)和不支持 TeX 的绘图渲染器。

对于这些,我想消除例如必要的 TeX 标记。代表物理单位。这包括不间断(细)空格、\text、\mathrm 等。将\frac{#1}{#2} 之类的内容解析为 #1/#2 用于纯文本输出(以及对 HTML 使用 MathJax)。由于我们目前拥有的系统,我需要能够从 Python 执行此操作,即理想情况下我正在寻找一个 Python 包,但我正在寻找一个非 Python 可执行文件可以从 Python 调用并捕获输出字符串也可以。

我知道 similar question on the TeX StackExchange site ,但没有任何真正的编程解决方案:我看过 detex、plasTeX 和 pytex,它们看起来都有点死了,并没有真正做我需要的事情:将 TeX 字符串编程转换为代表纯文本字符串。

我可以尝试使用例如编写一个基本的 TeX 解析器pyparsing,但是 a) 这可能充满陷阱,我们将不胜感激,并且 b) 肯定有人以前尝试过,或者知道一种方法可以连接到 TeX 本身以获得更好的结果?

更新:感谢您的所有回答……这确实是一个有点尴尬的请求!我可以用比一般的 LaTeX 解析更少的方式来解决问题,但是考虑解析器而不是在循环中加载正则表达式的原因是我希望能够很好地处理嵌套宏和多参数宏,并获得大括号匹配才能正常工作。然后我可以首先减少与 txt 无关的宏,如\text 和\mathrm,然后处理与 txt 相关的宏,如\frac 最后...甚至可能使用适当的括号!好吧,我可以梦想......现在正则表达式并没有做这么糟糕的工作。

最佳答案

我知道这是一篇旧文章,但由于这篇文章经常出现在 latex-python-parsing 搜索中(由 Extract only body text from arXiv articles formatted as .tex 证明),所以把它留给下面的人:这是 Python 中的 LaTeX 解析器,它支持搜索和修改解析树,https://github.com/alvinwan/texsoup .取自自述文件,这里是示例文本以及如何通过 TexSoup 与之交互。

from TexSoup import TexSoup
soup = TexSoup("""
\begin{document}

\section{Hello \textit{world}.}

\subsection{Watermelon}

(n.) A sacred fruit. Also known as:

\begin{itemize}
\item red lemon
\item life
\end{itemize}

Here is the prevalence of each synonym.

\begin{tabular}{c c}
red lemon & uncommon \\
life & common
\end{tabular}

\end{document}
""")

这是导航解析树的方法。

>>> soup.section  # grabs the first `section`
\section{Hello \textit{world}.}
>>> soup.section.name
'section'
>>> soup.section.string
'Hello \\textit{world}.'
>>> soup.section.parent.name
'document'
>>> soup.tabular
\begin{tabular}{c c}
red lemon & uncommon \\
life & common
\end{tabular}
>>> soup.tabular.args[0]
'c c'
>>> soup.item
\item red lemon
>>> list(soup.find_all('item'))
[\item red lemon, \item life]

免责声明:我写了这个库,但出于类似的原因。关于 Little Bobby Tales 的帖子(关于 def),TexSoup 不处理定义。

关于python - 以编程方式将 LaTeX 代码转换/解析为纯文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4792065/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com