定义具有缩小间距的全新分割环境

定义具有缩小间距的全新分割环境

这是我的第一个 stackexchange 问题,因此对于任何不当之处深表歉意。

我正在用双倍行距写文档。但我不希望多行方程式的行间间隙太大。

我知道我可以通过以下方式在全球范围内进行此更改

\setlength{\jot}{<size>}

...但这也会影响我不想更改的其他间距,例如在 xymatrix 中或使用 \gather 时

我还知道我可以使用

\begingroup\setlength{\jot}{<size>}\begin{split}
...
\end{split}\endgroup

...但是我的文档中有大量拆分方程式,我不想这样做让它变得更加混乱。

我尝试定义一个新的环境来实现这个局部变化,就像这样

\newenvironment{Split}%
{\begingroup\setlength{\jot}{-3pt}\begin{split}}%
{\end{split}\endgroup}

但是当我尝试在文档中实现这一点时,我收到以下错误消息:

LaTeX 错误:\begin{split} 在输入行 xxx 上以 \end{Split} 结束。

我以前曾成功定义过新环境,所以我不知道这次我做错了什么。

梅威瑟:

\documentclass{article}

\usepackage{setspace}
\doublespacing

\usepackage{amsmath}

\newenvironment{Split}%
{\begingroup\setlength{\jot}{-3pt}\begin{split}}%
{\end{split}\endgroup}

\begin{document}

\begin{equation}
\begin{split}
y&=x+x\\
&=2x
\end{split}
\end{equation}

\begin{equation}
\begin{Split}
y&=x+x\\
&=2x
\end{Split}
\end{equation}

\end{document}

答案1

\documentclass{article}
\usepackage{setspace}
\usepackage{amsmath}
\usepackage{etoolbox}

\usepackage{lipsum} % just for the example
\usepackage[vmargin=2cm]{geometry} % just for the example

\doublespacing

\BeforeBeginEnvironment{split}{\linespread{1}\selectfont}{}{}

\begin{document}

\lipsum*[2]
\begin{equation}
\begin{split}
y&=x+x\\
&=2x
\end{split}
\end{equation}
\lipsum*[2]
\begin{align}
y&=x+x\\
&=2x
\end{align}
\lipsum*[2]
\begin{gather}
y=x+x\\
z=2x
\end{gather}
\lipsum*[2]

\end{document}

在此处输入图片描述

答案2

您可以修改\gather@split宏,\linespread{1}\selectfont在之前调用\spread@equation

这不会影响其他对齐环境。

\documentclass{article}
\usepackage{setspace}
\usepackage{amsmath}
\usepackage{etoolbox}

\usepackage{lipsum} % just for the example
\usepackage[vmargin=2cm]{geometry} % just for the example

\doublespacing

\makeatletter
\patchcmd{\gather@split}
  {\spread@equation}
  {\linespread{1}\selectfont\spread@equation}
  {}{}
\makeatother

\begin{document}

\lipsum*[2]
\begin{equation}
\begin{split}
y&=x+x\\
&=2x
\end{split}
\end{equation}
\lipsum*[2]
\begin{align}
y&=x+x\\
&=2x
\end{align}
\lipsum*[2]
\begin{gather}
y=x+x\\
z=2x
\end{gather}
\lipsum*[2]

\end{document}

在此处输入图片描述

相关内容