如何创建以矩形为边框的角度矩阵

如何创建以矩形为边框的角度矩阵

我想复制这样的矩阵:

角矩阵

具有直的水平线和垂直线的矩阵在其内容周围形成一个矩形。

我尝试使用带有 hlines 的数组环境

$$
\begin{array}{c|cccccccc|}
      & 1 & 2 & 3 & 4 & 5 & 6 & 7 & 8 \\
    \hline
    a & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 \\
    b & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 \\
    c & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 \\
    d & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 \\
    e & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 \\
    \hline
\end{array}
$$

但得到的却是这个:

错误矩阵

是否可以在乳胶中做到这一点,或者我是否需要一个外部程序来生成这样的图片并插入它?

答案1

当然,您可以使用 LaTeX 来实现这一点。要生成一条横跨列子集的水平线,请使用\cline{x-y},其中从 x 列到 y 列制定一条规则。

要从顶行移除竖线,您需要用 覆盖两个单元格的列规范\multicolumn。语法为\multicolumn{<number of columns>}{<column specifier>}{<cell content>}。第一列和最后一列具有c|列说明符,\multicolumn{1}{c}{}在第一个单元格中使用 将其更改为c没有竖线。

最后,不要使用$$ .. $$在 LaTeX 中显示数学,建议使用\[ \]代替。

\documentclass[a4paper]{article}
\usepackage[czech,english]{babel}
\begin{document}
\[
\shorthandoff{-}
\begin{array}{c|cccccccc|}
  \multicolumn{1}{c}{}    & 1 & 2 & 3 & 4 & 5 & 6 & 7 &   \multicolumn{1}{c}{8} \\
    \cline{2-9}
    a & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 \\
    b & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 \\
    c & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 \\
    d & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 \\
    e & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 \\
    \cline{2-9}
\end{array}
\]
\end{document}

在此处输入图片描述

答案2

这是代码。不要$$ … $$用于 displaymah,但是\[ … \]。我加载了array包以获得更多功能(更少的紧密垂直间距,以及用于重复具有相同说明符的单元格的更简单的代码):

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

\begin{document}

\[ \setlength\extrarowheight{2pt}\begin{array}{c|*{8}{c}|}
  \multicolumn{1}{c}{} & \mathbf{1} & \mathbf{2} & \mathbf{3} & \mathbf{4} & \mathbf{5} & \mathbf{6} & \mathbf{7 }& \multicolumn{1}{c}{\mathbf{8}} \\
  \cline{2-9}
  \mathbf{a} & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 \\
  \mathbf{b} & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 \\
  \mathbf{c} & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 \\
  \mathbf{d} & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 \\
  \mathbf{e} & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 \\
  \cline{2-9}
  \end{array} \]%

\end{document} 

在此处输入图片描述

答案3

与。{NiceMatrix}nicematrix

\documentclass{article}
\usepackage{nicematrix}

\begin{document}

\[\begin{NiceMatrix}
      & 1 & 2 & 3 & 4 & 5 & 6 & 7 & 8 & \\
    a & \Block[draw]{5-8}{}
        0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 \\
    b & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 \\
    c & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 \\
    d & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 \\
    e & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 \\
\end{NiceMatrix}\]
    
\end{document}

上述代码的输出

答案4

解决方案如下\tikzmark

\documentclass[a4paper]{article}
\usepackage[czech]{babel}
\usepackage{amsmath}
\usepackage{tikz}
\usetikzlibrary{tikzmark}

\begin{document}
\[
\begin{tikzpicture}[remember picture,overlay]
\draw ([yshift=1.2\ht\strutbox,xshift=-3pt]{pic cs:start}) 
  rectangle ([xshift=3pt,yshift=-\dp\strutbox]{pic cs:end});
\end{tikzpicture}
\begin{matrix}
& \mathbf{1} & \mathbf{2} & \mathbf{3} & \mathbf{4}
& \mathbf{5} & \mathbf{6} & \mathbf{7} & \mathbf{8}\\
\mathbf{a} & 
  \tikzmark{start}
  0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 \\
\mathbf{b} &
  0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 \\
\mathbf{c} &
  0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 \\
\mathbf{d} &
  0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 \\
\mathbf{e} &
  0 & 0 & 0 & 0 & 0 & 0 & 0 & 0
\tikzmark{end}
\end{matrix}
\]
\end{document}

请注意,当矩阵发生变化时,这需要两次传递,才能正确排版。

在此处输入图片描述

相关内容