如何删除 amsart 文档类中给定部分的子部分之间的多余空格,以便两个子部分之间的距离固定且等于两行之间的常规距离?
问题是,不同页面上子节之间的垂直间距可能有很大差异(尤其是当有方程式时)。垂直间距可能达到通常值的 3-4 倍。
梅威瑟:
\documentclass[a4paper]{amsart}
\usepackage{lipsum}
\begin{document}
\section{section 1}
\subsection{}\lipsum[1]
\lipsum[1]
% how to remove extra space here?
\subsection{}\lipsum[1]
\end{document}
答案1
要删除小节标题前的延伸,可以修补该标题的定义,如下所示:
\usepackage{etoolbox}
\makeatletter
\patchcmd\subsection
{.5\linespacing\@plus.7\linespacing}
{1\linespacing}
{}
{}{}
\makeatother
我没有测试过这个,但检查了补丁的语法(通过将其与我之前的回答另一个关于更改的问题amsart
,并基于 TeX Live 中包含的当前版本amsart
)。这将删除之前的拉伸全部小节标题。构造方式amsart
是,不知道新小节之前的内容是否也是小节,并且要适应这一点需要对类文件进行大量重写。
如果页面上没有其他地方允许拉伸,这肯定会导致日志中出现警告消息。如果页面上有数学显示而没有部分或类似的标题,则所有拉伸将在显示之前和之后分配。article
与“标准” LaTeX 类不同,amsart
不保证打印区域具有针对公制测量调整的整数行数。因此,如果页面仅包含文本,则很可能总是存在轻微的不匹配。
答案2
我觉得你在辱骂\subsection
,而且我猜你从来不用\subsection
头衔。
不过,我将提供一种在括号中添加可选标题的方法,这可能会派上用场。
\documentclass[a4paper]{amsart}
\usepackage{lipsum}
\makeatletter
\def\@fakesubsection{%
\@startsection{subsection}{2}%
\z@
\z@ % was .5\linespacing\@plus.7\linespacing
{-.5em}%
{\normalfont\bfseries}%
}
\NewDocumentCommand{\numbered}{o}{%
\IfNoValueTF{#1}{%
\@fakesubsection{}%
}{%
\@fakesubsection{(#1)\spacefactor\@M}%
}%
}
\makeatother
\begin{document}
\section{section 1}
\numbered
\lipsum[1][1-4]
\numbered[With title]
\lipsum[2]1-3]
\numbered
\lipsum[3][1-4]
\end{document}