我们正在编写一本书(类scrbook
),我们希望有两个单独的目录:一个位于文档开头,用于显示书的实际“内容”,另一个位于附录第一章开始之前,仅包含附录的章节和部分。附录本身不应出现在主目录中。(背景:书的内容将打印出来,而附录将仅以 PDF 文件的形式在线提供)
类似这样的:
Table of Contents
1 First chapter .... 1
1.1 A section ........ 2
First chapter
text text text
A section
text text text
Appendix
1 Something ....... 5
1.1 Specific ........ 6
Appendix A
Something
text text text
A.1 Specific
text text text
我对“appendix”、“titletoc”、“tocloft”等不同包提供的可能性有点困惑……
有人知道如何实现这一点吗?
答案1
这是一个使用etoc
包的解决方案
\documentclass{scrbook}
\usepackage{etoc}
\begin{document}
\etocdepthtag.toc{mtchapter}
\etocsettagdepth{mtchapter}{subsection}
\etocsettagdepth{mtappendix}{none}
\tableofcontents
\chapter{First chapter}
text text text
\section{A section}
text text text
\subsection{A subsection}
text text text
\appendix
\etocdepthtag.toc{mtappendix}
\etocsettagdepth{mtchapter}{none}
\etocsettagdepth{mtappendix}{subsection}
\tableofcontents
\chapter{Appendix A}
text text text
\section{Specific}
text text text
\subsection{A subsection}
text text text
\end{document}
答案2
更新 这是一个无需任何附加包的建议,但它需要 KOMA-Script 版本 3.23 或更新版本。
\documentclass[appendixprefix]{scrbook}[2017/04/13]
\DeclareNewTOC[%
owner=\jobname,
listname={\contentsname~(\appendixname)},% title of the appendix ToC
]{atoc}
\makeatletter
\newcommand*\appendixwithtoc{%
\appendix
\renewcommand*{\ext@toc}{atoc}%
\scr@ifundefinedorrelax{hypersetup}{}{\hypersetup{bookmarkstype=atoc}}%
\listofatocs
}
\makeatother
\usepackage{blindtext}
\begin{document}
\tableofcontents
\chapter{Chapter I}
\section{Section I}
\chapter{Chapter II}
\appendixwithtoc
\chapter{Annex I}
\section{Section of Annex I}
\chapter{Annex II}
\end{document}
原始答案
以下是使用 KOMA-Script 包的另一个建议scrwfile
:
\documentclass[appendixprefix]{scrbook}
%
\usepackage{scrwfile}
\TOCclone[\contentsname~(\appendixname)]{toc}{atoc}
\newcommand\StartAppendixEntries{}
\AfterTOCHead[toc]{%
\renewcommand\StartAppendixEntries{\value{tocdepth}=-10000\relax}%
}
\AfterTOCHead[atoc]{%
\edef\maintocdepth{\the\value{tocdepth}}%
\value{tocdepth}=-10000\relax%
\renewcommand\StartAppendixEntries{\value{tocdepth}=\maintocdepth\relax}%
}
\newcommand*\appendixwithtoc{%
\cleardoublepage
\appendix
\addtocontents{toc}{\protect\StartAppendixEntries}
\listofatoc
}
%
\usepackage{blindtext}
\begin{document}
\tableofcontents
\chapter{Chapter I}
\section{Section I}
\chapter{Chapter II}
\appendixwithtoc
\chapter{Annex I}
\section{Section of Annex I}
\chapter{Annex II}
\end{document}