使子部分仅在本地目录中可见,而不在主目录中可见

使子部分仅在本地目录中可见,而不在主目录中可见

我正在写一篇大文章包含一系列复杂附录的类型文档。

我使用包中的工具在每个附录中都添加了一个本地目录,其中列出了该特定附录中的章节和小节(附录 A 的本地目录仅列出了该附录的小节等)etoc

我想做的是让我的附录部分包含编号的子部分/子子部分,但子部分/子子部分仅出现在附录本地目录中。但是我仍然希望附录部分出现在主目录中。

以下是我的设置的粗略近似值:

\documentclass{article}

\usepackage{tocloft} % Adds tools for TOC customization
\usepackage{etoc} % Local toc
\usepackage[titletoc,title]{appendix}

\begin{document}

  \setcounter{tocdepth}{3}
  \tableofcontents

  \section{First section}
    \subsection{a Subsection}
  \section{Second section}
    \subsection{a Subsection}
    \subsection{Another Subsection}

  \begin{appendix}
    \section{Appendix A} % <- I want this to appear in the main TOC
      \etocsetnexttocdepth{2}
      \localtableofcontents
      \subsection{Appendix Subsection} % <- I want this to appear in the local TOC, but not the main TOC
  \end{appendix}

\end{document}

输出结果如下:

带注释的演示 LaTex 的示例输出

答案1

您只需\addtocontents向主目录添加一个命令即可减少tocdepth。由于您正在使用etoc包,因此可以使用命令完成此\etocsettocdepth.toc操作。然后,您必须告诉本地目录忽略当前目录深度并使用其自己的目录深度。这可以通过 完成\etocignoretoctocdepth。将所有这些命令放在环境的开头似乎最容易appendix。我使用包完成了此操作etoolbox

\documentclass{article}

\usepackage{tocloft} % Adds tools for TOC customization
\usepackage{etoc} % Local toc
\usepackage[titletoc,title]{appendix}
\usepackage{etoolbox}
\AtBeginEnvironment{appendix}{\etocsettocdepth.toc{section}\etocignoretoctocdepth
\etocsetnexttocdepth{subsection}}

\begin{document}

  \setcounter{tocdepth}{3}
  \tableofcontents

  \section{First section}
    \subsection{a Subsection}
  \section{Second section}
    \subsection{a Subsection}
    \subsection{Another Subsection}

  \begin{appendix}
    \section{Appendix A} % <- I want this to appear in the main TOC
    \localtableofcontents
    \subsection{Appendix Subsection} % <- I want this to appear in the local TOC, but not the main TOC
  \end{appendix}

\end{document}

代码输出

(在我看来,这etoc是一个替代品,tocloft所以我不确定它们是否应该一起使用,但我已将包留在了您的文档中。)

相关内容