我在用着Markus Kohm 的修复将前缀“附录”也包含在目录中。不幸的是,这会搞砸bookmarks
由 生成的(或索引)hyperref
,如 MWE 下方的屏幕截图所示:
\documentclass[appendixprefix]{scrbook}
\usepackage{hyperref}
\usepackage{etoolbox}
%% From http://www.komascript.de/node/1766
\newcommand*{\SavedOriginaladdchaptertocentry}{}
\appto\appendixmore{%
\let\SavedOriginaladdchaptertocentry\addchaptertocentry
\renewcommand*{\addchaptertocentry}[2]{%
\ifstr{#1}{}{% Eintrag ohne Nummer
\SavedOriginaladdchaptertocentry{#1}{#2}%
}{% Eintrag mit Nummer
\SavedOriginaladdchaptertocentry{}{%
\string\expandafter\string\MakeUppercase\string\appendixname
~#1\autodot\string\enskip{}#2}%
}%
}%
}
\title{Some title}
\author{Some author}
\begin{document}
\maketitle
\frontmatter
\tableofcontents
\mainmatter
\chapter{Some chapter}
\appendix
\chapter{appendix chapter}
\section{Section in appendix}
\end{document}
来自 evince 的截图(XeTeX,TeXLive 2013):
知道这里发生什么事了吗?
答案1
这一\string\expandafter\...
行对于 pdf 查看器来说毫无意义,因为它是部分不可扩展的 LaTeX 代码(\MakeUppercase
是这里的罪魁祸首!),无法理解为书签条目。你需要\texorpdfstring{texcontent}{pdfcontent}
这个。
我已将\texorpdfstring{...}{...}
有问题的行括起来,并使用\appendixname
该pdfcontent
部分 --\appendixname
可扩展并替换为Appendix
(在英语语言设置中)
\documentclass[appendixprefix]{scrbook}
\usepackage{hyperref}
\usepackage{etoolbox}
%% From http://www.komascript.de/node/1766
\newcommand*{\SavedOriginaladdchaptertocentry}{}
\appto\appendixmore{%
\let\SavedOriginaladdchaptertocentry\addchaptertocentry
\renewcommand*{\addchaptertocentry}[2]{%
\ifstr{#1}{}{% Eintrag ohne Nummer
\SavedOriginaladdchaptertocentry{#1}{#2}%
}{% Eintrag mit Nummer
\SavedOriginaladdchaptertocentry{}{%
\texorpdfstring{\string\expandafter\string\MakeUppercase\string\appendixname
~#1\autodot\string\enskip{}#2}{\appendixname}}%
}%
}%
}
\title{Some title}
\author{Some author}
\begin{document}
\maketitle
\frontmatter
\tableofcontents
\mainmatter
\chapter{Some chapter}
\appendix
\chapter{appendix chapter}
\section{Section in appendix}
\end{document}
答案2
以下是另一个建议:
代码:
\documentclass[appendixprefix]{scrbook}
\usepackage[hypertexnames=false]{hyperref}
\usepackage{etoolbox}
\appto\appendix{%
\renewcommand{\addchaptertocentry}[2]{
\ifstr{#1}{}{%
\addtocentrydefault{chapter}{}{#2}%
}{%
\addtocentrydefault{chapter}{}{\chapapp~#1: #2}%
}%
}
}
\title{Some title}
\author{Some author}
\begin{document}
\maketitle
\frontmatter
\tableofcontents
\mainmatter
\chapter{Some chapter}
\appendix
\chapter{First appendix chapter}
\section{Section in first appendix}
\chapter{Second appendix chapter}
\section{Section in second appendix}
%
\addchap{Chapter without number}
\end{document}