这是我的第一个 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}