hyperref 书签为何有效?

hyperref 书签为何有效?

\appendix命令将部分计数器重置为零:

*\documentclass{article}

*\show\appendix
(/usr/share/texmf-texlive/tex/latex/base/article.cls
Document Class: article 2007/10/19 v1.4h Standard LaTeX document class
(/usr/share/texmf-texlive/tex/latex/base/size10.clo))
> \appendix=\long macro:
->\par \setcounter {section}{0}\setcounter {subsection}{0}\gdef \thesection {\@
Alph \c@section }.

我的理解\section是它根据当前计数器数字创建书签?在下面,我觉得我\appendix在声明之前重现了关键部分\section{six},但它不起作用。

\documentclass{article}
\usepackage[final]{hyperref}
\begin{document}
\tableofcontents
\newpage
\section{one}
\newpage
\section{two}
\newpage
\section{three}
\newpage
\appendix
\section{four}
\newpage
\section{five}
\setcounter{section}{0}
\setcounter{subsection}{0}
\section{six}
\end{document}

相反,\section{six}有一个书签指向\section{four}。LaTeX 的输出可以理解地显示:

pdfTeX warning (ext4): destination with the same identifier
(name{appendix.A}) has been already used, duplicate ignored

所以我不明白为什么会发生这种情况。\appendix它所做的比我想象的要多吗?重新定义\thesection似乎与此无关。

答案1

hyperref包进行了修改\appendix,因此它确实不仅仅是重置计数器和进行更改\thesection

\documentclass{article}
\usepackage{hyperref}  
\show\appendix

产量

> \appendix=macro:
->\ltx@IfUndefined {chapter}{\gdef \theHsection {\Alph {section}}}{\gdef \theHc
hapter {\Alph {chapter}}}\xdef \Hy@chapapp {\Hy@appendixstring }\HyOrg@appendix

因此它也设置\Hy@chapapp为 的值\Hy@appendixstring(默认为appendix)。我猜想(但尚未检查)hyperref创建的链接名为\Hy@chapapp.\theH⟨current sectional unit⟩

\HyOrg@appendix仅包含的原始定义\appendix,它也会被执行。

相关内容