创建数组环境的显示版本

创建数组环境的显示版本

我发现array环境对于对齐一些方程块非常有用,尤其是以更灵活的方式将每列作为一个整体对齐,与 不同alugn,但它有几个问题

  1. 你必须放入array另一个数学环境中
  2. 所有数学运算,如分数、和限度、积分看起来都很小,因为数组不是显示环境
  3. 行间距与其他 amsmath 环境不同,例如align。我希望间距为确切地gather与例如相同

以下是与align

在此处输入图片描述

我正在寻找的解决方案必须解决上面列出的所有问题,但也要保留以下关键特性array:完全控制列类型:lr特别是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

align这是应使用的方式:

\documentclass{article}
\usepackage{amsmath}
\begin{document}
some text
\begin{align}
\frac{a+b}{c} &= d &\quad x+y &=z \\
\frac{k}{i-j} &= n &\quad m &=n
\end{align}
some more text
\end{document}

示例代码的输出

答案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 不能使用重复运算符),当然还要更改环境名称。就是这样,输出为:

latex输出

关于列规范:列之间的默认间距与您的示例略有不同,但可以通过在列之间插入间距修饰符来轻松更改,例如'给出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}

在此处输入图片描述

相关内容