使用 memoir,我试图在一个 LaTeX 项目中设置单个文档的集合(因为有很多交叉引用),并按book
部门分隔。例如
\documentclass{memoir}
\begin{document}
\book{maindoc}
\tableofcontents* % ISSUE #1: includes all items of seconddoc as well
\chapter{maindoc first chapter}
\chapter{maindoc second chapter}
\book{seconddoc}
\tableofcontents* % ISSUE #1: includes all items of maindoc as well
\setcounter{chapter}{0} % ISSUE #2: ugly reset chapter counter with each book?
\chapter{seconddoc first chapter}
\chapter{seconddoc second chapter}
\end{document}
我原本以为图书部门会真正地将各个文档分开,并能够创建单独的目录。然而,正如上面的 MWE 评论中指出的那样,它给我带来了两个不愉快的意外:
- 目录包括所有书籍的所有内容。
- 必须手动重置书本水平以下的计数器。
感觉我的整个方法都是错的。我做错了什么吗?如果回忆录中的书籍的这种行为是设计出来的,那么你将如何创建一个由多个文档组成的单个 LaTeX 项目?
我尝试过 minitoc 方法,但是它存在(已知的)回忆录问题。
另外,我已经看过这个titletoc
包,但如果我理解正确,我必须再次手动构建所有部分 ToC,对吗?
背景信息:我的项目将提供几份单独的文档,这些文档可以单独阅读,但它们共享一个参考书目、词汇表,并且相互引用很多。要求是制作一份 PDF。
答案1
可以通过扩展这个想法来实现:Memoir 有钩子可以将代码添加到文件中.toc
。我们利用它在战略点添加回调。然后修改这些回调以控制目录本身中某些点的目录深度。
\documentclass{memoir}
\counterwithin{chapter}{book}
\renewcommand\thechapter{\arabic{chapter}}
\cftinsertcode{PRE-1}{ \setcounter{tocdepth}{-10} }
\cftinsertcode{PRE-2}{ \setcounter{tocdepth}{-10} }
\cftinsertcode{BIB}{ \setcounter{tocdepth}{10} }
\newcommand\ShowFirstBook{
\cftinsertcode{PRE-1}{ \setcounter{tocdepth}{2} }
\cftinsertcode{PRE-2}{ \setcounter{tocdepth}{-10} }
}
\newcommand\ShowSecondBook{
\cftinsertcode{PRE-1}{ \setcounter{tocdepth}{-10} }
\cftinsertcode{PRE-2}{ \setcounter{tocdepth}{2} }
}
\begin{document}
\cftinserthook{toc}{PRE-1}
\book{maindoc}
\ShowFirstBook
\tableofcontents*
\chapter{maindoc first chapter}
\chapter{maindoc second chapter}
\cftinserthook{toc}{PRE-2}
\ShowSecondBook
\book{seconddoc}
\tableofcontents*
\chapter{seconddoc first chapter}
\chapter{seconddoc second chapter}
\cftinserthook{toc}{BIB}
\begin{thebibliography}{99}
\bibitem{s} Test
\end{thebibliography}
\end{document}