我正在尝试排版图中所示的矩阵,我考虑了很多例子,特别是易贝特。但是,没有什么比我下面给出的方法更接近了。然而,它并没有达到我想要的准确度。有没有办法让图表更接近所需的图片?
\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
,,,...east
south
- 我使用过,
matrix of math nodes
但也有matrix of nodes
。正如您所猜测的,区别在于matrix of math nodes
将矩阵条目置于数学模式。 nodes in empty cells
为空单元格创建标签。- 我没有把大
0
s 放入矩阵中,因为这会扭曲行和列的大小 - 线条
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}