# How to write the block matrix in LaTex? [duplicate]

I wish to write the following block matrix in LaTex.

I have been trying a bunch of stuff, but none of it seems to work. In particular, I tried the following:

\begin{bmatrix}
0 & -1&        &         &          &        & 0    &         &       &         &\\
1 & 0 &        &         &          &        &      &         &       &         &\\
&   & \cdot  &         &          &        &      &         &       &         &\\
&   &        & \cdot   &          &        &      &         &       &         &\\
&   &        &         & \cdot    &        &      &         &       &         &\\
&   &        &         &          & 0      & 1    &         &       &         &\\
&   &        &         &          &-1      & 0    &         &       &         &\\
&   &        &         &          &        &      & \cdot  &        &        &\\
&   &        &         &          &        &      &         & \cdot &        &  \\
&   &        &         &          &        &      &         &        &  \cdot & \\
0 &   &        &         &          &        &      &         &        &         &  0\\
\end{bmatrix}



But this is pretty ugly and so any suggestions will be much appreciated.

Perhaps

$\left(\begin{array}{cccccc} \left[\begin{array}{cc} 0 & 1\\ -1 & 0 \end{array}\right] & & & & & 0\\ & \ddots\\ & & \left[\begin{array}{cc} 0 & 1\\ -1 & 0 \end{array}\right]\\ & & & 0\\ & & & & \ddots\\ 0 & & & & & 0 \end{array}\right)$


Just for the fun of it! :-)

\documentclass{article}
\usepackage{amsmath,array}

\begin{document}


\end{document}


• You guys are the best! – model_checker Mar 28 '19 at 22:40
• @model_checker I'm certainly not the best. Here is world excellence. – Sebastiano Mar 28 '19 at 22:50
• I am sorry! Last I checked there was an objection to your answer. But it's also great! – model_checker Mar 28 '19 at 22:53
• @model_checker Don't worry. I have put two & in addition. :-) but now it is correct. – Sebastiano Mar 28 '19 at 23:02

Here there is my proposal as the original picture using \bmatx command that replace a boxed matrix.

\documentclass{article}
\usepackage{mathtools}
\newcommand{\bmatx}{\boxed{\begin{matrix} 0&  1  \\ -1&  0\end{matrix}}}

\begin{document}
$\begin{pmatrix} \, \bmatx& & & & & & & 0 \\ & \ddots& & & & \\ & & \bmatx & & & & \\ & & & \ddots& & &\\ & & & & 0 & &\\ & & & & & & \ddots\\ 0 & & & & & & & 0 \end{pmatrix}$

\end{document}


The best code is provided thanks to the precious comment of @Bernard.

• In my opinion, you shouldn't add an empty 3rd column in the definition of \bmatx\ – Bernard Mar 28 '19 at 21:24
• Your comment not is an opinion :-) ...it is truly correct. :-) – Sebastiano Mar 28 '19 at 21:30

Here's another solution. It uses a pmatrix environment for the overall matrix and a custom macro called \blockmat for the 2x2 inner matrices.

\documentclass{article}
\usepackage{array,amsmath}
\newcommand\blockmat{%
\begin{array}{|@{\,}rr@{\,}|}
\hline 0 & 1^{\mathstrut} \\ -1 & 0 \\ \hline
\end{array}}
\begin{document}
$\begin{pmatrix} \blockmat & & & & & 0 \\ & \ddots & & & & \\ & & \blockmat & & & \\ & & & 0 & & \\ & & & & \ddots & \\ 0 & & & & & 0 \\ \end{pmatrix}$
\end{document}


Here's a solution using TikZ that will work in all kinds of context, not just matrices, to draw boxes. You just need to put \tl in the point where the top-right corner is supposed to be and \br where the bottom-right will be. You can also use any TikZ feature to modify your box. Obviously this needs to be fine tuned depending on what exactly you're using it for (spacing etc.).

\newcounter{textbox}
\def\tl{\stepcounter{textbox}\tikzmarknode{a\thetextbox}{\strut}}
\def\br{\tikzmarknode{b\thetextbox}{\strut}\begin{tikzpicture}[overlay, remember picture]\draw (a\thetextbox.north west) rectangle (b\thetextbox.south east);\end{tikzpicture}}


The spacing in this version is not optimized for matrices, but you can use

\tikzmarknode{b\thetextbox}{\strut}\begin{tikzpicture}[overlay, remember picture]\draw ($(a\thetextbox.north west)+(-0.4\arraycolsep,0ex)$) rectangle ($(b\thetextbox.south east)+(0.4\arraycolsep,0ex)$);\end{tikzpicture}


to add extra space.

Full code:

\documentclass{article}
\usepackage{tikz}
\usepackage{amsmath}
\usetikzlibrary{tikzmark,calc}
\newcounter{textbox}
\def\tl{\stepcounter{textbox}\tikzmarknode{a\thetextbox}{\strut}}
\def\br{\tikzmarknode{b\thetextbox}{\strut}\begin{tikzpicture}[overlay, remember picture]\draw (a\thetextbox.north west) rectangle (b\thetextbox.south east);\end{tikzpicture}}
\begin{document}
$\begin{bmatrix} \tl0 &-1 & & & & & & & & 0 \\ 1 & 0\br & & & & & & & & \\ & & \cdot & & & & & & & \\ & & & \cdot & & & & & & \\ & & & & \cdot & & & & & \\ & & & & &\tl0 & 1 & & & \\ & & & & &-1 & 0\br & & & \\ & & & & & & & \cdot & & \\ & & & & & & & & \cdot & \\ 0 & & & & & & & & & \cdot \\ \end{bmatrix}$
\end{document}