为什么在重新定义 \chapter 时 \tableofcontents{} 会报告“可能缺少 \item}”?

为什么在重新定义 \chapter 时 \tableofcontents{} 会报告“可能缺少 \item}”?

我正在尝试重新定义 chapter 命令,以删除放置在页面顶部时出现在章节样式上方的垂直空间,同时在页面中间使用时仍将其保持在原位(即不会使其与其他文本重叠)。我发现 vspace 仅在页面中间使用时才会增加空间,而 vspace* 总是增加空间,我做了类似的事情:

\documentclass[oneside,12pt]{report}
\usepackage{amsmath}
\RequirePackage[style=ieee, backend=biber, citestyle=ieee, natbib=true]{biblatex}

\makeatletter
\let\oldchapter\chapter
\renewcommand*\chapter{
  \@ifstar{\starchapter}{\@dblarg\nostarchapter}
}
\makeatother

\def \extrachpspc{15pt}
\newcommand*\starchapter[1]{
  \vspace{\extrachpspc}\vspace*{-\extrachpspc}\oldchapter*{#1}
}
\def\nostarchapter[#1]#2{
  \vspace{\extrachpspc}\vspace*{-\extrachpspc}\oldchapter[{#1}]{#2}
}

\addbibresource{references.bib}

\begin{document}
\tableofcontents{}
\end{document}

在页面中间章节之前添加空间,而在页面顶部呈现时也会删除空间。使章节呈现时没有顶部边距。

这曾经工作正常,但我猜我在某个地方更新了某个包(可能是很久以前,因为我不记得了),因为现在我收到以下错误:

! LaTeX Error: Something's wrong--perhaps a missing \item.

See the LaTeX manual or LaTeX Companion for explanation.
Type  H <return>  for immediate help.
 ...                                              

l.3 \contentsline {chapter}{\numberline {1}*}{2}

我的问题是:

  • 这个错误是什么意思?
  • 是否存在冲突amsmath?因为如果我删除这个简单示例,则会呈现,但我稍后需要该包。
  • 还有其他方法可以实现我的目标吗?
  • 最后,我的方法有什么问题?

答案1

如果您使用%删除宏中添加的虚假空格,则会出现错误(但代码看起来很奇怪,因为章节从新页面开始)

\documentclass[oneside,12pt]{report}
\usepackage{amsmath}
\RequirePackage[style=ieee, backend=biber, citestyle=ieee, natbib=true]{biblatex}

\makeatletter
\let\oldchapter\chapter
\renewcommand*\chapter{%
  \@ifstar{\starchapter}{\@dblarg\nostarchapter}%
}
\makeatother

\def \extrachpspc{15pt}
\newcommand*\starchapter[1]{%
  \vspace{\extrachpspc}\vspace*{-\extrachpspc}\oldchapter*{#1}%
}
\def\nostarchapter[#1]#2{%
  \vspace{\extrachpspc}\vspace*{-\extrachpspc}\oldchapter[{#1}]{#2}%
}

\addbibresource{references.bib}

\begin{document}
\tableofcontents
\end{document}

相关内容