背景:我正在使用amsbook
环境,默认情况下,由 创建的标题从\tableofcontents
页面的第一个四分之一附近开始。我一直试图通过在\vspace{-3in}
之前放置一个 来将其向上移动\tableofcontents
,但它没有任何作用。然后我尝试了\vspace*{-3in}
,它不仅没有起作用,还在目录前插入了两个空白页(如果我使用oneside
参数,则为 1)。我也用正数测试了它并观察到了相同的行为。amsbook
amsbook
然而,当我从改为时,一切正常article
。
问题:如何使用vspace
负值在环境中将目录向上移动amsbook
,而无需创建新页面。我的目录应该从新页面开始。
我还尝试过其他方法:除了使用普通的\vspace
right之外\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}