
Мне нужно удалить свой подраздел из ToC. Я сделал эту часть правильно без проблем, используя этосвязь. Спасибо!
Но я не могу использовать \ref{"label from my subsection"}
для выбранного подраздела, который я только что удалил из своего ToC. Ну, я все еще могу его связать, но я получу только ссылку на раздел выше моего подраздела.
Пример: (Мой подраздел не отображается в оглавлении)
\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}
что установит максимальную глубину записей в ToC на 1 (или \section
).
Если вы хотите, чтобы выбранное \subsections
было вставлено/не вставлено в ToC, то вам следует использовать другой метод. Ниже определяются \stoptocentries
и \starttocentries
. Первый отключает вставку контента в ToC путем отключения \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.
Если вы хотите скрыть все подразделы внутри toc, вам следует установить счетчик 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}
Минимальный рабочий пример также можно найти на сайте LaTeX..