![使用 xr-hyper 和 hyperref - 设置页面计数器时出错](https://linux22.com/image/346135/%E4%BD%BF%E7%94%A8%20xr-hyper%20%E5%92%8C%20hyperref%20-%20%E8%AE%BE%E7%BD%AE%E9%A1%B5%E9%9D%A2%E8%AE%A1%E6%95%B0%E5%99%A8%E6%97%B6%E5%87%BA%E9%94%99.png)
docB.tex
我正在尝试根据docA.tex
包含标签的页面设置页面计数器my-label
。我正在使用软件包xr-hyper
并hyperref
基于这例子。
文档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