如何\arraycolsep
针对单个环境进行更改?例如,我已\arraycolsep
设置方程数组环境中“=”两侧的白色间距不会过大。但是,这bmatrix
也会使环境中矩阵的列更靠近。我想重新定义矩阵(bmatrix
)环境,以便它调用\arraycolsep
与全局使用的定义(对于方程数组)不同的局部定义。
答案1
您可以使用etoolbox 包对环境做出调整。
\documentclass{article}
\usepackage{amsmath}
\usepackage{etoolbox}
\AtBeginEnvironment{bmatrix}{\setlength{\arraycolsep}{50pt}}
\begin{document}
\[
\begin{bmatrix}
1 & 2 \\
3 & 4
\end{bmatrix}
\quad
\begin{pmatrix}
1 & 2 \\
3 & 4
\end{pmatrix}
\]
\end{document}
改变发生在组内部,因此当环境结束时它将被撤消。
当然,正如@Werner 指出的那样,解决问题的方法eqnarray
是使用align
来自amsmath 包反而。
答案2
您可以明确设置它们的列分隔。为了使文档中的间距保持一致,您可以在序言中指定尺寸,然后只需使用\BigColSep
:
\documentclass{article}
\def\BigColSep{\setlength{\arraycolsep}{50pt}}
\begin{document}
\[
\begingroup\BigColSep
\begin{array}{cc}
a & b
\end{array}
\endgroup
\]
\end{document}
\begingroup
仅当您在此特定数学显示中混合其他一些数组时才需要和。\endgroup
如果它仅由组成bmatrix
,则不需要它们。
答案3
如果你试图调整\arraycolsep
仅有的为获得符号(或其他数学运算符)周围的正确间距=
,则应考虑另一种方法:使用@{}
消除列间距,并{}
在等号前添加和 extra。比较两者的输出,您将看到匹配。
笔记:
- 正如其他人提到的,如果您只是使用
array
来对齐公式中的元素,您应该考虑其他选项,例如align
,和alignat
。
代码:
\documentclass{article}
\begin{document}
\noindent
Spacing with array:
\[
\begin{array}{r@{}l}
a &{}= b
\end{array}
\]
And without array:
\[
a = b
\]
\end{document}