TikZ 矩阵前两列之间的列分隔符错误

TikZ 矩阵前两列之间的列分隔符错误

我不知道为什么,但下面的代码显示column sep第 1 列和第 2 列与其他列不同。这是我得到的:

在此处输入图片描述

我正在使用column sep=-\pgflinewidth,所以我希望看到单元格一和单元格二之间只有一条粗线,但正如您所看到的,第一个单元格的右侧灰色边框并未被第二个单元格的左侧边框完全覆盖。这只发生在第一个和第二个单元格之间,您可以查看其他单元格并查看所需的行为。

我以为这是一个渲染问题,但我用三个不同的查看器打开了生成的 pdf,它们都显示相同的结果。

我一直在使用类似的产品TikZ matrices,没有任何问题,所以我错过了一些东西,但我不知道是什么。你呢?

接下来是我与 CVS-TikZ 一起使用的代码。

\documentclass[tikz,border=2mm]{standalone}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage[catalan]{babel}
\usepackage{lmodern}
\usepackage{amsmath}

\usetikzlibrary{matrix,arrows,positioning,backgrounds,fit}

\tikzset{
    head/.style={rectangle,%
                     draw=#1!70,% 
                     thick,%
                     minimum width=8mm,%
                     minimum height=7mm,% 
                     fill=#1!20,%
                    outer sep=0pt,%
                    anchor=center},
    head/.default=gray,
    info/.style={head=purple}
}

\begin{document}
\begin{tikzpicture}[font=\small\sffamily,>=stealth']

\matrix (AB) [matrix of nodes, column sep=-\pgflinewidth, outer sep=0pt, nodes={head}, nodes in empty cells] {
&|[info]|& $(S^a_n,R_n^b)$ & \\
};

\matrix (BA) [matrix of nodes,column sep=-\pgflinewidth,outer sep=0pt, below= of AB,nodes={head}, nodes in empty cells] {
 & $(S_n^b,R_n^a)$ & |[info]| &\\
};

\end{tikzpicture}
\end{document}

答案1

似乎pgflinewidth在您的单元格之间重新计算了。以下示例显示了如果某个单元格为空,而不是所有单元格都为非空(我只是用波浪号填充了它们),会发生什么情况。

\documentclass[tikz,border=2mm]{standalone}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage[catalan]{babel}
\usepackage{lmodern}
\usepackage{amsmath}
\usetikzlibrary{matrix,arrows,positioning,backgrounds,fit}
\tikzset{head/.style={rectangle,%
                     draw=#1!70,% 
                     thick,%
                     minimum width=8mm,%
                     minimum height=7mm,% 
                     fill=#1!20,%
                    outer sep=0pt,%
                    anchor=center},
         head/.default=gray,
         info/.style={head=purple}}

\begin{document}
\begin{tikzpicture}[font=\small\sffamily,>=stealth']

\matrix (AB) [matrix of nodes, column sep=-\pgflinewidth, 
outer sep=0pt, nodes={head}, nodes in empty cells] {
~ & ~& ~& ~\\
};

\matrix (AB1) [matrix of nodes, column sep=-\pgflinewidth, 
outer sep=0pt, below=of AB, nodes={head}, nodes in empty cells] {
~ & ~&&\\
};

\end{tikzpicture}
\end{document}

在此处输入图片描述

因此,更好的解决方案是使用固定值column sep

相关内容