删除 amsart 文档类中子部分之间的额外间距

删除 amsart 文档类中子部分之间的额外间距

如何删除 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}

在此处输入图片描述

相关内容