我正在使用 latex 从 archive.org PDF 复制一本书。出于 QA 目的,我希望并排显示原始页面和 latex 排版页面,要求如下:
- synctex 可以工作,所以我可以直接从 pdf 跳转到源文件来修复问题(我使用 TeXstudio)。
- 页码(例如 folio,而不是 pdf-pagenum)不会改变。
- 排版不会因为图像的加入而发生改变。
然而,到目前为止我尝试过的每种方法都存在一个或多个问题,所以在这里我寻求明智的建议。
有关工作流程的更多信息
生成 .tex 源代码的过程主要通过脚本自动完成。我决定pageXXX.tex
每页一个,按部分和章节收集到目录中,这样我就可以单独工作和排版。通过插入\linebreak
任何地方,可以保留原始换行符。通过匹配页面几何形状和字体大小,可以隐式处理分页符。在每页上包含一些自定义 tex 代码不是问题。
我尝试过的方法(按尝试顺序)
- 方法#1:使用 pdftk 对原始页面进行交错。
- 优点:
- 乳胶排版不受影响。
- 操作简单,无需更改 .tex 文件
- 问题:
- 破坏了 synctex(我记得),因为页码被更改了。
- 在更正之前,单页
page.tex
经常会溢出到下一页。每次发生这种情况时,所有后续页面图像都会相对于排版页码发生偏移,并出现在错误的位置。
- 优点:
- 方法二:调用
pdfpages
everypageXXX.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 /源同步完美运行,页面自动匹配输出,生成时间不到一秒钟。