在 中amsart
,如何\vspace{3mm}
在标题“目录”和目录之间留下附加内容?
答案1
这是一个选项:
\documentclass{amsart}
\makeatletter
\def\@starttoc#1#2{\begingroup
\setTrue{#1}%
\par\removelastskip\vskip\z@skip
\@startsection{}\@M\z@{\linespacing\@plus\linespacing}%
{.5\linespacing}{\centering\contentsnamefont}{#2}%
\ifx\contentsname#2%
\vspace{3mm}% Here for the ToC only
\else \addcontentsline{toc}{section}{#2}\fi
%\vspace{3mm}% Here for all lists
\makeatletter
\@input{\jobname.#1}%
\if@filesw
\@xp\newwrite\csname tf@#1\endcsname
\immediate\@xp\openout\csname tf@#1\endcsname \jobname.#1\relax
\fi
\global\@nobreakfalse \endgroup
\addvspace{32\p@\@plus14\p@}%
\let\tableofcontents\relax
}
\makeatother
\begin{document}
\tableofcontents
\listoftables
\listoffigures
\section{Test section}
\begin{figure}
\caption{A test figure}
\end{figure}
\begin{table}
\caption{A test table}
\end{table}
\end{document}
使用
\vspace{3mm}% Here for the ToC only
仅为目录添加间距。注释掉上一行并取消注释
%\vspace{3mm}% Here for all lists
如果也必须对 LoF 和 LoT 进行添加。
答案2
对于所有与 ToC 相关的结构,以下补丁来自etoolbox
作品:
\usepackage{etoolbox}
\makeatletter
% \patchcmd{<cmd>}{<search>}{<replace>}{<success>}{<failure>}
\patchcmd{\@starttoc}{.5\linespacing}{5\baselineskip}{}{}
\makeatother
它将现有的垂直间隙(.5\linespacing
或 6pt)替换为5\baselineskip
(或您选择的任何值)。如果您只想影响 ToC(而不影响 LoF 或 LoT),则需要在上述补丁之前放置以下内容:
\makeatletter
\let\old@starttoc\@starttoc
\renewcommand{\listoffigures}{\old@starttoc{lof}\listfigurename}
\renewcommand{\listoftables}{\old@starttoc{lot}\listtablename}
\makeatother
这是一个完整的例子:
\documentclass{amsart}
\usepackage{etoolbox}
\makeatletter
\let\old@starttoc\@starttoc
\renewcommand{\listoffigures}{\old@starttoc{lof}\listfigurename}
\renewcommand{\listoftables}{\old@starttoc{lot}\listtablename}
% \patchcmd{<cmd>}{<search>}{<replace>}{<success>}{<failure>}
\patchcmd{\@starttoc}{.5\linespacing}{5\baselineskip}{}{}
\makeatother
\begin{document}
\tableofcontents
\listoffigures
\section{A section}
\begin{figure}
\caption{A figure caption}
\end{figure}
\end{document}