Это продолжениеэтотвопрос.
MWE (данные Анри Менке в связанном посте):
\documentclass{article}
\usepackage{blkarray}
\begin{document}
\[
\left[
\begin{blockarray}{ccccccc}
\begin{block}{[ccc]cccc}
I_p \\
& \ddots \\
& & I_p \\
\end{block}
\begin{block}{c[ccc]ccc}
& I_p \\
& & \ddots \\
& & & I_p \\
\end{block}
& & & \vdots & \ddots \\
& & & \ddots & \vdots \\
\begin{block}{cccc[ccc]}
& & & & I_p \\
& & & & & \ddots \\
& & & & & & I_p \\
\end{block}
\end{blockarray}
\right]
\]
\end{document}
Это почти то, что я хочу, за исключением скобок, которые производятся \left[
и, \right
слишком длинные внизу. Я чувствую, что должен быть способ сделать это исключительно в blockarray, но документация для пакета недостаточно обширна, чтобы быстро привести меня к такому решению.
решение1
blkarray
это так странно...
\documentclass{article}
\usepackage{blkarray}
\addtolength\textwidth{25pt}
\begin{document}
\[
\left[
\begin{blockarray}{ccccccc}
\begin{block}{[ccc]cccc}
I_p \\
& \ddots \\
& & I_p \\
\end{block}
\begin{block}{c[ccc]ccc}
& I_p \\
& & \ddots \\
& & & I_p \\
\end{block}
& & & \vdots & \ddots \\
& & & \ddots & \vdots \\
\begin{block}{cccc[ccc]}
& & & & I_p \\
& & & & & \ddots \\
& & & & & & I_p \\
\end{block}
\end{blockarray}
\right]
+
\left[
\begin{blockarray}{ccccccc}
\begin{block}{[ccc]cccc}
I_p \\
& \ddots \\
& & I_p \\
\end{block}
\begin{block}{c[ccc]ccc}
& I_p \\
& & \ddots \\
& & & I_p \\
\end{block}
& & & \vdots & \ddots \\
& & & \ddots & \vdots \\
\begin{block}{cccc[ccc]}
& & & & I_p \\
& & & & & \ddots \\
& & & & & & I_p \\
\end{block}
\BAnoalign{\vspace{-20pt}}
\end{blockarray}
\right]
\]
\end{document}
решение2
С {NiceArray}
из nicematrix
.
\documentclass{article}
\usepackage{nicematrix}
\begin{document}
Without modification of \verb|\delimiterfactor|.
%
\[ \left[\begin{NiceArray}{ccccccc}[margin]
I_p \\
& \ddots \\
& & I_p \\
& I_p \\
& & \ddots \\
& & & I_p \\
& & & \vdots & \ddots \\
& & & \ddots & \vdots \\
& & & & I_p \\
& & & & & \ddots \\
& & & & & & I_p \\
\CodeAfter
\SubMatrix[{1-1}{3-3}]
\SubMatrix[{4-2}{6-4}]
\SubMatrix[{9-5}{11-7}]
\end{NiceArray}\right]\]
%
With \verb|\delimiterfactor=1050| and \verb|\delimiterfactor=901| back in the \verb|\CodeAfter|.
%
\[\delimiterfactor=1050
\left[\begin{NiceArray}{ccccccc}[margin]
I_p \\
& \ddots \\
& & I_p \\
& I_p \\
& & \ddots \\
& & & I_p \\
& & & \vdots & \ddots \\
& & & \ddots & \vdots \\
& & & & I_p \\
& & & & & \ddots \\
& & & & & & I_p \\
\CodeAfter
\delimiterfactor=901 % default value
\SubMatrix[{1-1}{3-3}]
\SubMatrix[{4-2}{6-4}]
\SubMatrix[{9-5}{11-7}]
\end{NiceArray}\right]\]
\end{document}
Вам нужно несколько компиляций (т.к. nicematrix
внутри используются узлы PGF/Tikz).