目录中的附录标题,无附录列表

目录中的附录标题,无附录列表

如何让附录列表(以 编号\chapter{})不出现在目录中,而是显示标题“附录”。我使用 documentclassbook和默认\appendix命令来开始附录。

在 ToC 中,我有这个:

1. CHAPTER ...
   1.1 Section ...

A. Appendix A ...
   A.1 Section ...

B. Appendix B ...
   B.1 Section ...

我需要这个:

1. CHAPTER ...
   1.1 Section ...

Appendices ...

但是,我还需要文件中编号的附录 A 和 B。

tocdepth一些解决方案在附录开始声明后提出改变计数器,但可能会干扰其他列表(LoT,LoF)和包 hyperref 和 PDF 书签。

这里是 MWE:

\documentclass[11pt]{report}
\usepackage[T1]{fontenc}
\usepackage{blindtext}
\usepackage{hyperref}
   \hypersetup{hidelinks}

\begin{document}
  \tableofcontents
  \listoftables
  \blinddocument
  \begin{table}\centering
      \begin{tabular}{|c|c|c|}
        \hline
        1 & 2 & 3 \\
        4 & 5 & 6 \\
        7 & 8 & 9 \\
        \hline
      \end{tabular}
      \caption{Test}
  \end{table}
  \appendix
    \blinddocument
    \blinddocument
\end{document}

该解决方案不应影响其他列表和 PDF 书签。

答案1

这种方法由 »附录« 包并且写入 ToC 的计数器减少,tocdepth从而为附录生成一个 ToC 条目,而不会禁用文档中单个附录章节的编号。

\documentclass[11pt]{report}
\usepackage[T1]{fontenc}
\usepackage[toc]{appendix}
\usepackage{blindtext}  % drop in actual document

\begin{document}
  \tableofcontents

  \blinddocument  % drop in actual document

  \begin{appendices}
    \addtocontents{toc}{\protect\setcounter{tocdepth}{-1}}
    \blinddocument  % drop in actual document
    \blinddocument  % drop in actual document
  \end{appendices}
\end{document}

根据提到的要求,我只能提供对将内容写入 ToC 和 LoT 所涉及的宏的快速破解。

\documentclass[11pt]{report}
\usepackage[T1]{fontenc}
\usepackage{caption}
\usepackage[toc]{appendix}
\usepackage{blindtext}  % drop in actual document
\usepackage{hyperref}

\begin{document}
  \tableofcontents
  \listoftables
  \blinddocument

  \begin{table}[!htb]
    \caption{Dummy table}
    \label{tab:dummy}
    \centering
    \rule{4in}{2.25in}
  \end{table}

\makeatletter
\def\@chapter[#1]#2{\ifnum \c@secnumdepth >\m@ne
                         \refstepcounter{chapter}%
                         \typeout{\@chapapp\space\thechapter.}%
%                          \addcontentsline{toc}{chapter}%
%                                    {\protect\numberline{\thechapter}#1}%
%                     \else
%                       \addcontentsline{toc}{chapter}{#1}%
                    \fi
                    \chaptermark{#1}%
%                    \addtocontents{lof}{\protect\addvspace{10\p@}}%
%                    \addtocontents{lot}{\protect\addvspace{10\p@}}%
                    \if@twocolumn
                      \@topnewpage[\@makechapterhead{#2}]%
                    \else
                      \@makechapterhead{#2}%
                      \@afterheading
                    \fi}
\def\@sect#1#2#3#4#5#6[#7]#8{%
  \ifnum #2>\c@secnumdepth
    \let\@svsec\@empty
  \else
    \refstepcounter{#1}%
    \protected@edef\@svsec{\@seccntformat{#1}\relax}%
  \fi
  \@tempskipa #5\relax
  \ifdim \@tempskipa>\z@
    \begingroup
      #6{%
        \@hangfrom{\hskip #3\relax\@svsec}%
          \interlinepenalty \@M #8\@@par}%
    \endgroup
    \csname #1mark\endcsname{#7}%
%     \addcontentsline{toc}{#1}{%
%       \ifnum #2>\c@secnumdepth \else
%         \protect\numberline{\csname the#1\endcsname}%
%       \fi
%       #7}%
  \else
    \def\@svsechd{%
      #6{\hskip #3\relax
      \@svsec #8}%
      \csname #1mark\endcsname{#7}%
%       \addcontentsline{toc}{#1}{%
%         \ifnum #2>\c@secnumdepth \else
%           \protect\numberline{\csname the#1\endcsname}%
%         \fi
%         #7}
    }%
  \fi
  \@xsect{#5}}
\makeatother

  \begin{appendices}
    \blinddocument  % drop in actual document
    \blinddocument  % drop in actual document
  \end{appendices}
\end{document}

对关键部分进行了注释,以防止出现相应的条目。

答案2

这是@Thorsten 示例的即兴重复,它确实提供了修改的机制tocdepth。之所以将其作为答案提供,只是因为我不想用他可能不理解的代码污染他的示例。(在一条评论中,他要求详细说明,但这对于评论来说太过广泛了。)

\documentclass[11pt]{report}
\usepackage[T1]{fontenc}
\usepackage[toc]{appendix}
\usepackage{blindtext}  % drop in actual document

\begin{document}
  \tableofcontents
  \setcounter{tocdepth}{+1}
  \listoffigures
  \listoftables

  \blinddocument  % drop in actual document

  \begin{figure}
    this is a figure.
    \caption{dummy figure}
  \end{figure}

  \begin{table}
    \caption{dummy table}
    this is a table.
  \end{table}

  \begin{appendices}
    \addtocontents{toc}{\protect\setcounter{tocdepth}{-1}}
    \blinddocument  % drop in actual document
    \begin{figure}
      this is a figure.
      \caption{dummy figure}
    \end{figure}
    \blinddocument  % drop in actual document
    \begin{table}
      \caption{dummy table}
      this is a table.
    \end{table}
  \end{appendices}
\end{document}

为了抑制目录中单独附录的列出,Thorsten 将 减少了tocdepth一个。为了恢复图表和表格的完整列表,这里使用该技术的反向来在调用 \listoffigures和之前否定更改\listoftables

无需修改定义。所有潜在信息都会自动写入.toc.lof.lot文件,并且\tocdepth 仅指定要忽略哪些条目,因此无需修改书面这些文件。

相关内容