如何仅显示表格中的一部分行

如何仅显示表格中的一部分行

我绘制一个矩阵如下:

\[\begin{tabular}{l|lllll|ll}
    & 0 & i & j & k & $\ldots$ & x & y \\ \hline
  0 & 0 & $\ldots$ & $\ldots$ & $\ldots$ & $\ldots$ & $\ldots$ & $\ldots$\\
  i & $\ldots$ & 0 & $\ldots$ & $\ldots$ & $\ldots$ & $\ldots$ & $\ldots$\\
  j & $\ldots$ & $\ldots$ & 0 & $\ldots$ & $\ldots$ & $\ldots$ & $\ldots$\\
  k & $\ldots$ & $\ldots$ & $\ldots$ & 0 & $\ldots$ & $\ldots$ & $\ldots$ \\ 
  $\vdots$ & $\ldots$ & $\ldots$ & $\ldots$ & $\ldots$ & $\ldots$ & $\ldots$ & $\ldots$\\ \hline
  x & $\ldots$ & $\ldots$ & $\ldots$ & $\ldots$ & $\ldots$ & 0 &$\ldots$\\
  y & $\ldots$ & $\ldots$ & $\ldots$ & $\ldots$ & $\ldots$ & $\ldots$ & 0
  \end{tabular}\]

它给出:

在此处输入图片描述

内容很好,但有一个问题是我只想保留矩阵内部横穿的水平线和垂直线的一部分。所以我希望这些线看起来像这样:

在此处输入图片描述 有人知道该怎么做才能实现这个目标吗?

答案1

以下是一种解决方案:

\documentclass{article}

\newcommand{\novertical}[1]{\multicolumn{1}{c}{#1}}

\begin{document}

\[ \begin{array}{c|*{5}{c}|cc}
    & 0 & i & j & k & \ldots & x & y \\ \hline
  0 & 0 & \ldots & \ldots & \ldots & \ldots & \ldots & \ldots \\
  i & \ldots & 0 & \ldots & \ldots & \ldots & \ldots & \ldots \\
  j & \ldots & \ldots & 0 & \ldots & \ldots & \ldots & \ldots \\
  k & \ldots & \ldots & \ldots & 0 & \ldots & \ldots & \ldots \\[3pt]
  \smash{\vdots} & \smash{\vdots} & \smash{\vdots} & \smash{\vdots} & \smash{\vdots} & \smash{\ddots} & \smash{\vdots} & \smash{\vdots} \\ \cline{1-6}
  x & \ldots & \ldots & \ldots & \ldots & \novertical{\ldots} & 0 & \ldots \\
  y & \ldots & \ldots & \ldots & \ldots & \novertical{\ldots} & \ldots & 0
\end{array} \]

\end{document}

我采纳了@Bruno Le Floch的评论,并做了以下修改:

1)我利用了array环境,并摆脱了所有$标志。

2)我替换了*{5}{c}声明array,只是作为以后节省时间的建议。

3)正确的命令是\cline{1-6},而不是\cline[1-6]

4)我曾经\newcommand定义过一个名为的规则\novertical,该规则应该用在您不希望出现垂直线的左侧的每个单元格中(它接受一个参数,即要放入该单元格的文本)。

5)我坚持使用\ldots而不是\cdots,因为\cdots似乎尴尬地提高了省略号。

6)我\vdots在垂直线结束前放置了整行,并用 替换了那里的一个条目\ddots;我认为这给出了您想要的外观。

7) 我把表格中的所有内容都放在中央;我认为这样看起来更好,但我猜这只是个人审美偏好。

编辑:

8) 我结合@egreg的评论,使用\\[3pt]\smash{\vdots}使带有垂直省略号的行看起来与其他行一样高。

答案2

好吧,最近我一直在尝试使用 TikZ 做任何事情,我想我应该停止一段时间,但是它的简单性太诱人了,所以这里什么都没有:

\documentclass{article}
\usepackage{tikz}
\usetikzlibrary{matrix}
\begin{document}
\usetikzlibrary{matrix}
\begin{tikzpicture}
\matrix (m) [matrix of nodes,nodes in empty cells]{
&  &  &  &  &  & x & y \\
&  &  &  &  &  &  & \\
&  &  &  &  &  &  & \\
&  &  &  &  &  &  & \\
&  &  &  &  &  &  &  \\ 
&  &  &  &  &  &  & \\
x&  &  &  &  &  &  &\\
y&  &  &  &  &  &  &\\
};
\draw (m-1-7.north west|- m.north) |- (m-7-1.north west -| m.west);
\draw(m.north -| m-1-2.north west) to (m.south -| m-8-2.south west);
\draw(m.west |- m-2-1.north west) to (m.east |- m-2-8.north east);
\end{tikzpicture}
\end{document}

在此处输入图片描述

我保留了原文,但如果你使用数学节点,matrix of nodes你可以简单地用代替matrix of math nodes。另外,我之所以没有使用 ,\draw(m-1-2) |- (m-7-4) 是因为当节点的大小不同时,我只是大致了解节点锚点的位置,(m-1-2.north west)然后找到它与某个保持(相对)固定的东西的正交交点,比如矩阵的顶部m.north。你可以在方程中使用这些也。

另请查看这些问题和答案:

如何放置分隔符

如何绘制跨越多行/列的对角点

也许你以后会需要一些东西:非垂直居中的节点矩阵

相关内容