在 TikZ 分区线中创建数学矩阵

在 TikZ 分区线中创建数学矩阵

我想在 TikZ 中绘制一个数学矩阵,在其中可以绘制辅助分区线。到目前为止,我发现用括号绘制矩阵非常简单。

\begin{tikzpicture}
  \matrix [matrix of math nodes,left delimiter={[},right delimiter={]}]
  {
    1  & 2   & 1 & 0 & 0 & 10 \\
    3  & 2   & 0 & 1 & 0 & 20 \\
    -2 & -10 & 0 & 0 & 1 & 0  \\
  };
\end{tikzpicture}

但是,我想用第 5 列和第 6 列之间的垂直线以及第 2 行和第 3 行之间的水平线来划分矩阵。此外,最好在括号外面(顶部)有“识别变量”。

带格式的矩阵

答案1

不完全是上游,但也有一些非 TikZ 选项使用kbordermatrixblkarray包装:

\documentclass{article}
\usepackage{kbordermatrix}% http://www.hss.caltech.edu/~kcb/TeX/kbordermatrix.sty
\usepackage{blkarray}% http://ctan.org/pkg/blkarray
\begin{document}

\[
  \kbordermatrix{%
      & x & y & z & w & r & & M \\
    & 1 & 2 & 1 & 0 & 0 & \vrule & 10 \\
    & 3 & 2 & 0 & 1 & 0 & \vrule & 20 \\ \cline{2-8}
    & -2 & -10 & 0 & 0 & 1 & \vrule & 0
  }
​\]

\[
  \begin{blockarray}{crrrrrrc}
    & x & y & z & w & r & M &\\
    \begin{block}{[crrrrr|rc]}
      & 1 & 2 & 1 & 0 & 0 & 10 & \\
      & 3 & 2 & 0 & 1 & 0 & 20 & \\ \BAhhline{~------~}
      & -2 & -10 & 0 & 0 & 1 & 0 & \\
    \end{block}
  \end{blockarray}
\]
\end{document}

使用 kbordermatrix 和 blkarray 制作的矩阵

可以修改代码以满足您的需求,以改善对齐和间距。在这两个示例中,您还可以添加行索引。

答案2

基本方法:

一旦你命名了矩阵(mymatrix在本例中),你就可以在符号中引用它mymatrix-row-column。通常的定位above=of也可以工作。

\documentclass{article}

\usepackage{tikz}
\usetikzlibrary{matrix,positioning}
\begin{document}
 \begin{tikzpicture}[node distance=-1ex]
  \matrix (mymatrix) [matrix of math nodes,left delimiter={[},right
delimiter={]}]
  {
    1  & 2   & 1 & 0 & 0 & 10 \\
    3  & 2   & 0 & 1 & 0 & 20 \\
    -2 & -10 & 0 & 0 & 1 & 0  \\
  };
\draw[red] (mymatrix-2-1.south west) -- (mymatrix-2-6.south east);
\draw[red] (mymatrix-1-5.north east) -- (mymatrix-3-5.south east);
\node [above=of mymatrix-1-1.north] {x};
\node [above=of mymatrix-1-2.north] {y};
\node [above=of mymatrix-1-3.north] {z};
\node [above=of mymatrix-1-4.north] {w};
\node [above=of mymatrix-1-5.north] {r};
\node [above=of mymatrix-1-6.north] {M};
\end{tikzpicture}

\end{document}

在此处输入图片描述

相关内容