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