无法摆脱 Tikz 矩阵中的双水平线

无法摆脱 Tikz 矩阵中的双水平线

我希望有人能帮我解决我的问题。我使用 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}

在此处输入图片描述

相关内容