如何让附录列表(以 编号\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
仅指定要忽略哪些条目,因此无需修改书面这些文件。