![带有 pmatrix 的子矩阵](https://linux22.com/image/321566/%E5%B8%A6%E6%9C%89%20pmatrix%20%E7%9A%84%E5%AD%90%E7%9F%A9%E9%98%B5.png)
我有一个矩阵
\documentclass{standalone}
\usepackage{amsmath}
$
P=
\begin{pmatrix}
0 & \gamma & \gamma & \gamma \\
0 & -2\tau -\gamma & 0& 0 \\
0 & 0 & -2\tau-\gamma & 0\\
0&0&0&-2\tai-\gamma
\end{pmatrix}
$
\documentclass{standalone}
\usepackage{amsmath}
$
P =
\begin{pmatrix}
%
\begin{pmatrix} 0 \end{pmatrix} &
\begin{pmatrix} \gamma & \gamma & \gamma\end{pmatrix} \\
%
%
\begin{pmatrix} 0\\ 0\\ 0 \end{pmatrix} &
\begin{pmatrix}-2\tau -\gamma & 0& 0\\
0 & -2\tau -\gamma & 0\\
0 & 0 & -2\tau -\gamma
\end{pmatrix}
\end{pmatrix}
$
但是子矩阵之间的列没有对齐,而且括号重叠。修复括号应该很容易,只需在行之间添加一些空间即可,但我还没有找到控制列的好方法。
我正在寻找一个好的选项来解决这个问题。如果可能的话,我更愿意坚持\pmatrix
。是否可以使用 pmatrix 使列对齐?
答案1
您可以将\gamma
元素插入到宽度的框内-2\tau-\gamma
,以便它们根据需要在水平方向上占用相同的空间:
\documentclass{article}
\usepackage{amsmath,calc}
\begin{document}
\[
P =
\begin{pmatrix}
%
\begin{pmatrix} 0 \end{pmatrix} &
\begin{pmatrix}
\makebox[\widthof{$-2\tau-\gamma$}]{$\gamma$} &
\makebox[\widthof{$-2\tau-\gamma$}]{$\gamma$} &
\makebox[\widthof{$-2\tau-\gamma$}]{$\gamma$}
\end{pmatrix} \\[.5\normalbaselineskip]
%
\begin{pmatrix} 0 \\ 0 \\ 0 \end{pmatrix} &
\begin{pmatrix}
-2\tau -\gamma & 0 & 0 \\
0 & -2\tau -\gamma & 0 \\
0 & 0 & -2\tau -\gamma
\end{pmatrix}
\end{pmatrix}
\]
\end{document}
我强调了第一行和第二行之间的间隙;您可以根据需要进行调整。
答案2
该软件包中nicematrix
有专门用于解决此类问题的工具。
\documentclass{article}
\usepackage{nicematrix}
\begin{document}
$P = \begin{pNiceArray}[margin]{c@{\qquad}ccc}
0 & \gamma & \gamma & \gamma \\
0 & -2 \tau - \gamma & 0 & 0 \\
0 & 0 & -2 \tau - \gamma & 0 \\
0 & 0 & 0 -2 \tau - \gamma
\CodeAfter [sub-matrix/extra-height=-1pt]
\SubMatrix({1-1}{1-1})
\SubMatrix({1-2}{1-4})
\SubMatrix({2-1}{4-1})
\SubMatrix({2-2}{4-4})
\end{pNiceArray}$
\end{document}
答案3
以下是包含该blkarray
软件包和一些微调的解决方案:
\documentclass{article}
\usepackage{mathtools}
\usepackage{blkarray}
\begin{document}
$ P =
\begin{pmatrix}
\begin{blockarray}{c ccc}%
\BAnoalign{\vspace*{-2ex}}
\begin{block}{(c)@{\hspace*{1em}}(ccc)}
0 & \gamma & \gamma & \gamma \\
\end{block}
\begin{block}{(c)@{\hspace*{1.333em}} (ccc)}%
\BAnoalign*{\vspace*{-2ex}}
0 & -2\tau -\gamma & 0 & 0 \\
0 & 0 & \mathclap{-2\tau -\gamma} & 0 \\
0 & 0 & 0 & -2\tau -\gamma \\
\end{block}
\BAnoalign{\vspace*{-5ex}}
\end{blockarray}%
\end{pmatrix} $
\end{document}