在不同文件之间交叉引用时 \hyperref 失败

在不同文件之间交叉引用时 \hyperref 失败

我正在开展一个多卷项目,其中不同的卷包含指向其他卷的超链接。我使用本网站上多篇文章中介绍的技术,例如,不同文件之间的交叉引用使用 Zref 包在 2 个卷之间进行智能交叉引用

我记得以前它运行良好,但最近我注意到,指向另一个文件的超链接会在最后打开的页面上打开,而不是在所需的目标页面上打开。下面是我为测试此问题而制作的相当小的运行示例。我使用 pdflatex 或 xetex 将这些文件编译为 pdf。

文件 A.tex:

\documentclass{book}
\usepackage[user,xr]{zref}
%\usepackage{zref-xr}
\usepackage{xr-hyper}
\externaldocument[B-]{B}
\zexternaldocument[B-]{B}

\usepackage{hyperref}
\begin{document}

empty page

\newpage
\section{Dittmer}\label{Dittmer}\zlabel{Dittmer}

Dittmer

\newpage
\section{Langmuir}\label{Langmuir}\zlabel{Langmuir}

Langmuir

\newpage
\section{References}

\hyperref[Dittmer]{hyperref to Dittmer} on page \pageref{Dittmer}, \zpageref{Dittmer}

\hyperref[Langmuir]{hyperref to Langmuir} on page \pageref{Langmuir}, \zpageref{Langmuir}

\hyperref[B-Shafranov]{hyperref to B-Shafranov} on page \pageref{B-Shafranov}, \zpageref{B-Shafranov}

\hyperref[B-Stupakov]{hyperref to B-Stupakov} on page \pageref{B-Stupakov}, \zpageref{B-Stupakov}

\end{document} 

文件 B.tex:

%\providecommand{\reverseit}[1]{#1}
\documentclass{book}
\usepackage[user,xr]{zref}
%\usepackage{zref-xr}
\usepackage{xr-hyper}
\usepackage{hyperref}
\externaldocument[A-]{A}
\zexternaldocument[A-]{A}
%\externaldocument[V4-]{PlasmaBook4}

\begin{document}

empty page 

\newpage
\section{Shafranov}\label{Shafranov}\zlabel{Shafranov}

Shafranov

\newpage
\section{Stupakov}\label{Stupakov}\zlabel{Stupakov}

Stupakov

\newpage
\section{References}

\hyperref[A-Dittmer]{hyperref to A-Dittmer} on page \pageref{A-Dittmer}, \zpageref{A-Dittmer}

\hyperref[A-Langmuir]{hyperref to A-Langmuir} on page \pageref{A-Langmuir}, \zpageref{A-Langmuir}

\hyperref[Shafranov]{hyperref to Shafranov} on page \pageref{Shafranov}, \zpageref{Shafranov}

\hyperref[Stupakov]{hyperref to Stupakov} on page \pageref{Stupakov}, \zpageref{Stupakov}

\end{document}

我不知道这项技术出了什么问题。任何建议都将不胜感激。\refpage\zrefpage在不同的文件中打印正确的页码,但超链接 \refpage\hyperref打开错误页面的不同文件。我尝试使用 sumatrapdf 和 adobe accrobat 浏览 pdf 文件。

更新:最后,我发现如果 PDF 是在 或下\hyperref编译的,则 无法按预期在外部文档上运行。当由 编译时,一切都按预期运行!所以这似乎是 中的错误。MiKTeXxelatexpdflatexTeX LiveMiKTeX

更新日期 2017-02-13:今天我检查了一下,最新版本的 MikTex 和 TeXlive 并没有出现上述问题。

答案1

A.texxr-hyper需要先加载包hyperref,但\externaldocument应给出加载中hyperref

\usepackage{xr-hyper}
\usepackage{hyperref}
\externaldocument[B-]{B}

相关内容