【发布时间】:2011-01-25 09:58:38
【问题描述】:
我有几个 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,最后处理与 \frac 等 txt 相关的宏......甚至可以使用适当的括号!好吧,我可以梦想......现在正则表达式并没有做那么糟糕的工作。
【问题讨论】:
-
你是对的,TeX 的 pyparsing 是一件残酷的事情,但其他人已经在这方面取得了一些进展。 matplotlib 包含一个 pyparsing TeX 解析器,您也许可以根据自己的目的进行调整。您也可以尝试在 pyparsing 邮件列表上发帖,看看过去做过 TeX 工作的人是否可以提供帮助。
-
谢谢:我先看看 matplotlib... 这也是我的一个包的预先存在的依赖项,所以如果我 非常 幸运的话,我可以使用它通过mpl API!干杯:)