我的目录中有奇怪的不需要的短语!如何去除它?

我的目录中有奇怪的不需要的短语!如何去除它?

这是我的目录(amsart documentclass)的屏幕截图: 目录

我不想在实际行之间出现这些 Section *.2、Section *.3、Section *.4。我该如何摆脱这些莫名其妙的短语?谢谢。


显然,问题是由于使用了我自定义的命令\addsubsection*而不是\subsection*(因为我不希望子部分显示在目录中)而发生的。


最小代码:

 \pdfoutput=1
 \documentclass[11pt,a4paper,reqno]{amsart}
 \usepackage{amssymb}

 \usepackage{bm}
 \numberwithin{equation}{section}

 \usepackage{mathabx}
 \usepackage{mathrsfs}
 \usepackage{mathtools}
 \usepackage{color}



 \theoremstyle{plain}

 \newtheorem{theorem}{Theorem}[section]
 \newtheorem{proposition}[theorem]{Proposition}
 \newtheorem{lemma}[theorem]{Lemma}
 \newtheorem{corollary}[theorem]{Corollary}
 \newtheorem{conjecture}[theorem]{Conjecture}
 \newtheorem{principle}[theorem]{Principle}
 \newtheorem{claim}[theorem]{Claim}

 \theoremstyle{definition}

 \newtheorem{definition}[theorem]{Definition}
 \newtheorem{remark}[theorem]{Remark}
 \newtheorem{remarks}[theorem]{Remarks}
 \newtheorem{example}[theorem]{Example}
 \newtheorem{examples}[theorem]{Examples}

 \newcommand\R{\mathbb{R}}
 \newcommand\Z{\mathbb{Z}}
 \newcommand\N{\mathbb{N}}
 \newcommand\Q{\mathbb{Q}}
 \newcommand\eps{\varepsilon}
 \newcommand\normsymb{\ell}  % was \|\,\|
 \newcommand\norm[1]{\ell({#1})}   % was \|{#1}\|
 \newcommand\normn[1]{\ell_n({#1})}   % was \|{#1}\|
 \newcommand\free[1]{\mathbf{F}_{#1}}

 %\vast \Vast - Bigger than \Bigg
 \makeatletter
 \newcommand{\vast}{\bBigg@{4}}
 \newcommand{\Vast}{\bBigg@{5}}
 \makeatother

 %\addsubsection - not shown in toc
 \makeatletter
 \ifcsname phantomsection\endcsname
  \newcommand*{\qrr@gobblenexttocentry}[5]{}
 \else
  \newcommand*{\qrr@gobblenexttocentry}[4]{}
 \fi
 \newcommand*{\addsubsection}{%
  \addtocontents{toc}{\protect\qrr@gobblenexttocentry}%
  \subsection}
 \makeatother

 \usepackage[breaklinks=true,hidelinks]{hyperref}


 \begin{document}

 \title{TITLE}

 \maketitle
 %\today

 \tableofcontents %\need to fix it

 \section{Introduction}
 \label{section-introduction}

 bla bla bla...

 \vspace{0.2cm}
 \addsubsection*{blablabla}
 We consider this and that, that and that..

 \vspace{0.2cm}
 \section{New section}

 \vspace{0.2cm}
 \addsubsection*{here we are}

 \addsubsection*{also here}

 \vspace{0.2cm}
 \section{The main theorem}

 \end{document}

答案1

您当前的 定义\addsubsection插入\qrr@gobblenexttocentry到 ToC 中,试图吞噬 的后续条目\contentsline。这似乎很合适,但两个\addsubsection紧接着的 会导致问题,因为吞噬变得不同步。此外,如果您希望将 定义\qrr@gobblenexttocentry为以 的存在为条件\phantomsection(当hyperref加载后,很明显会选择哪个分支,因为你正在加载hyperref 这。

有一种更好的方法可以实现你的目标:\subsection按原样使用(带星号或不带星号)并添加到你的序言中

\setcounter{tocdepth}{1}

以上内容只会打印至 的 ToC 条目\section

在此处输入图片描述

\documentclass{amsart}

\usepackage{hyperref}

\let\addsubsection\subsection
\setcounter{tocdepth}{1}

\begin{document}

\tableofcontents %\need to fix it

\section{Introduction}

\addsubsection*{blablabla}

\section{New section}

\addsubsection*{here we are}

\addsubsection*{also here}

\section{The main theorem}

\end{document}

从技术上讲,这可以让你完全摆脱它\addsubsection。我把它留在上面的代码中,使它类似于\subsection

答案2

好吧,我找到了一个解决方案。这确实有点作弊,但结果是一样的。

我更换了

\addsubsection*{subsection-name}

\noindent\textbf{subsection-name.}

我猜想这种情况就像我们在寻找火焰喷射器时,一个简单的打火机就可以完成。然而,找到目录中未出现的自定义子部分的代码仍然是一个有趣的问题。

相关内容