包含原始页面图像以供并排比较 + SyncTex

包含原始页面图像以供并排比较 + SyncTex

我正在使用 latex 从 archive.org PDF 复制一本书。出于 QA 目的,我希望并排显示原始页面和 latex 排版页面,要求如下:

  1. synctex 可以工作,所以我可以直接从 pdf 跳转到源文件来修复问题(我使用 TeXstudio)。
  2. 页码(例如 folio,而不是 pdf-pagenum)不会改变。
  3. 排版不会因为图像的加入而发生改变。

然而,到目前为止我尝试过的每种方法都存在一个或多个问题,所以在这里我寻求明智的建议。

有关工作流程的更多信息

生成 .tex 源代码的过程主要通过脚本自动完成。我决定pageXXX.tex每页一个,按部分和章节收集到目录中,这样我就可以单独工作和排版。通过插入\linebreak任何地方,可以保留原始换行符。通过匹配页面几何形状和字体大小,可以隐式处理分页符。在每页上包含一些自定义 tex 代码不是问题。

我尝试过的方法(按尝试顺序)

  • 方法#1:使用 pdftk 对原始页面进行交错。
    • 优点:
      • 乳胶排版不受影响。
      • 操作简单,无需更改 .tex 文件
    • 问题:
      • 破坏了 synctex(我记得),因为页码被更改了。
      • 在更正之前,单页page.tex经常会溢出到下一页。每次发生这种情况时,所有后续页面图像都会相对于排版页码发生偏移,并出现在错误的位置。
  • 方法二:调用pdfpageseverypageXXX.tex并在页面后插入原始页面。
    • 优点:
      • pageXXX.tex由于每个新文件都需要特定的页码,因此可以保留页面图像和页面之间的同步,
    • 问题:
      • 调用 pdfpages 会强制创建一个新的段落,从而改变排版。
      • 有时会导致出现本来不会出现的幽灵页面或孤立页面。
      • 与 lettrine 的奇怪交互:pageWithDropCap+pdfpage 有时会导致下一页出现首字下沉形的“洞”。
      • pdfpages 修改了页面计数器,这必须通过更脆弱的黑客来纠正。
  • 方法 3:将页面宽度加倍,并使用 ++atbegshi将额外空间用于图像[absolute]textpos\includegraphics
    • 优点:
      • 页码和排版未修改
      • 每个页面都要求一张特定的图像,如果页面溢出,则不会出现同步漂移问题。
    • 问题:
      • \AtBeginShipoutNext我在每个 的顶部都包含pageXXX.tex,但实际发货是在 latex 决定这样做时发生的。有时似乎在 的最后一行之后pageXXX.tex,有时仅在查看下一个 的第一行之后pageXXX.tex,而不将该行包含在页面中。结果是\AtBeginShipoutNext被挤压在一起并应用于单个页面,结果令人遗憾。

我愿意接受任何替代方案,但最后一种方法应该如果我能确保在每页末尾都有(单个)发货,那么效果会非常好。我尝试过手动包含,\pagebreak[4]但有时这会导致出现额外的空白页,具体取决于 latex 是否已经确定页面已满并发货。

我也尝试使用该needspace包来尝试即兴制作一个“幂等”分页符,但事情似乎并没有按预期进行(虚假的段落分隔符、垂直间距问题)

我提供了尽可能多的细节,希望这些信息能够对从事类似项目的其他人有所帮助。

答案1

根据 Sean 的想法,我提出了一个可行的解决方案,对 pdf 输出进行后期处理,然后更新文件.synctex

使用原始 SyncTex 数据(以及C 解析器由 jerome laurens 提供),很容易找出每个 pageXXX.tex 的第一行在 pdf 输出中的位置,然后通过合并 latex 版本 pdf 和原始页面图像 pdf 中的整个页面,轻松生成 2up 版本。

生成更新的.synctex文件也相对简单。由于输出中保留了整个页面,并且只有其 pdf 页码会发生变化,因此只需更新文件中的页码即可。SyncTeX 规范很有用,格式也很简单(基于文本和面向行的格式万岁!)。

完成后,一切都运行良好,乳胶输出未受影响,pdf /源同步完美运行,页面自动匹配输出,生成时间不到一秒钟。

输出示例(左侧为 Latex 页面,右侧为图像):

在此处输入图片描述

相关内容