我正在尝试重新定义 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}