重新定义附录或章节导致 PDF 书签映射问题错误

重新定义附录或章节导致 PDF 书签映射问题错误

我正在使用这个包utdiss2.sty在一篇论文中。当我使用类似以下示例的包时:

\documentclass[12pt]{book}
\usepackage{lipsum}
\usepackage{bookmark}
\usepackage{utdiss2}
\usepackage{hyperref}
%\usepackage{appendix}


\begin{document}
\chapter{Ch1}
\lipsum
\chapter{Ch2} 
\lipsum

%\bookmarksetupnext{level=part}
\begin{appendices}
\chapter{Hello}
\lipsum
\chapter{World}
\lipsum
\end{appendices}
\end{document}

一切正常,但 PDF 的书签匹配不正确。第一个附录与第 1 章匹配,而不是第一个附录。

在此处输入图片描述

我查看了包中的附录环境utdiss2.sty并注释掉了\setcounter{chapter}{0}

\def\appendices{\clearpage
    \typeout{Appendices.}
    \short@page \setcounter{regular@short}{1}   % <- 9/13/96 (MAL)
        \markboth{}{}\pagestyle{myheadings} % <- The appendices must
        \thispagestyle{plain}           % <- be numbered.
    \vspace*{\fill}
    \centerline{\large\bf Appendices}
    \vspace*{\fill}

    \addcontentsline{toc}{chapter}{Appendices}  % <-

    \setcounter{chapter}{0} % <---
    \setcounter{section}{0} 
    \def\@chapapp{\appendixname}
    \chap@or@app=2
    \def\thechapter{\Alph{chapter}}}

现在,书签可以正常工作,但编号错误;附录 C 和 D 而不是附录 A 和 B。

没有这个utdiss2.sty包就没有问题,所以这个包里有东西改变了。

在此处输入图片描述

可能出了什么问题?重新定义附录或章节时,什么可能导致此类问题(错误的书签映射)?

答案1

该问题很可能是众所周知的问题:

\setcounter{chapter}{0}导致错误的hyperref锚点,因为使用计数器值来构建这样的锚点。

一个解决方案是提供另一种\theHchapter设置,比如

\renewcommand{\theHchapter}{\appendixname.\thechapter}

这将写入如下名称

   \@writefile{toc}{\contentsline {chapter}{Appendix A.\hspace  *{1em}Hello}{10}{chapter.Appendix.A}}

对于.aux文件,给出正确的超链接,例如chapter.Appendix.A,不再chapter.1提供,因为真正的第一章已经存在了。

\documentclass[12pt]{book}
\usepackage{lipsum}

\usepackage{xpatch}
\usepackage{utdiss2}
\usepackage{hyperref}

\xapptocmd{\appendices}{%
  \renewcommand{\theHchapter}{\appendixname.\thechapter}
}{}{}

\usepackage{bookmark}



\begin{document}
\chapter{Ch1}
\lipsum
\chapter{Ch2} 
\lipsum

\bookmarksetupnext{level=part}


\begin{appendices}
\chapter{Hello}
\lipsum
\chapter{World}
\lipsum
\end{appendices}
\end{document}

在此处输入图片描述

相关内容