这是Zarko 的回答。
在下面的图片中,我们可以看到使用和不使用 fit 库时单元格的错位。
如果我的矩阵选项没有问题,我应该为 fit 库提供哪些选项才能正确对齐单元格的边框。
再一次感谢你。
\documentclass{article}
\usepackage{tikz}
\usetikzlibrary{matrix}
\usetikzlibrary{fit}
\begin{document}
\begin{tikzpicture}
\matrix (m) [matrix of nodes,
nodes={draw, minimum size=1cm},
nodes in empty cells,
column sep=-\pgflinewidth,
row sep=-\pgflinewidth]
{
& & & \\
& & & \\
};
\node[fill=orange, draw, inner sep=0pt, fit=(m-2-3)] {};
\node[fill=blue, inner sep=0pt, fit=(m-1-1)] {};
\node[fill=red, inner sep=0pt, fit=(m-2-1)] {};
\end{tikzpicture}
\begin{tikzpicture}
\matrix (m) [matrix of nodes,
nodes={draw, minimum size=1cm},
nodes in empty cells,
column sep=-\pgflinewidth,
row sep=-\pgflinewidth]
{
|[fill=blue]| & & & \\
|[fill=red]| & & |[fill=orange]| & \\
};
\end{tikzpicture}
\end{document}
答案1
像这样:
抱歉,但您是我答案更改的受害者。现在第一次尝试就应该正确:
\documentclass[border=3.141592, varwidth]{standalone}
\usepackage{tikz}
\usetikzlibrary{fit,
matrix}
\begin{document}
\begin{tikzpicture}[
FIT/.style args = {#1/#2}{fill=#1, inner sep=-\pgflinewidth,
fit=#2, node contents={} } % <--- new
]
\matrix (m) [matrix of nodes,
nodes={draw, minimum size=1cm},
nodes in empty cells,
column sep=-\pgflinewidth,
row sep=-\pgflinewidth]
{
& & & \\
& & & \\
};
\node[FIT=orange/(m-2-3)]; % <--- changed
\node[FIT=blue/(m-1-1)];
\node[FIT=red/(m-2-1)];
\end{tikzpicture}
\begin{tikzpicture}
\matrix (m) [matrix of nodes,
nodes={draw, minimum size=1cm},
nodes in empty cells,
column sep=-\pgflinewidth,
row sep=-\pgflinewidth]
{
|[fill=blue]| & & & \\
|[fill=red]| & & |[fill=orange]| & \\
};
\end{tikzpicture}
\end{document}
通过比较你的和我的 MWE,你可以看出,本质区别在于inner sep
节点的定义。你将其设置为 zelo,我将其设置为\pgflinewidth
。
对于较短的代码,我的 MWE 定义了新样式FIT
,通过该样式,矩阵单元的绘制代码可以更短。