以下代码生成如图所示的矩阵
\documentclass{article}
\usepackage{amsmath}
\begin{document}
\begin{equation}
\left[ {\begin{array}{*{20}{c}} \mathbf{y}_1 \\ \vdots \\ \mathbf{y}_s \\ \vdots \\ \mathbf{y}_S \end{array}} \right] =
\begin{bmatrix} \mathbf{y}_1 \\ \vdots \\ \mathbf{y}_s \\ \vdots \\ \mathbf{y}_S \end{bmatrix}
\end{equation}
\end{document}
对我来说,(右边的)产生的矩阵bmatrix
有点拥挤,有没有办法使用来产生一个宽敞的矩阵(像左边的)bmatrix
?
只是好奇 :)
答案1
如果您确实想要像 中的空间array
,请使用array
:
\renewenvironment{bmatrix}
{\left[\array{*{\value{MaxMatrixCols}}{c}}}
{\endarray\right]}
完整示例
\documentclass{article}
\usepackage{amsmath}
\renewenvironment{bmatrix}
{\left[\array{*{\value{MaxMatrixCols}}{c}}}
{\endarray\right]}
\begin{document}
\[
\left[
\begin{array}{ c }
\mathbf{y}_1 \\ \vdots \\ \mathbf{y}_s \\ \vdots \\ \mathbf{y}_S
\end{array}
\right] =
\begin{bmatrix}
\mathbf{y}_1 \\ \vdots \\ \mathbf{y}_s \\ \vdots \\ \mathbf{y}_S
\end{bmatrix}
\]
\end{document}
但请不要这样做:这个标准\arraycolsep
确实太高了。也许
\renewenvironment{bmatrix}
{\left[\hspace{-.5\arraycolsep}\array{*{\value{MaxMatrixCols}}{c}}}
{\endarray\hspace{-.5\arraycolsep}\right]}
这将产生
实际上,为了获得与标准相同的行为bmatrix
,应该添加一小段代码:
\makeatletter
\renewenvironment{bmatrix}
{\left[\let\@ifnextchar\new@ifnextchar\array{*{\value{MaxMatrixCols}}{c}}}
{\endarray\right]}
\makeatother
这样就可以开始一排[
而不需要采取特殊的预防措施。
答案2
的定义bmatrix
使用\left[
...但也删除了由内部的统一性插入\right]
的外部空间(作为和的一部分;参见col
sep
array
\env@matrix
\endmatrix
amsmath.dtx
)。您可以根据需要进行调整:
\documentclass{article}
\usepackage{amsmath}
\makeatletter
% Original definition of bmatrix
% \newenvironment{bmatrix}{\left[\env@matrix}{\endmatrix\right]}
\renewenvironment{bmatrix}
{\left[\hspace{\arraycolsep}\env@matrix}
{\endmatrix\hspace{\arraycolsep}\right]}
\makeatother
\begin{document}
\[
\left[
\begin{array}{ *{20}{c} }
\mathbf{y}_1 \\ \vdots \\ \mathbf{y}_s \\ \vdots \\ \mathbf{y}_S
\end{array}
\right] =
\begin{bmatrix}
\mathbf{y}_1 \\ \vdots \\ \mathbf{y}_s \\ \vdots \\ \mathbf{y}_S
\end{bmatrix}
\]
\end{document}