所有可以想象的 TeX 程序都可以直接生成除 .dvi 或 .pdf 之外的输出,例如 .rtf/.doc/.docx

所有可以想象的 TeX 程序都可以直接生成除 .dvi 或 .pdf 之外的输出,例如 .rtf/.doc/.docx

Donald E. Knuth 的 TeX 输出 .dvi 文件。Hàn
Thế Thành 的 pdfTeX 输出 .pdf 文件。
或 docTeX 或 docxTeX 程序是否可以代替 .dvi 或 .pdf直接地输出 Word .rtf 或 .doc 或 .docx 文件?
如果不能:为什么不可能?是否由于所考虑的输出格式的特性而导致不可能,因此不值得进一步考虑这个方向?
是否存在关于 rtf/doc/docx 等输出格式专有的问题?

答案1

根据 Ulrich D. 的建议:

有几个问题。最基本的层面,Ulrich 已经讨论过了,是工作流程的问题。但即使这不是问题,也存在语法难题。TeX 主要用于数学。文字处理器不是。想象一下做代数拓扑的人和做后现代文学解构的人之间的对话。底层术语非常不同。你不能在它们之间“转换”。

如果您只将 TeX 用于文学作品,其中除了偶尔出现的大号字体或斜体之外,标记几乎不涉及其他内容,那么删除一些标准 TeX 宏并插入 XML 是合理的。如果您的 XML 样式表非常有限,则可能可以删除 XML 并插入 TeX 标记。我相信已经有人这样做了,但结果(对我来说)未知。

但这还不够好。从 TeX 转换为 XML 只需要在非常有限的上下文中使用非常有限的 TeX 宏,并且不需要自定义宏。从文字处理器输出(可能是 XML)转换为 XML 非常麻烦,因为 XML 比它需要的要复杂得多。例如,以可能是最简单的文字处理器 AbiWord 为例。它的原生 *abw 格式是 XML,可以作为纯文本读取。然而,即使是对于简单的“hello World”文本文档,它也令人难以置信。

最后……即使能做到这一切,打印结果也会有所不同。TeX(及其变体)和各种文字处理器使用算法来确定每个字符在页面上的打印位置。这些算法各不相同,而且很可能是专有的。因此,打印结果看起来会有所不同,甚至可能有不同的段落分隔和分页。如果有活动内容(链接等)或表格,情况会变得更糟。

最好的办法是手动从文档中删除 TeX 代码,然后发送纯文本。让文字处理器导出为纯文本。

编辑:

比较:你好,世界。

纯文本:14 个字节,包括最后的行尾。

AbiWord 文档,可读为纯文本 XML:2468 字节。

HTML,从 AbiWord 导出(带有样式):1416 字节。

HTML,以上手动编辑为最少标记,无样式:253 字节。

富文本格式:2472 字节。

来自 AbiWord 的 PDF:5561 字节。

超小型 helloworld.tex:70 字节。

以上编译的PDF:3390字节。

答案2

大约 25 年前,我也考虑过这个问题,并得出结论:这样做的好处是有限的:

文字处理器提供文本的输入、编辑、格式化和输出功能。[1]
因此,文字处理器的输入文件和输出文件相同。文字处理器的输入/输出文件 (.rtf/.doc/.docx) 可直接使用文字处理器进行编辑。

TeX 不是文字处理器。TeX 是排版程序,提供文本的输入(即读取 .tex 输入文件)、格式化和输出,但不提供编辑功能。输入文件和输出文件并不相同。TeX 的输出文件 (.dvi/.pdf) 并非旨在让用户轻松直接编辑。相反,用户可以编辑 .tex 输入文件并(重新)编译。

这两个工作流程不太兼容:

假设两个人在同一个项目上工作。
其中一个人使用假设的程序 docxTeX 并编辑 .tex 输入文件并(重新)编译以获取 .docx 输出。
另一个人不使用 .tex 输入文件,而是在 Libre Office 或 Word 等文字处理器中编辑 .docx 文件。
另一个人对 .docx 文件的更改不会反映在 .tex 输入文件中。
因此,.tex 输入文件和 word 文件很容易不同步。

所以当时我得出的结论是,由于修改最终输出文件内容的两个工作流程不兼容,思考实现这样的程序是否可行的问题是不值得的。

参考:
[1] 维基百科贡献者,“文字处理器”,维基百科,自由的百科全书,https://en.wikipedia.org/w/index.php?title=Word_processor&oldid=1175641306(2023 年 9 月 21 日访问)。

相关内容