目录深度和书签问题

目录深度和书签问题

我在编译 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必须设置计数器。0blabla

\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 中创建书签。

相关内容