![无法摆脱 Tikz 矩阵中的双水平线](https://linux22.com/image/351676/%E6%97%A0%E6%B3%95%E6%91%86%E8%84%B1%20Tikz%20%E7%9F%A9%E9%98%B5%E4%B8%AD%E7%9A%84%E5%8F%8C%E6%B0%B4%E5%B9%B3%E7%BA%BF.png)
我希望有人能帮我解决我的问题。我使用 Tikz 创建了一个矩阵,因为我必须能够划掉列和行,但是,我无法摆脱 LaTeX 在第二行和第三行之间插入的双水平线(但不在第一列),而且我看不到它来自哪里。除了那条双线之外,矩阵正是我想要的样子。
这是我目前的矩阵代码:
\documentclass{article}
\usepackage[english]{babel}
\usepackage{tikz}
\usetikzlibrary{matrix}
\begin{document}
\centering
\begin{tikzpicture}
\matrix (magic) [%
matrix of nodes,
nodes=draw,
text width=6mm,
text centered,
column 1/.style={
nodes={
text width=20mm,
minimum width=20mm,
fill=white
}
},
] {%
& (dd) & (cd) & (dc) & (cc) \\
cooperate & 0 & 4 & 0 & 4 \\
defect & 1 & 6 & 1 & 6\\
};
\draw[thin,red] (magic-2-1.west) -- (magic-2-5.east);
\end{tikzpicture}
\end{document}
答案1
Atikz matrix
不是表格,所有节点nodes
都保持其大小,并且matrix
只是对齐它们。在这种情况下,cooperate
节点高于其行中的其他节点。这就是双线的原因。线是节点的边框,而不是 (表格) \hline
。一种解决方案是修复 ,minimum height
从而强制所有节点具有相似的大小:
\documentclass{article}
\usepackage[english]{babel}
\usepackage{tikz}
\usetikzlibrary{matrix}
\begin{document}
\centering
\begin{tikzpicture}
\matrix (magic) [%
matrix of nodes,
nodes={anchor=center, draw, minimum height=8mm},
text width=6mm,
text centered,
column 1/.style={
nodes={
text width=20mm,
minimum width=20mm,
fill=white
}
},
] {%
& (dd) & (cd) & (dc) & (cc) \\
cooperate & 0 & 4 & 0 & 4 \\
defect & 1 & 6 & 1 & 6\\
};
\draw[thin,red] (magic-2-1.west) -- (magic-2-5.east);
\end{tikzpicture}
\end{document}
如果希望所有线条显示相同的宽度,请插入row sep=-\pgflinewidth, column sep=-\pgflinewidth
矩阵选项。
答案2
正如 ferahfeza 所建议的,添加text height=1.5ex,text depth=.25ex
对齐您的文本并解决您的问题。
伊格纳西 (Ignasi) 先到了,不过正如他所说,我加了点row sep=-\pgflinewidth, column sep=-\pgflinewidth
字,以避免写粗线。
\documentclass{article}
\usepackage[english]{babel}
\usepackage{tikz}
\usetikzlibrary{matrix}
\begin{document}
\centering
\begin{tikzpicture}[text height=1.5ex,text depth=.25ex]
\matrix (magic) [%
matrix of nodes, nodes=draw, text width=6mm, text centered,
row sep=-\pgflinewidth, column sep=-\pgflinewidth,
column 1/.style={
nodes={
text width=20mm, minimum width=20mm, fill=white
}
},
] {%
& (dd) & (cd) & (dc) & (cc) \\
cooperate & 0 & 4 & 0 & 4 \\
defect & 1 & 6 & 1 & 6\\
};
\draw[thin,red] (magic-2-1.west) -- (magic-2-5.east);
\end{tikzpicture}
\end{document}