10

I would like to create a formula or figure like this: boxed entries in matrices

I tried it simply with the pmatrix environment and the \boxed command, but the spacing looked horrible. I think it might be done with TikZ, but I don't know much about it.

Edit:

Here is what I got so far for the right-hand side:

\documentclass{article}

\usepackage{amsmath,amsthm,amsfonts,amssymb}
\usepackage{tikz}
\usetikzlibrary{arrows,matrix,positioning}

\begin{document}
\begin{tikzpicture}
    \matrix [matrix of math nodes,left delimiter=(,right delimiter=)] (m)
    {
           A_1           & \phantom{A_1} & \phantom{A_1} & \\
           \phantom{A_1} & \phantom{A_1} &               & \\
           \phantom{A_1} &               & A_2           & \\
                         &               &               & A_2           & \phantom{A_3}\\
                         &               &               & \phantom{A_2} & A_3          \\
    };  
    \draw (m-1-1.north west) -- (m-1-2.north east) -- (m-2-2.south east) -- (m-2-1.south west) -- (m-1-1.north west);
    \draw (m-3-3.north west) -- (m-3-3.north east) -- (m-3-3.south east) -- (m-3-3.south west) -- (m-3-3.north west);
    \draw (m-4-4.north west) -- (m-4-4.north east) -- (m-4-4.south east) -- (m-4-4.south west) -- (m-4-4.north west);
    \draw (m-1-1.north west) -- (m-1-3.north east) -- (m-3-3.south east) -- (m-3-1.south west) -- (m-1-1.north west);
    \draw (m-5-5.north west) -- (m-5-5.north east) -- (m-5-5.south east) -- (m-5-5.south west) -- (m-5-5.north west);
    \draw (m-4-4.north west) -- (m-4-5.north east) -- (m-5-5.south east) -- (m-5-4.south west) -- (m-4-4.north west);
\end{tikzpicture}

\end{document}

enter image description here

What I hope to achieve is

  • square boxes,
  • $A_1$ centered in the $2\times 2$ box,
  • also the left-hand side and the $\subset$ sign in the middle.

Comment: I have no idea what I did wrong in the formatting of this question.

6

3 Answers 3

7

A TikZ solution:

\documentclass{article}
\usepackage{amsmath,tikz}
\usetikzlibrary{matrix}

\begin{document}
\[
\begin{tikzpicture}[baseline=(current bounding box.center)]%
\matrix[matrix of math nodes,
inner sep=0,
nodes={draw,outer sep=0,inner sep=2pt},
every left delimiter/.style={xshift=1ex},%tighter delimiter spacing
every right delimiter/.style={xshift=-1ex},
left delimiter={(},right delimiter={)},
column sep=-\pgflinewidth,row sep=-\pgflinewidth] (r) {
|[inner sep=5mm]|A_1&&\\&A_2&\\&&A_3\\};
\end{tikzpicture}
\subset
\begin{tikzpicture}[baseline=(current bounding box.center)]%
\matrix[matrix of math nodes,
inner sep=0,
nodes={draw,outer sep=0,inner sep=2pt},
every left delimiter/.style={xshift=1ex},%tighter delimiter spacing
every right delimiter/.style={xshift=-1ex},
left delimiter={(},right delimiter={)},
column sep=-\pgflinewidth,row sep=-\pgflinewidth] (l) {
|[inner sep=5mm]|A_1&&&\\&A_2&&\\&&A_2&\\&&&A_3\\};
\draw (l-2-2.north east) |- (l-1-1.north east) (l-2-2.south west) -| (l-1-1.south west)
      (l-3-3.north east) -| (l-4-4.north east) (l-3-3.south west) |- (l-4-4.south west);
\end{tikzpicture}
\]
\end{document}

enter image description here

1
  • @PeterPatzt My pleasure
    – percusse
    Apr 3, 2013 at 20:56
7

A TikZ-free solution, using the easybmat package:

\documentclass{article}
\usepackage{amsmath}
\usepackage{easybmat}

\begin{document}

\[ 
\left(
\begin{array}{c@{}c@{}c}
\begin{BMAT}{|ccc|}{|ccc|}
& & \\
& \mbox{\LARGE$A_1$} & \\
& &  
\end{BMAT} & & \\
&
\begin{BMAT}{|c|}{|c|}
A_2 
\end{BMAT} & \\
& &
\begin{BMAT}{|c|}{|c|}
A_3 
\end{BMAT}
\end{array}
\right)
\subset
\left(
\begin{array}{c@{}c@{}c}
\begin{BMAT}{|ccc|c|}{|ccc|c|}
& & & \\
& \mbox{\LARGE$A_1$} & & \\
& &  & \\
& & & A_2
\end{BMAT} & & \\
&
\begin{BMAT}{|c|c|}{|c|c|}
A_2 & \\
& A_3
\end{BMAT}
\end{array}
\right)
\]

\end{document}

enter image description here

0

Here is a solution with {pNiceMatrix} of nicematrix.

\documentclass{article}
\usepackage{nicematrix}

\begin{document}

\begin{center}
\renewcommand{\arraystretch}{1.5}
\NiceMatrixOptions{columns-width=5mm,margin=0.7em}
$\begin{pNiceMatrix}
\Block[draw]{2-2}{A_1} \\
\\
& & \Block[draw]{}{A_2} \\
& & & \Block[draw]{}{A_3} 
\end{pNiceMatrix}
\subset 
\begin{pNiceMatrix}
\Block[hvlines]{3-3}{}\Block{2-2}{A_1} & & \Block{2-1}{} \\
\\
\Block{1-2}{} & & A_2 \\
& & & \Block[hvlines]{2-2}{} A_2 \\
& & & & A_3
\end{pNiceMatrix}$
\end{center}

\end{document}

We need several compilations (because nicematrix uses PGF/Tikz nodes under the hood).

Output of the above code

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .