\pdfendlink 最终与 \pdfstartlink 处于不同的嵌套级别

\pdfendlink 最终与 \pdfstartlink 处于不同的嵌套级别

我开始showkeys在我的某个文档中使用并看到此错误

\pdfendlink ended up in different nesting level than \pdfstartlink

谷歌搜索表明,这种情况“发生在 pdftex 下使用 hyperref 并且引用跨越页面边界时”。 (见:http://tug.org/errors.html)。

但是这个包只在起草阶段有用,因为文本经常变化,也就是说出错的几率很高。有没有一种通用的方法可以顺利使用showkeyshyperref谢谢。

答案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,我们很难说有什么方法可以解决问题。出于显而易见的原因,我没有测试以下任何内容。

如果问题出现在以下情况下:

  1. showkeys 在文档末尾附近使用,那么如果在文档末尾附近使用该命令,则可以强制页面弹出。例如:(\let\urshowkeys=\showkeys \def\showkeys{\needspace{5ex}\urshowkeys}需要需要空间包裹)。
  2. 如果在文档末尾附近使用超链接,也会发生同样的情况。
  3. 如果出现这种情况是因为链接在正文和边距文本之间被分割,那么最好的办法可能是编写自己的包装器,将标签放在正文中,这样就不会出现问题了。这应该很容易,而且我猜这是一个可以接受的解决方法,因为文本是草稿。

相关内容