Исключить подраздел из ToC и сохранить ссылки

Исключить подраздел из ToC и сохранить ссылки

Мне нужно удалить свой подраздел из 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..

Связанный контент