我在编译 PDF 文件时遇到了麻烦。我使用 MiKTeX 2.9 和 Texmaker (PDFLaTeX) 来获取文件。
我有以下 MWE:
\documentclass[11pt]{article}
\usepackage[left=2cm,top=2cm,right=2cm,bottom=2cm]{geometry}
\usepackage[frenchb, american]{babel}
\usepackage[
colorlinks=true,
linkcolor=black,
filecolor=black,
urlcolor=black,
citecolor=black,
bookmarks=true,
bookmarksopen=true,
bookmarksnumbered=true]{hyperref}
\begin{document}
\tableofcontents
\section{Introduction}
\section{blabla}
\appendix
\renewcommand\appendixname{Annexes}
\section*{Annexes}
\phantomsection
\addcontentsline{toc}{section}{\appendixname}
\addtocontents{toc}{\protect\setcounter{tocdepth}{0}}
\makeatletter
\def\@seccntformat#1{Annexe~\csname the#1\endcsname~-~}
\makeatother
\renewcommand{\thesection}{\arabic{section}}
\section{blabla}
\section{blabla}
\section{blabla}
\section{blabla}
\section{blabla}
\end{document}
编译文件时,目录是完美的,但 PDF 中的书签被删除了。我知道这个问题来自那一行:
\addtocontents{toc}{\protect\setcounter{tocdepth}{0}}
似乎此行删除了所有书签条目,因为当我运行此代码时,.out 文件为空。但是,当我删除此行时,.out 文件一切正常,但附录之后的后续部分显示在目录和书签中
我尝试了几种方法,但还是想不出可行的代码。我的目标是在目录和书签中只包含条目附件,而不包含后续部分(我需要文本中带有编号的部分)。
有人能幫助我嗎?
谢谢
答案1
必须在文档末尾tocdepth
再次将 设置为。这可以手动完成,也可以在钩子中完成。这必须写入。1
\AtEndDocument
.toc
此外,在使用各个部分之前tocdepth
必须设置计数器。0
blabla
\documentclass[11pt]{article}
\usepackage[left=2cm,top=2cm,right=2cm,bottom=2cm]{geometry}
\usepackage[T1]{fontenc}
\usepackage[frenchb, american]{babel}
\usepackage[
colorlinks=true,
linkcolor=black,
filecolor=black,
urlcolor=black,
citecolor=black,
bookmarks=true,
bookmarksopen=true,
bookmarksnumbered=true]{hyperref}
%\usepackage{bookmark}
\AtEndDocument{%
\addtocontents{toc}{\protect\setcounter{tocdepth}{1}}
}
\begin{document}
\tableofcontents
\section{Introduction}
\section{blabla}
\appendix
\renewcommand\appendixname{Annexes}
\phantomsection
\addcontentsline{toc}{section}{\appendixname}
\section*{Annexes}
\addtocontents{toc}{\protect\setcounter{tocdepth}{0}}
\makeatletter
\def\@seccntformat#1{Annexe~\csname the#1\endcsname~-~}
\makeatother
\setcounter{tocdepth}{0}
\renewcommand{\thesection}{\arabic{section}}
\section{blabla}
\section{blabla}
\section{blabla}
\section{blabla}
\section{blabla}
\end{document}
答案2
仅包含解决方案的更简单变体。\setcounter{tocdepth}{1}
可以在行后添加\addtocontents{toc}{\protect\setcounter{tocdepth}{0}}
A。
那是,
...
\addtocontents{toc}{\protect\setcounter{tocdepth}{0}}
\setcounter{tocdepth}{1} % New line
\makeatletter
...
产生与上述相同的结果,并在 PDF 中创建书签。