hyperref 错误链接:如何调试?

hyperref 错误链接:如何调试?

问题陈述。我正在编写一个大型文档,由于篇幅过大,无法在此提供示例。对于前 100 页左右,超链接与显示的文本正确匹配。例如,文本可能指向第 55 页,超链接也会将 PDF 查看器定向到该页面。但是,在某个时候,超链接开始指向文档中更早的错误页面。例如,链接可能指向第 8 页,但显示的文本可能正确指向第 80 页。(在整个文档中,显示参考资料(例如页码或章节编号)仍然正确。超链接在某些地方损坏了。

问题。有没有办法调试使用该hyperref包的文档,以找出发生此类事情的原因?

答案1

  1. 清理编译(删除所有辅助文件并从​​头开始执行 latex-bibtex-latex-latex 等操作)
  2. 删除/关闭尽可能多的软件包。有些软件包可能与其他软件包冲突
  3. 将文档缩小到能显示问题的最小样本
  4. 谷歌=)
  5. Grep *.log 文件并交互运行 latex 查看是否存在问题。

ps. 插入 pdfpages 可能会打乱页码顺序。

答案2

如果您使用 git 来存储文档并定期提交,那么使用 是一种极好的调试方法git bisect

首先,在查看有问题的版本(即 HEAD 中的最新提交)时,启动 bisect,并告诉它存在问题:

git bisect start
git bisect bad

然后,使用git loggit checkout <commit-hash>找到一个有效的旧提交。无论多旧都没关系,但一定要确保重新编译并检查!

接下来,使用git bisect good告诉 git 您找到了一个好的版本。然后 Git 将检出介于两者之间的一个版本。编译此版本。检查它是好是坏,并​​适当地告诉 git git bisect [good|bad]:。

重复最后一步,直到 git 告诉你它找到了有问题的提交。它会将你吐回到 HEAD,并给你一个提交哈希,你可以使用它来查看 发生了什么变化git show <commit-hash> [file name]。一旦你发现差异,你可以尝试恢复它。

如果您只是在进行大量提交之后才注意到问题,那么这可能真的是一个救星。

相关内容