在矩阵中绘制框

在矩阵中绘制框

在我的文档中我已经定义

\newcommand\bigzero{\makebox(0,0){\text{\huge0}}}

并使用以下矩阵:

\begin{equation}\begin{pmatrix}
0&1\\
1&0&&&&\bigzero\\
&&0&1\\
&&1&0\\
&&&&\ddots\\
&\bigzero&&&&0&1\\
&&&&&1&0
\end{pmatrix}\end{equation}

我怎样才能在构成矩阵的三个块周围绘制方框?

答案1

使用基本工具的解决方案:

\documentclass{article}

\usepackage{amsmath}
\usepackage{hhline}
\newcommand\bigzero{\makebox(0,0){\text{\huge0}}}
\newcommand{\fblock}[1]{\begin{array}{|@{\:}cc@{\:}|}
\hhline{|--|}#1 \\
\hhline{|--|}
\end{array}}

\begin{document}

\begin{equation}
\begin{pmatrix}
\,\fblock{0&1\\ 1&0 }&&\\
&\mkern-9mu\fblock{0&1\\ 1&0}&\multicolumn{2}{c}{\raisebox{3ex}{\bigzero}} \\
&&\makebox[0pt]{$ \ddots $}\\[-0.5ex]
\multicolumn{2}{c}{\raisebox{4ex}{\bigzero}} &&\fblock{0&1\\ 1&0}\,
\end{pmatrix}\end{equation}

\end{document} 

在此处输入图片描述

答案2

这只是一个有趣的答案。我正在尝试 LoopSpace 的重大更新蒂克兹马克包中现在有一个我一直在寻找的命令:\tikzmarknode。它就可以正常工作。(是的,使用tikz在这里使用可能有点过头了,正如我所说,这只是为了好玩和学习一些新东西。)编辑:将括号从盒子上移开,非常感谢@manooooh!

\documentclass{article}
\usepackage{amsmath,tikz}
\usetikzlibrary{tikzmark,fit}
\newcommand\bigzero{\makebox(0,0){\text{\huge0}}}
\begin{document}
\begin{equation}
\left(~\begin{matrix}
\tikzmarknode{1A}{0}&1\\
1&\tikzmarknode{1B}{0}&&&&\bigzero\\
&&\tikzmarknode{2A}{0}&1\\
&&1&\tikzmarknode{2B}{0}\\
&&&&\ddots\\
&\bigzero&&&&\tikzmarknode{3A}{0}&1\\
&&&&&1&\tikzmarknode{3B}{0}
\end{matrix}~\right)
\begin{tikzpicture}[overlay, remember picture]
\foreach \X in {1,2,3}
{\node[inner sep=1pt,draw,fit=(\X A)(\X B)]{};}
\end{tikzpicture}
\end{equation}
\end{document}

在此处输入图片描述

相关内容