我正在尝试使用嵌套矩阵来表示具有两个以上维度的“矩阵”,例如黎曼曲率张量或克里斯托费尔符号。我仍然不知道这是否有助于处理这些对象(无论如何这与本主题无关),但在判断之前,我想看看它在计算机屏幕上的样子。这个想法是为 3 指标矩阵编写一个矩阵向量,为 4 指标矩阵编写一个矩阵矩阵,依此类推。这在原则上并不难:
\documentclass{article}
\usepackage{amsmath}
\begin{document}
\[
\Gamma^{\sigma}_{\mu \nu} = \begin{pmatrix}
\begin{pmatrix}
0 & 0 & 0 \\
0 & -r & 0 \\
0 & 0 & -r \sin^2(\vartheta)
\end{pmatrix} \\
\begin{pmatrix}
0 & \frac{1}{r} & 0 \\
\frac{1}{r} & 0 & 0 \\
0 & 0 & - \sin(\vartheta) \cos(\vartheta)
\end{pmatrix} \\
\begin{pmatrix}
0 & 0 & \frac{1}{r} \\
0 & 0 & \frac{1}{\tan(\vartheta)} \\
\frac{1}{r} & \frac{1}{\tan(\vartheta)} & 0
\end{pmatrix}
\end{pmatrix}
\]
\end{document}
但结果看起来确实很丑陋:
这就是我想要的,但不是我想要的。有没有办法对齐不同矩阵的列和行?或者,有没有办法在包含所有组件的大矩阵中插入跨越多行的内部括号?
答案1
您可以使用blkarray
包裹:
\documentclass{article}
\usepackage{amsmath}
\usepackage{blkarray}
\begin{document}
\[
\Gamma^{\sigma}_{\mu \nu} =
\left(
\begin{blockarray}{ ccc }
\begin{block}{( ccc )}
0 & 0 & 0 \\
0 & -r & 0 \\
0 & 0 & -r \sin^2(\vartheta) \\
\end{block}
\begin{block}{( ccc )}
0 & \frac{1}{r} & 0 \\
\frac{1}{r} & 0 & 0 \\
0 & 0 & - \sin(\vartheta) \cos(\vartheta) \\
\end{block}
\begin{block}{( ccc )}
0 & 0 & \frac{1}{r} \\[1ex]
0 & 0 & \frac{1}{\tan(\vartheta)} \\[1ex]
\frac{1}{r} & \frac{1}{\tan(\vartheta)} & 0 \\
\end{block}
\end{blockarray}
\right)
\]
\end{document}
答案2
使用{pNiceMatrix}
ofnicematrix
及其内置命令\SubMatrix
。
\documentclass{article}
\usepackage{nicematrix}
\begin{document}
\[
\Gamma^{\sigma}_{\mu \nu} =
\begin{pNiceMatrix}[margin,cell-space-limits=1pt]
0 & 0 & 0 \\
0 & -r & 0 \\
0 & 0 & -r \sin^2(\vartheta) \\[1ex]
0 & \tfrac{1}{r} & 0 \\
\tfrac{1}{r} & 0 & 0 \\
0 & 0 & - \sin(\vartheta) \cos(\vartheta) \\[1ex]
0 & 0 & \tfrac{1}{r} \\
0 & 0 & \tfrac{1}{\tan(\vartheta)} \\
\tfrac{1}{r} & \tfrac{1}{\tan(\vartheta)} & 0 \\
\CodeAfter
\SubMatrix({1-1}{3-3})
\SubMatrix({4-1}{6-3})
\SubMatrix({7-1}{9-3})
\end{pNiceMatrix}
\]
\end{document}