我知道如何从 LaTeX 制作 PDF。有没有办法从我之前创建的 PDF 中提取 LaTeX 代码?如果有人给我发一份 PDF,我喜欢这种格式,那怎么样?我可以从中提取 LaTeX 吗?
9 回答
LaTeX 没有到 PDF 的一对一转换。关于您的第一个问题,我相信这种转换在技术上是可行的,但我认为目前尚不存在这样做的应用程序。类似于汇编程序可以反编译回高级语言的方式,可能有一种方法可以做到这一点。然而——一个pdf允许包含所有类型的数据——AutoCAD绘图、JPEG图形、字体文件、表格、数字签名等。LaTeX不知道这些东西是什么。所以第二个问题的答案是否定的——没有办法从任何 PDF 文档中提取等效的 LaTeX。
有一个工具可以像 OCR 一样读取 PDF 文件并尝试重新创建 Latex 代码。它近乎完美,被称为“Infty Reader”!因为 Latex 是相当可扩展的,所以我认为它并不是所有的格式都是正确的。
只有将文档的源代码嵌入到 PDF 文件中才有可能。请参阅附件包以执行此操作。
短版:没有。
长版:这很像反编译:从技术上讲你可以,但它会涉及很多猜测和启发式方法。
我不熟悉 PDF 的内部结构,但它可能会直接设置字体/大小/位置,而不是像在 LaTeX 中那样定义格式并将其应用于标题等。
使用 pdftohtml 和 gnuhtml2latex 可以将您的 PDF 转换为 HTML 并将您的 HTML 转换为 TEX。
实际上,您分两步进行 PDF 到 LaTeX 的转换。结果仍然像“用汉堡包做牛”,但结合一些清理脚本,结果可能相当不错。
GlobalBlindSpot 上的博客文章“ Linux 中的基本 PDF 到 LaTeX 转换”有一个示例 Bash 脚本,可以将 .pdf 转换为 .tex 文件,然后再将那个转换为 .pdf 文件。
Inkscape 可以导入 PDF,然后另存为“带有 PSTricks 宏的 LaTeX”,这实际上是通过将 PostScript 嵌入到 LaTeX 源中来工作的。它比它的价值更麻烦,并且生成的 Latex 源必须经过预处理才能再次输出为 PDF。
无论如何,即使有一些假设的 PDF 到 LaTeX 编译器,充其量你会得到一些东西,其中每个字符或单词的位置和大小是单独指定的 - 与你想要的相反,我猜这是一个分母是分数的一半,而不是水平线下方的某个数字。
请参阅我对相关问题的回答(如何将 DVI 转换为 tex?)
放大 - 不需要字符按阅读顺序排列(我发现 PDF 是 sdrawkcab sdaer txet 的一部分(并且依赖于坐标)。这很难重构,因为它可能取决于字体指标。哪个可以使用骇人听闻的 ASCII86 协议。
从 pdf 文件(由于其复杂的格式)中进行数据挖掘的最佳方法是使用 adobe illustrator 打开它们。然后将 pdf 文件转换为 svg 文件并使用 svg 解析器库自己编写一些棘手的代码。
一种有效的 svg 解析器库是batik
(对于 Linux,将 pdf 转换为 svg 相当复杂:calcmaster.net/personal_projects/pdf2svg/)
PS我一直在努力寻找问题的第二部分的解决方案,但我已经在诸如“可视化数据,Ben Fry,O'Reilly”之类的书中发现,pdf尤其是Adobe pdf解析起来很复杂,所以改为使用 svg 解析器库。
它可以与texmacs一起使用,其中包括 pdf 文件的导入。