我正在尝试将 .tex 文件转换为 .txt 文件,以便可以直接将其复制粘贴到仅支持 MathJax 的环境中。例如博客、Mathematics Stackexchange、stackedit.io 等。
但是我对用户定义的环境(如定理、定义等)遇到了问题。
\begin{proof}
Example
\end{proof}
在 Latex 编辑器中,pdf 将被呈现为
证明。 例子
但使用代码将其转换为 .txt 后,pandoc -o output.txt input.tex
输出结果如下
例子
它缺少标题。类似地,其他用户定义的环境也缺少各自的标题。
有没有什么方法可以让 Pandoc 在开头添加单词“证明”或对应于环境的标题?
答案1
简短的回答:不。
长答案:
自动脚本知道输出应该包含单词“Proof”的唯一方法是:
1)这些知识在脚本中是硬编码的。它知道一些 latex 命令和环境的含义(pandoc 所采用的方式)
2)它可以运行 tex 代码并获取输出(例如通过 t4ht 获取)
第一种方法不够灵活,因为您可以加载脚本不知道的包,并且定义将被忽略的命令(此外,您的文档也可以定义您自己的命令)。
第二种方法可以通过pdflatex
一些“pdf 到文本”转换器,或通过latex
,dvi2tty
或通过 来完成tex4ht
。无论如何,它都会丢失原始的 tex 标记,如果您想保留数学公式的“代码”,那么这种方法就不合适了。
让我们看一个例子。考虑以下文档:
\documentclass{article}
\usepackage{nopageno} % No page numbers
\usepackage{amsthm}
\begin{document}
\begin{proof}
This is a proof
\[
\sum_{i=0}^\infty x^2
\]
\end{proof}
\end{document}
通过标准运行pdflatex
你会得到:
如果你运行它
pandoc
,你会得到以下结果.txt
:This is a proof $$\sum_{i=0}^\infty x^2$$
其中你失去了“证明”这个词,以及最后的证明结束标记,但它保留了公式标记。
如果你运行它
pdflatex
然后pdftotxt
你得到:Proof. This is a proof ∞ x2 i=0
保留了“证明”一词,但完全打乱了公式
如果你运行它
latex
然后dvi2tty
,你会得到:Proof. This is a proof 1X x2 i=0 |___|
它更接近 pdf 输出,但仍然丢失公式标记。
如果你运行它,
tex4ht
你会得到该文档的 HTML 版本,然后可以通过pandoc
以下方式处理它.txt
:Proof. This is a proof ∞ ∑ i=0 x2 \_\_
正如你所见,没有一个解决方案是令人满意的。
答案2
由于 Pandoc 不会“读取” TeX,而只会“写入”它,因此可能不行。
不过,你最好在pandoc 讨论组真正的专家聚集的地方。