TikZ-与适合库的边界对齐

TikZ-与适合库的边界对齐

这是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,通过该样式,矩阵单元的绘制代码可以更短。

相关内容