我开始showkeys
在我的某个文档中使用并看到此错误
\pdfendlink ended up in different nesting level than \pdfstartlink
谷歌搜索表明,这种情况“发生在 pdftex 下使用 hyperref 并且引用跨越页面边界时”。 (见:http://tug.org/errors.html)。
但是这个包只在起草阶段有用,因为文本经常变化,也就是说出错的几率很高。有没有一种通用的方法可以顺利使用showkeys
?hyperref
谢谢。
答案1
[draft]
我使用包定义中的选项找出了导致错误的链接的位置hyperref
,如James A. Bednar 在 2002 年发布的邮件列表帖子:
...当出现此错误时,记下 pdflatex 中止的页码,然后将“草稿”选项添加到 hyperref:
\usepackage[draft]{hyperref}
并重新编译文档。现在将生成 PDF 输出,有问题的链接应该是引用,其后半部分开始于 pdflatex 中止的页面。在稍微重新排列文本以避免换行后,可以删除 [draft] 选项。
(我尝试了 user22326 的有用建议,使用包定义[debug]
中的选项hyperref
,但是,这并没有帮助我找到导致错误的链接的位置(在日志中,或在 latex 文件中)。即使在我使用选项解决方案弄清楚之后也没有draft
。)
答案2
我使用了一种替代方法,它可以提供更好的渲染效果:
\bibliographystyle{your-format}
\interlinepenalty=10000
\bibliography{your-bibtex-file}
它可以防止引文跨两页。因此,引文中的超链接不会中断。它同时为我解决了两个问题。
答案3
我刚刚解决了一个类似的错误,方法是将有问题的引文放在 中\mbox
。你只需要找出有问题的引文在哪里,例如,通过连续注释和取消注释你的 LaTeX 文件。这对我有用,所以我希望这对其他人也有用,因为不幸的是,错误消息没有帮助(在 LaTeX 中很常见)。
答案4
如果没有 MWE,我们很难说有什么方法可以解决问题。出于显而易见的原因,我没有测试以下任何内容。
如果问题出现在以下情况下:
- showkeys 在文档末尾附近使用,那么如果在文档末尾附近使用该命令,则可以强制页面弹出。例如:(
\let\urshowkeys=\showkeys \def\showkeys{\needspace{5ex}\urshowkeys}
需要需要空间包裹)。 - 如果在文档末尾附近使用超链接,也会发生同样的情况。
- 如果出现这种情况是因为链接在正文和边距文本之间被分割,那么最好的办法可能是编写自己的包装器,将标签放在正文中,这样就不会出现问题了。这应该很容易,而且我猜这是一个可以接受的解决方法,因为文本是草稿。