我绘制一个矩阵如下:
\[\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
。你可以在方程中使用这些也。
另请查看这些问题和答案: