我正在开展一个多卷项目,其中不同的卷包含指向其他卷的超链接。我使用本网站上多篇文章中介绍的技术,例如,不同文件之间的交叉引用和 使用 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
编译的,则 无法按预期在外部文档上运行。当由 编译时,一切都按预期运行!所以这似乎是 中的错误。MiKTeX
xelatex
pdflatex
TeX Live
MiKTeX
更新日期 2017-02-13:今天我检查了一下,最新版本的 MikTex 和 TeXlive 并没有出现上述问题。
答案1
A.tex
:xr-hyper
需要先加载包hyperref
,但\externaldocument
应给出后加载中hyperref
:
\usepackage{xr-hyper}
\usepackage{hyperref}
\externaldocument[B-]{B}