使用 xr-hyper 和 hyperref - 设置页面计数器时出错

使用 xr-hyper 和 hyperref - 设置页面计数器时出错

docB.tex我正在尝试根据docA.tex包含标签的页面设置页面计数器my-label。我正在使用软件包xr-hyperhyperref基于例子。

文档A.tex

\documentclass{article} 
\usepackage{xr-hyper} 
\usepackage{hyperref} 
\begin{document}
    Here is a label. \label{my-label}
    It appears on page \pageref{my-label}.
\end{document}

文档B.tex

\documentclass{article}
\usepackage{xr-hyper}
\usepackage{hyperref}
\externaldocument[A-]{docA}
\begin{document}
    In docA, the label appears on page \pageref{A-my-label}.
    Set the page number to that: 
    \setcounter{page}{\pageref{A-my-label}}
\end{document}

我编译了docA.tex两次,希望能够成功,它正确地生成了一个 PDF,内容如下

Here is a label. It appears on page 1.

但是,当我编译时docB.tex出现错误

./docB.tex:8: Missing number, treated as zero.
<to be read again> 
                   \protect 
l.8 ...    \setcounter{page}{\pageref{A-my-label}}

我知道交叉引用工作正常,因为如果我注释掉该\setcounter行,则第 6 行会正确打印页码。因此错误来自调用内部\setcounter

我错过了什么?

答案1

有问题的行是:

\setcounter{page}{\pageref{A-my-label}}

hyperref添加了一个链接,而链接不是可以与一起使用的数字\setcounter。包refcount有助于从引用中提取数字:

\setcounterpageref{page}{A-my-label}

如果标签尚未定义,则0使用默认值。 默认值可以通过宏更改\setrefcountdefault。 例如:

\begingroup % keep default change local
  \setrefcountdefault{1}%
  \setcounterpageref{page}{A-my-label}% global assignment
\endgroup

相关内容