tikz矩阵边框宽度0行为有线

tikz矩阵边框宽度0行为有线

下面的例子将线宽设置为 0,但它仍然会在单元格周围生成一个小边框。

\documentclass[tikz, margin=2pt]{standalone}
\usetikzlibrary{matrix}
\begin{document}
\begin{tikzpicture}
\def\d{0pt}
\matrix (m) [matrix of nodes,
             nodes={minimum size=0.5cm, draw, outer sep=0pt,inner sep=0,line width=\d},
             nodes in empty cells,column sep=-\d, row sep=-\d,
              ]
{
   1  & 2 & 3  \\
    4 & 5 & 6  \\
    7 & 8 & 9  \\
};
\end{tikzpicture}
\end{document}

在此处输入图片描述

  1. 如果线宽为 0,则边框应该为空。
  2. 输出看起来不像正方形而像矩形,高度比宽度稍长。

答案1

  1. 您可以检查是否\d为 0,如果为 0,则不要传递绘制选项。请注意 if 语句周围的花括号,以隐藏等号,使算法无法区分键和值。

    \documentclass[tikz, margin=2pt]{standalone}
    \usetikzlibrary{matrix}
    \begin{document}
    \begin{tikzpicture}
    \def\d{0pt}
    \matrix (m) [matrix of nodes,
                 nodes={minimum size=0.5cm, {\ifdim\d=0pt \else draw\fi}, outer sep=0pt,inner sep=0,line width=\d},
                 nodes in empty cells,column sep=-\d, row sep=-\d,
                ]
    {
        1 & 2 & 3  \\
        4 & 5 & 6  \\
        7 & 8 & 9  \\
    };
    \end{tikzpicture}
    \end{document}
    

    为了提高可读性,您可以预先执行 if 语句并相应地定义命令:

    \documentclass[tikz, margin=2pt]{standalone}
    \usetikzlibrary{matrix}
    \begin{document}
    \begin{tikzpicture}
    \def\d{0pt}
    \ifdim\d=0pt 
        \def\DrawFlag{}%
    \else
        \def\DrawFlag{draw}%
    \fi
    \matrix (m) [matrix of nodes,
                 nodes={minimum size=0.5cm, \DrawFlag, outer sep=0pt,inner sep=0,line width=\d},
                 nodes in empty cells,column sep=-\d, row sep=-\d,
                ]
    {
        1 & 2 & 3  \\
        4 & 5 & 6  \\
        7 & 8 & 9  \\
    };
    \end{tikzpicture}
    \end{document}
    
  2. 也许您的屏幕稍微扭曲了它们,或者这是一种视觉错觉。它们是正方形。我测量了它们,在您提供的屏幕截图中,它们高 360 像素,宽 360 像素。

答案2

percuse已经给了你解决方案,不要draw边界:

\documentclass[tikz, margin=2pt]{standalone}
\usetikzlibrary{matrix}
\begin{document}
\begin{tikzpicture}
\def\d{0pt}
\matrix (m) [matrix of nodes,
             nodes={minimum size=0.5cm, 
                    draw=none, %<-------------
                    outer sep=0pt,
                    inner sep=0,
                    line width=\d},
             nodes in empty cells,column sep=-\d, row sep=-\d,
              ]
{
   1  & 2 & 3  \\
    4 & 5 & 6  \\
    7 & 8 & 9  \\
};
\end{tikzpicture}
\end{document}

在此处输入图片描述

相关内容