10

This question already has an answer here:

I wish to write the following block matrix in LaTex.

enter image description here

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.

marked as duplicate by Werner, Raaja, Mensch, Sebastiano, siracusa Apr 1 at 21:02

This question has been asked before and already has an answer. If those answers do not fully address your question, please ask a new question.

9

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)$  

enter image description here

7

Just for the fun of it! :-)

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

\begin{document}

\[
\begin{pmatrix}
\newcommand{\lr}[1]{\multicolumn{1}{|c}{#1}}
\newcommand{\rr}[1]{\multicolumn{1}{c|}{#1}}
\;
\begin{array}{@{}*{10}{c}@{}}
\cline{1-2}
\lr{0} & \rr{1} &&&&&&&& \raisebox{-1em}[0pt][0pt]{$0$}\\
\lr{-1} & \rr{0} \\
\cline{1-2}
&& \ddots \\
\cline{4-5}
&&& \lr{0} & \rr{1} \\
&&& \lr{-1} & \rr{0} \\
\cline{4-5}
&&&&& 0 \\[-1ex]
&&&&&& \ddots \\
&&&&&&& 0 \\[-1ex]
&&&&&&&& \ddots \\
\multicolumn{2}{c}{0} &&&&&&&& 0
\end{array}
\;\;
\end{pmatrix}
\]

\end{document}

enter image description here

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

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

enter image description here

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

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

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

enter image description here

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

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.

enter image description here

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}

Not the answer you're looking for? Browse other questions tagged or ask your own question.