\vspace* 在 amsbook 中添加不需要的页面

\vspace* 在 amsbook 中添加不需要的页面

背景:我正在使用amsbook环境,默认情况下,由 创建的标题从\tableofcontents页面的第一个四分之一附近开始。我一直试图通过在\vspace{-3in}之前放置一个 来将其向上移动\tableofcontents,但它没有任何作用。然后我尝试了\vspace*{-3in},它不仅没有起作用,还在目录前插入了两个空白页(如果我使用oneside参数,则为 1)。我也用正数测试了它并观察到了相同的行为。amsbook

amsbook然而,当我从改为时,一切正常article

问题:如何使用vspace负值在环境中将目录向上移动amsbook,而无需创建新页面。我的目录应该从新页面开始。

我还尝试过其他方法:除了使用普通的\vspaceright之外\tableofcontents,我还尝试过

\usepackage{etoolbox}
\patchcmd{\tableofcontents}{\@starttoc}{\clearpage\vspace{-3in}\@starttoc}{}{}

它也没有做任何事情,并且在我添加时创建了一个新页面*

代码:

\documentclass[12pt]{amsbook}

\begin{document}
  \tableofcontents
\end{document}
\documentclass[12pt]{amsbook}

\begin{document}
  \vspace{-3in}
  \tableofcontents
\end{document}

上述两个代码块都产生了这个

具有空白目录的页面

\documentclass[12pt]{amsbook}

\begin{document}
  \vspace*{-3in}
  \tableofcontents
\end{document}

这产生了

三张空白页,目录为空白

答案1

您可能希望以不同的方式处理由\tableofcontents和发起的章节。\listoffigures\listoftables

\documentclass[oneside]{amsbook}
\usepackage{xpatch}
\usepackage{showframe}% just for showing the placement

\makeatletter
\xpatchcmd{\@starttoc}{\@makeschapterhead}{\special@makeschapterhead}{}{}
\let\special@makeschapterhead\@makeschapterhead
\xpatchcmd{\special@makeschapterhead}{7.5pc}{0pt}{}{}
\makeatother

\begin{document}

\frontmatter

\tableofcontents

\mainmatter

\chapter{Test title}

\end{document}

oneside只是用它来在较小的图片中显示相对位置;也showframe用它来显示文本块边界。

在此处输入图片描述

答案2

您可以尝试一下。它将影响所有未编号的章节!根据您的需要调整 10pt。

\documentclass[12pt]{amsbook}
\usepackage{etoolbox}
\makeatletter
\patchcmd\@makeschapterhead{7.5pc}{10pt}{}{\fail}
\makeatother
\begin{document}
  \tableofcontents
  \chapter*{something}
\end{document}

相关内容