编译 LaTeX -> dvi -> ps -> pdf 时,超链接跳转到 \newtcolorbox 标签的错误位置

编译 LaTeX -> dvi -> ps -> pdf 时,超链接跳转到 \newtcolorbox 标签的错误位置

通过编译以下示例代码:

\documentclass{report}
\usepackage{lipsum}
\usepackage{amsthm}
\usepackage[many]{tcolorbox}
\usepackage[dvips,colorlinks,bookmarks]{hyperref}
\usepackage[capitalize,nameinlink]{cleveref}
\usepackage{longfbox}

\newtcolorbox[auto counter,number within=chapter,crefname={theorem}{theorems}]{theo}[2][]{%
breakable,enhanced,colback=blue!5!white,
colframe=blue!75!black,
colbacktitle=cyan!50!green,
coltitle=blue!25!black,
fonttitle=\bfseries,
subtitle style={boxrule=0.4pt,colback=cyan!50!red!25!white},title=Theorem~\thetcbcounter~#2,#1}

\newtheorem{proposition}{Proposition}

\begin{document}

\begin{proposition}\label{pro:1}
Proposition!
\end{proposition}


\begin{theo}[label=mytheo]{(My Theorem)}
\lipsum
\end{theo}

My \Cref{mytheo} and my \Cref{pro:1}.

\end{document} 

当 LaTeX -> dvi -> ps -> pdf 时,“定理 0.1”的链接会跳转到页面底部。另一方面,“命题 1”的链接则完美无缺。通过将代码直接编译为 PDFLaTeX(删除dvipshyperref),此问题便会消失。我试图了解为什么会发生这种情况,但直到现在,仍未成功。此外,正如建议的那样,我使用了它,但不起作用\phantomsection;事实上,部分链接也出现了类似的问题,但\phantomsection运行良好。但是,我在当前情况下无法成功使用它。当然,我也尝试将文件编译为 XeLaTeX,但获得的最终 pdf 输出版本与 dvi -> ps -> pdf 生成的 pdf 输出并不完全相同(即,封面页标题上的某些粗体奇怪地出现在 XeLaTeX 输出中)。由于 \newtheorem 不会出现此问题,我推测这可能与 \newtcolorbox 有关。

我需要将文件编译为 LaTeX -> dvi -> ps -> pdf(我有几个 eps 图形和文件)。我该如何解决这个问题,即如何将链接跳转到 LaTeX -> dvi -> ps -> pdf 编译中的正确位置?欢迎任何帮助。谢谢,CW

答案1

我现在没有时间调试这个,但基本上这是一个 tikz 问题。如果你用 pdflatex 编译以下内容,那么 \phantomsection 创建的目标是

/D [5 0 R /XYZ 148.912 674.665 null]

该位置大致位于页面顶部(pdf 从底部测量,因此 674.665 相当高。)

使用 latex +dvips 你会得到更低的位置:

<</D [4 0 R /XYZ 170.407654 250.006836 null]>>endobj
\documentclass{report}
\usepackage{tikz,hyperref}

\begin{document}
\begin{tikzpicture}
\draw[red](0,0) rectangle (10,15);
\path[use as bounding box](0,0) rectangle (10,15);
\pgftext[x=0pt,y=15cm,right,top]{xxxx\phantomsection\label{blub}};%
\end{tikzpicture}

\pageref{blub}

\end{document}

您可以提交错误报告,但我不确定这是否可以轻松解决。我建议尝试使用 pdflatex。它可以处理 eps 文件,或者您可以先将它们转换为 pdf。

相关内容