减去相同维度的矩阵,如何使它们对齐?

减去相同维度的矩阵,如何使它们对齐?

这个问题已经在我的心里燃烧了一段时间了

有时我想减去两个完全相同维度的矩阵,但由于它们的内容略有不同,因此得出的大小并不相同。

例如:此行代码生成

\begin{bmatrix} x_1 & 0 \\ 0 & x_2 \end{bmatrix} - \begin{bmatrix} x_1^2 & 0 \\ 0 & x_2^2 \end{bmatrix}

在此处输入图片描述

如您所见,第二个矩阵略大。有什么方法可以使第一个矩阵更大,或者将两个矩阵对齐到顶部吗?

答案1

可以使用宏\vphantom来插入不可见的垂直空间,并附带参数高度和深度:

\documentclass{article}
\usepackage{amsmath}
\begin{document}
\[
  \begin{bmatrix}
    \vphantom{x_1^2}x_1 & 0 \\
    0 & x_2\vphantom{x_2^2}
  \end{bmatrix}
   - \begin{bmatrix} x_1^2 & 0 \\ 0 & x_2^2 \end{bmatrix}
\]
\end{document}

结果

答案2

除了插入自定义大小的\vphantoms 之外,您还可以插入\mathstrut指令 - 在第一个 的两行中各插入一个bmatrix。(Aside:\mathstrut定义为\vphantom{(},即 a\mathstrut是一个具有括号深度和高度的垂直幻影(。)

\documentclass{article}
\usepackage{amsmath} % for "bmatrix" environment
\begin{document}
\[
  \begin{bmatrix} 
  x_1\mathstrut & 0 \\ 
  0\mathstrut & x_2 
  \end{bmatrix}
  -
  \begin{bmatrix} 
  x_1^2 & 0 \\ 
  0 & x_2^2 
  \end{bmatrix}
\]
\end{document}

答案3

\bracketMatrixstack包的行间距tabstackengine会自动\strut调整,因此两个矩阵的高度相同。请注意,列间间隙和行间基线跳跃也可以通过以下方式独立设置:

\setstacktabbedgap{1.5ex}
\setstackgap{L}{1.3\normalbaselineskip}

这是 MWE。

\documentclass{article}
\usepackage{tabstackengine}
\setstacktabbedgap{1.5ex}
\setstackgap{L}{1.3\normalbaselineskip}
\begin{document}
\[
  \bracketMatrixstack{x_1 & 0 \\ 0 & x_2}
- \bracketMatrixstack{ x_1^2 & 0 \\ 0 & x_2^2 }
\]
\end{document}

在此处输入图片描述

答案4

这是一个有点复杂的结构,{NiceArray}nicematrix它能确保完美对齐。

\documentclass{article}
\usepackage{nicematrix}

\begin{document}

$\begin{NiceArray}{[cc]c[cc]}
x_1 & 0 & \Block{2-1}{-} & x_1^2 & 0 \\
0   & x_2 & & 0 & x_2^2 \\
\end{NiceArray}$

\end{document}

上述代码的输出

相关内容