我需要从目录中删除我的子部分。我使用这个毫无问题地完成了那部分关联。 谢谢!
但我无法使用\ref{"label from my subsection"}
刚从目录中删除的选定子节。好吧,我仍然可以链接它,但我只能获得对我子节上方部分的引用。
示例:(我的子部分未显示在目录中)
\section{Hello World!}
\label{sec:hello_world}
\subsection{Goodbye}
\label{sec:goodbye}
\ref{sec:goodbye}
--- Latex 将返回如下结果 ---
1.你好,世界!
1.1. 再见
1
答案1
如果你希望\subsection
从目录中删除所有 s,那么在文档序言中只需要
\setcounter{tocdepth}{1}
这会将目录中条目的最大深度设置为 1(或\section
)。
如果您只希望将选定\subsections
内容插入/不插入目录中,则应使用不同的技术。以下定义\stoptocentries
和\starttocentries
。前者通过禁用来禁用在目录中插入内容\addcontentsline
。后者恢复该功能。
\documentclass{article}
\let\oldaddcontentsline\addcontentsline
\newcommand{\stoptocentries}{\renewcommand{\addcontentsline}[3]{}}
\newcommand{\starttocentries}{\let\addcontentsline\oldaddcontentsline}
\begin{document}
\tableofcontents
\section{A section}
\stoptocentries% Stop adding content to the ToC
\subsection{A subsection}
\starttocentries% Resume adding content to the ToC
\subsection{Another subsection}
\end{document}
当然, 的用法\stoptocentries
也适用于使用 的其他部门单位\addcontentsline
。
答案2
你可以使用软件包立即执行此操作埃托克。
代码:
\documentclass{article}
\usepackage{etoc}
\begin{document}
\tableofcontents
\section{First Section}
Hello
\subsection{A}
\subsection{B}
\section{Second Section}
\etocsettocdepth.toc {section}
\subsection {EXCLUDE ME}\label{ssec:excluded}
\etocsettocdepth.toc {subsection}
\subsection {D}
Too bad we have excluded subsection \ref{ssec:excluded} from the TOC!
\end{document}
答案3
我看到上面的答案完全回答了这个问题,但我在 LaTeX 网站上找到了另一种方法。
如果要隐藏目录中的所有子部分,则应将计数器 tocdepth 设置为 1:
\setcounter{tocdepth}{1}
但如果您只希望将其应用于某些(子)部分,则可以更改文档内的 tocdepth:
\documentclass[a4paper,10pt]{book}
\begin{document}
\tableofcontents
\chapter{One}
\section{One}
\subsection{One}
\addtocontents{toc}{\protect\setcounter{tocdepth}{1}}
\subsection{Two}
\addtocontents{toc}{\protect\setcounter{tocdepth}{2}}
\subsection{Three}
\end{document}