我发现array
环境对于对齐一些方程块非常有用,尤其是以更灵活的方式将每列作为一个整体对齐,与 不同alugn
,但它有几个问题
- 你必须放入
array
另一个数学环境中 - 所有数学运算,如分数、和限度、积分看起来都很小,因为数组不是显示环境
- 行间距与其他 amsmath 环境不同,例如
align
。我希望间距为确切地gather
与例如相同
以下是与align
我正在寻找的解决方案必须解决上面列出的所有问题,但也要保留以下关键特性array
:完全控制列类型:l
,r
特别是c
所有其他属性,如@{}
,,>{}
<{}
垂直线c|c
等。
基本上我需要一个独立的显示变体默认值array
,其间距与其他 amsmath 环境相同。对我来说,让每行都贴上标签并不是最重要的,但如果有这样的选项就好了。
这是所需环境的“MWE”及其输出
\documentclass{article}
\begin{document}
\begin{displayArray}{ *{3}{c} }
a^2+b^2=c^2 & \frac{m}{n} = q & 1+2+3+4+5=15 \\
\sum_{i=1}^n & \int_a^bf(x)dx=F(x) & k=j
\end{displayArray}
\end{document}
答案1
答案2
我使用了IEEEeqnarray
很多,以至于它实际上是我唯一使用的数学环境。它可以做很多事情,非常适合您的示例。我不需要对您的 MWE 进行太多修改即可获得您想要的输出:
\documentclass{article}
\usepackage{IEEEtrantools}
\begin{document}
\begin{IEEEeqnarray}{C'C'C}
a^2+b^2=c^2 & \frac{m}{n} = q & 1+2+3+4+5=15 \\
\sum_{i=1}^n & \int_a^bf(x)dx=F(x) & k=j
\end{IEEEeqnarray}
\end{document}
因此,我必须做的事情是加载包,稍微更改列规范(IEEEeqnarray 不能使用重复运算符),当然还要更改环境名称。就是这样,输出为:
关于列规范:列之间的默认间距与您的示例略有不同,但可以通过在列之间插入间距修饰符来轻松更改,例如'
给出1em
列之间的间距。
更多细节
IEEEeqnarray
使用列规范,并&
在每列之间放置一个,类似于表格。对于简单的事情,align
可以做同样的事情,但我总是发现align
对于更复杂的情况很笨拙且难以掌握。例如,我在将对齐的文本放在方程式的右侧时遇到了一些困难。IEEEeqnarray
有额外的列类型可以做到这一点!
总体而言,与其他环境相比IEEEeqnarray
,它使用较少的底层抽象\halign
,我认为这在这种情况下是一件好事。您可以轻松定义自己的列类型以及列间粘合,至少对我来说,与号的位置更合乎逻辑。因此,这是一个明确的建议,IEEEeqnarray
尽可能使用 :) 对于具有对齐等号的简单方程式,我首选的列规范是{rCl}
,效果很好。
答案3
您可以始终定义新的列类型来设置显示样式中的所有数学运算,并将其包装array
到另一个\arraystretch
更大的环境中。
\documentclass{article}
\usepackage{amsmath}
\usepackage{array}
\newcolumntype{C}{>{\displaystyle}c}
\newcolumntype{L}{>{\displaystyle}l}
\newcolumntype{R}{>{\displaystyle}r}
\newenvironment{displayArray}[1]{%
\let\currentstretch\arraystretch
\renewcommand*{\arraystretch}{2}
\[\begin{array}{#1}
}{%
\end{array}\]
\let\arraystretch\currentstretch
}
\begin{document}
\begin{displayArray}{LR}
\frac{a+b}{c} = d & x+y=z \\
\frac{k}{i-j} = n & m=n
\end{displayArray}
\end{document}
答案4
以下是使用 tabularray 包的可能解决方案:cells = {mode=dmath}
为所有单元格设置显示数学模式。
\documentclass{article}
\usepackage{tabularray}
\usepackage{amsmath}
\NewTblrEnviron{displayArray}
\SetTblrInner[displayArray]{
cells = {mode=dmath},
colsep = 5pt,
rowsep = 0.5\jot,
}
\begin{document}
\section{align}
\begin{align}
a^2+b^2=c^2 && \frac{m}{n} = q && 1+2+3+4+5=15 \\
\sum_{i=1}^n && \int_a^bf(x)dx=F(x) && k=j
\end{align}
\section{displayArray}
\begin{displayArray}{ *{3}{c} }
a^2+b^2=c^2 & \frac{m}{n} = q & 1+2+3+4+5=15 \\
\sum_{i=1}^n & \int_a^bf(x)dx=F(x) & k=j
\end{displayArray}
\end{document}