我们可以把 DVI 或 PostScript 转换成 TeX 吗?

我们可以把 DVI 或 PostScript 转换成 TeX 吗?

基本上,问题是 - 如果我们有一个 DVI 文件,我们能否在此基础上获取原始的 TeX 文件?

答案1

答案很简单,不是。如果你有 dvi 并且丢失了 TeX,可以使用诸如 之类的工具dvi2tty来提取文本和部分段落结构,但通常你必须手动重新添加标记。

答案2

有点类似于反汇编已编译的可执行文件:是的,技术上它可以做到 - 但你将丢失原始 TeX 源中包含的大量信息。

例如,DVI 包含文本“另请参阅第 11.2 章”。

您也许能够将其再次转换为文本,但其最初的书写信息see also chapter \ref{sec:FooBar}将不可挽回地丢失。

既然如此,我认为没有人曾经努力编写这样的 DVI 到文本转换器,因为这种文本的可用性会受到严重限制。

答案3

不,从技术上来说不能完成。DVI、PDF 和 postscript 包含按照 (La)TeX 文档中的说明排列在页面上的文本。您可以提取文本,也可以尝试猜测生成类似页面的命令,甚至可能猜得很好。但您是通过匹配结果来做到这一点的。例如,如果文本中有一个数字,您永远无法确定它是逐字输入的还是来自 TeX 计数器。想象一下吃蛋糕并试图重建食谱:如果您很擅长,您可以识别成分并猜测很多关于做什么,但食谱本身并非如此蛋糕。

尽管有些人这么说,但这完全不像反汇编:可执行代码包含算法,而反汇编只是将其转换为人类可读的语言。从 dvi 到 LaTeX 更像是尝试从其输出重建 C 程序:逆向工程是一个更好的术语。

答案4

从技术上来说,获取可编译为给定的 DVI 或 PS 文件的 Tex 文件并非不可能。

对于简单的文档,可以设计一种方法,首先对 DVI 或 PS 文件执行 OCR,然后将结果转换为 Tex 文件。通过重新编译 Tex 文档并将结果与​​ DVI 或 PS 文件进行比较,可以识别出错误,然后通过迭代几个可能的字符来纠正错误。

但对于复杂的文档来说,这个程序可能不够用。

编辑:这是一个概念证明:http://www.inftyreader.org/

相关内容