# Nested matrices with aligned columns and rows

I'm trying to represent "matrices" with more than two dimensions, like the Riemann curvature tensor or Christoffel symbols, using nested matrices. I still don't know if this can help working with these objects (and that's not really relevant to this topic anyway), but before judging I'd like to see how it looks on a computer screen. The idea is to write a vector of matrices for a 3-indices matrix, a matrix of matrices for a 4-indices matrix and so on. This is not difficult in principle:

\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}


but the result looks really ugly:

That's what I wanted, but not how I wanted it. Is there a way to align columns and rows of different matrices? Or, alternatively, is there a way to insert internal parentheses that span through multiple rows in a big matrix with all the components?

• Welcome to TeX.SX! Please make your code compilable (if possible), or at least complete it with \documentclass{...}, the required \usepackage's, \begin{document}, and \end{document}. That may seem tedious to you, but think of the extra work it represents for TeX.SX users willing to give you a hand. Help them help you: remove that one hurdle between you and a solution to your problem. May 27, 2014 at 11:54
• To show the output you can upload an image, as you don't have enough rep yet, remove the ! from the generated markup, which will make a link, then someone will add the ! back later. May 27, 2014 at 12:44
• Henri: It's not tedious, but it's hard to understand why such important details aren't written in a place easy to find, such as the detailed guide in the post editor. I don't understand to which standard should I make my code compatible, but I edited as you asked. David: I remember clearly I discovered MathJax on StackExchange a few years ago, but it doesn't seem to work now. Was it removed?
– GRB
May 27, 2014 at 13:22
• @MFH I uploaded the image of the result. I hope that's OK. May 27, 2014 at 13:39

You could use the blkarray package:

\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}


• This seems exactly what I was looking for. I'll have a look at it and in case ask some more questions. Thanks!
– GRB
May 27, 2014 at 14:10
• @MFH You're welcome! Don't forget that you can accept an answer that you consider solved your problem by clicking the checkmark to its left. In case of doubt, please see How do you accept an answer?. May 27, 2014 at 14:22

With {pNiceMatrix} of nicematrix and its built-in command \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}