格式化块矩阵

格式化块矩阵

我正在尝试排版图中所示的矩阵,我考虑了很多例子,特别是易贝特。但是,没有什么比我下面给出的方法更接近了。然而,它并没有达到我想要的准确度。有没有办法让图表更接近所需的图片?

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

\newcommand\bigzero{\makebox(0,0){\text{\Huge0}}}
\begin{document} 

\[
\sbox0{$\begin{array}{c c c |}0&1&0\\0&0&1\\0&0&0\\ \hline\end{array}$}
\sbox1{$\begin{array}{| r|}\hline \\ 2\\ \hline\end{array}$}
\sbox2{$\begin{matrix}2&1&0\\0&2&1\\0&0&2\end{matrix}$}
\sbox3{$\begin{array}{c c c |}2&1&0\\0&2&1\\0&0&2\\ \hline\end{array}$}
%
A=\left[
\begin{array}{c c c c}
\usebox{0}&  & \bigzero & \\
& \usebox{1} &  & \\
\bigzero & & \usebox{3} & \\
& &  & 0 \\
\end{array}
\right]
\]

\end{document} 

必填图片 到目前为止

答案1

对于这样的问题,amatrix of math nodes是你的朋友。这些是蒂克兹矩阵允许您绘制连接矩阵条目的线。

这是我得到的输出:

在此处输入图片描述

代码如下:

\documentclass{article}
\usepackage{tikz}
\usetikzlibrary{matrix}
\begin{document}

\[ A =
  \begin{tikzpicture}[baseline=(current bounding box.center),
                      large/.style={font=\large}]
    \matrix (M)[matrix of math nodes, nodes in empty cells,
                left delimiter={[}, right delimiter={]},
                column sep={1.2em,between origins},
                row sep={1.2em,between origins}
    ]{ 0 & 1 & 0 &   &              \\
       0 & 0 & 1 &   &   &   &   &  \\
       0 & 0 & 0 &   &   &          \\
         &   &   & 2 &   &          \\
         &   &   &   & 2 & 1 & 0 &  \\
         &   &   &   & 0 & 2 & 1 &  \\
         &   &   &   & 0 & 0 & 2 &  \\
         &   &   &   &   &   &   & 0\\
     };
    \draw(M-3-1.south west)--([xshift=2mm]M-3-4.south east);
    \draw(M-4-3.south)--(M-4-4.south east);
    \draw(M-7-5.south)--([xshift=2mm]M-7-7.south);
    \draw(M-1-3.north east)--(M-4-4.south west);
    \draw(M-4-4.north east)--(M-5-5.south west);
    \draw(M-5-7.north east)--(M-7-7.south east);
    \node[large] at (M-2-7){$0$};
    \node[large] at (M-7-2){$0$};
  \end{tikzpicture}
\]

\end{document}

一些解释:

  • 之后(M)\matrix意思是节点有标签(M-1-1)(M-1-2)等等。你可以把它改成(M)任何你喜欢的。
  • 节点(M-3-1.south west)是第 3 行第 1 列条目的西南角。类似地,有north,,,...eastsouth
  • 我使用过,matrix of math nodes但也有matrix of nodes。正如您所猜测的,区别在于matrix of math nodes将矩阵条目置于数学模式。
  • nodes in empty cells为空单元格创建标签。
  • 我没有把大0s 放入矩阵中,因为这会扭曲行和列的大小
  • 线条column sep={1.2em,between origins}row sep={1.2em,between origins}使行和列中心之间的距离相同,如果您在矩阵条目之间绘制垂直和水平线,则需要这样做
  • 您需要在left delimiter={[}和中用括号括住分隔符right delimiter={]}
  • baseline=(current bounding box.center)将矩阵置于显示方程的中心
  • 设置large/.style={font=\large}矩阵中“大”零的字体大小(这是 中 的含义large\node[large]

答案2

100% 基于安德鲁的回答,我只是根据对使用 TikZ 图片调整字体大小

\documentclass{article}
\usepackage{tikz}
\usetikzlibrary{matrix}
\begin{document}

\[ A =
  \begin{tikzpicture}[baseline=(current bounding box.center),
                  large/.style={font=\large}]
    \matrix (M)[matrix of math nodes, nodes in empty cells,
            left delimiter={[}, right delimiter={]},
            column sep={1.2em,between origins},
            row sep={1.2em,between origins}
    ]{ 0 & 1 & 0 &   &              \\
       0 & 0 & 1 &   &   &   &   &  \\
       0 & 0 & 0 &   &   &          \\
         &   &   & 2 &   &          \\
         &   &   &   & 2 & 1 & 0 &  \\
         &   &   &   & 0 & 2 & 1 &  \\
         &   &   &   & 0 & 0 & 2 &  \\
         &   &   &   &   &   &   & 0\\
     };
    \draw(M-3-1.south west)--([xshift=2mm]M-3-4.south east);
    \draw([xshift=1mm]M-4-3.south)--([xshift=1mm]M-4-4.south east);
    \draw(M-7-5.south)--([xshift=3mm]M-7-7.south);
    \draw(M-1-3.north east)--(M-4-4.south west);
    \draw(M-4-4.north east)--(M-5-5.south west);
    \draw(M-5-7.north east)--([yshift=-1mm]M-7-7.south east);
    \node[] at (M-2-7){\Huge 0};
    \node[] at (M-7-2){\Huge 0};
  \end{tikzpicture}
\]

\end{document}

大零解

相关内容