# Braces for block matrix

I have a block matrix S of dimension (Lm+n)\times (L+n)m

But I think it is not written in a clear way for the reader. Do you have suggestions?

this is the code I wrote so far (thanks to some answers found here in tex.stackexchange):

\documentclass{article}
\usepackage{amsmath}
\usepackage{xcolor}
%%overbrace matrix
\newcommand\overmat[2]{%
\makebox[0pt][l]{$\smash{\color{white}\overbrace{\phantom{% \begin{matrix}#2\end{matrix}}}^{\text{\color{black}#1}}}$}#2}
\newcommand\bovermat[2]{%
\makebox[0pt][l]{$\smash{\overbrace{\phantom{% \begin{matrix}#2\end{matrix}}}^{\text{#1}}}$}#2}
\newcommand\partialphantom{\vphantom{\frac{\partial e_{P,M}}
{\partial w_{1,1}}}}

\begin{document}

$$S=\left[\phantom{\begin{matrix}a_0\\ b_0\\ \ddots\\b_0 \end{matrix}} \right.\hspace{-1.5em} \begin{matrix} \bovermat{mn}{M_n & ... & M_1 \ } & \bovermat{Lm}{0_{n\times m} & ...& 0_{n\times m}}\\ a_nI_m & ... & a_1I_m & a_0I_m & ... & 0\\ \vdots & \ddots & & & \ddots & \vdots \\ 0 & & a_nI_m & ... & ... & a_0I_m \end{matrix} \hspace{-1.5em} \left.\phantom{\begin{matrix}a_0\\ a_0\\ \ddots\\b_0 \end{matrix}}\right]\hspace{-1em} \begin{tabular}{l} \left.\lefteqn{\phantom{\begin{matrix} a_0 \end{matrix}}}\right\}n\\ \left.\lefteqn{\phantom{\begin{matrix} b_0\\ \ddots\\ b_0\ \end{matrix}}} \right\}Lm \end{tabular}$$
\end{document}

• I think it is clear enough. What do you expect to have?
– user156344
Apr 4, 2019 at 9:17
• Could you please specify the desired reasult? For example, add a photo of a drawing by hand of what you want to achieve. Thank you. Apr 4, 2019 at 9:19

Personally I would not add these braces since they contain redundant information. If you know that the single blocks have fixed dimensions, as indicated by the notation $0_{n\times m}$ then all you need to know in addition to specify the dimension of the matrix is how many blocks there are. This can be done e.g. with TikZ as follows:

\documentclass{article}
\usepackage{amsmath}
\usepackage{tikz}
\usetikzlibrary{matrix}
\begin{document}

$$S=\vcenter{\hbox{% really dotted from https://tex.stackexchange.com/a/52856/121799 \begin{tikzpicture}[really dotted/.style={dash pattern=on 0.01pt off 4.5pt, line cap=round},inner xsep=0pt] \matrix[matrix of math nodes,left delimiter={[} ,right delimiter={]},column 2/.append style={column sep=3em}, column 5/.append style={column sep=3em}] (mat) { M_n & & M_1 & 0_{n\times m} & & 0_{n\times m}\\ a_nI_m & & a_1I_m & a_0I_m & & 0\\ ~ & & & & & \$1ex] 0 & & a_nI_m & 0 & & a_0I_m\\ }; \draw[really dotted,line width=1pt,shorten >=2pt] (mat-1-1) -- (mat-1-3) node[midway,above,font=\tiny]{m times} (mat-1-4) -- (mat-1-6) node[midway,above,font=\tiny]{m times} (mat-2-1) -- (mat-2-3) (mat-2-4) -- (mat-2-6) (mat-4-1) -- (mat-4-3) (mat-4-4) -- (mat-4-6); \draw[really dotted,line width=1pt,shorten >=2pt] (mat-2-1) -- (mat-4-3) (mat-2-1) -- (mat-4-1) (mat-2-3) -- (mat-4-3) (mat-2-4) -- (mat-4-6) (mat-2-4) -- (mat-4-4) (mat-2-6) -- (mat-4-6); \end{tikzpicture}}}$$ \end{document}  • this is indeed a way better notation. Thank you! Apr 5, 2019 at 7:33 • @marmot Confirmed +500 after the green check. Thank you very much. Apr 5, 2019 at 20:15 • @Sebastiano Mille grazie! (I am not sure I deserved it....) – user121799 Apr 5, 2019 at 20:16 • @marmot Don't thank me, I do something with my heart. You have already thanked me by giving an answer to the OP who had been waiting for about a month. Apr 5, 2019 at 20:17 Another alternative option could be using the nicematrix package. You always get the same image as the very good user @marmot but here there is a short code; the dots are slightly spaced from the elements of the matrix. With a zoom between the two images you can see the difference between two images. \documentclass{article} \usepackage{nicematrix} \begin{document} \[S=\left[\begin{NiceArray}{CCCCCC} M_n & \overset{\scriptstyle m \text{ times}}{\Cdots} & M_1&\!\!\! 0_{n\times m}&\overset{\scriptstyle m \text{ times}}{\Cdots} &0_{n\times m}\\ a_nI_m & \Cdots & a_1I_m&\!\!\! a_0I_m&\Cdots & 0\\ \Vdots & \Ddots & \Vdots &\!\!\! \Vdots & \Ddots & \Vdots\\ 0 & \Cdots & a_nI_m & 0&\Cdots &a_0I_m\\ \end{NiceArray}\right]$
\end{document}


as supplement to @Sebastiano's answer (+1) ... with use of the bNiceMatrix instead of NiceArray and adding $m$ times in tikzpicture:

\documentclass[margin=3mm, preview]{standalone}
\usepackage{nicematrix}
\usetikzlibrary{quotes} % for labels "m times"

\begin{document}
$S = \begin{bNiceMatrix}[columns-width=2em, name=m] M_n & \Cdots & M_1 & 0_{n\times m} & \Cdots & 0_{n\times m} \\ a_nI_m & \Cdots & a_1I_m & a_0I_m & \Cdots & a_1I_m \\ \Vdots & \Ddots & \Vdots & \Vdots & \Ddots & \Vdots \\ 0 & \Cdots & a_nI_m & 0 & \Cdots & a_0I_m \\ \end{bNiceMatrix}$
\tikz[remember picture,overlay,font=\tiny]
\path   (m-1-1) to ["$m$ times"] (m-1-3)
(m-1-4) to ["$m$ times"] (m-1-6);
\end{document}


note: for final result you need to compile above mwe at least twice.

• Thank you very much. I have appreciated also your code. May 5, 2019 at 19:04

With the latest version of nicematrix (3.15, 20/04/06), it's possible to give a shorter version of Zarko's answer. Indeed with this version, it's possible to put labels on the dotted lines with ^ and _.

\documentclass[margin=3mm, preview]{standalone}
\usepackage{nicematrix}

\begin{document}
$S = \begin{bNiceMatrix}[columns-width=2em] M_n & \Cdots^{m \text{ times}} & M_1 & 0_{n\times m} & \Cdots^{m \text{ times}} & 0_{n\times m} \\ a_nI_m & \Cdots & a_1I_m & a_0I_m & \Cdots & a_1I_m \\ \Vdots & \Ddots & \Vdots & \Vdots & \Ddots & \Vdots \\ 0 & \Cdots & a_nI_m & 0 & \Cdots & a_0I_m \\ \end{bNiceMatrix}$
\end{document}