为什么最小宽度等于另一个(背景)拟合节点宽度的 pgf 拟合节点的背景会发生偏移?

为什么最小宽度等于另一个(背景)拟合节点宽度的 pgf 拟合节点的背景会发生偏移?

我有两个pgf拟合节点:

  • 一个在另一个下面,
  • 左对齐,
  • 具有不同的(不可预测的)宽度,

我希望它们有背景,并且背景宽度相同。

为此,我得到了创建一个适合其他两个节点水平宽度的节点但是我遇到了以下 MWE 指出的问题:最小宽度等于第一个节点的第二个节点的背景水平移动。

\documentclass{article}
\usepackage{tikz}
\usetikzlibrary{positioning,calc,backgrounds,fit}
\begin{document}
\tikzstyle{every node}=[font=\ttfamily]
\begin{tikzpicture}
  \node (n11)                            {x};
  \node (n12) [right=of n11,xshift= 5mm] {x};
  \node (n21) [below=of n11,yshift=10mm] {x};
  \node (n22) [right=of n21]             {x};
  \begin{pgfonlayer}{background}
    \node[
        fill=red!20,
        inner sep=0pt,
        fit=(n11) (n12)
        ] (n1) {};
    \path let
        \p1=(n1.west),
        \p2=(n1.east)
    in node [
        fill=blue!20,
        inner sep=0pt,
        fit=(n21) (n22),
        minimum width=\x2-\x1-\pgflinewidth
        ] (n2) {};
  \end{pgfonlayer}
\end{tikzpicture}
\end{document}

输出如下:

在此处输入图片描述

这是怎么回事?

答案1

这是一个可能的解决方案(如果我理解这个问题的话):

\documentclass{standalone}
\usepackage{tikz}
\usetikzlibrary{positioning,calc,backgrounds,fit}
\tikzset{
  every node/.style={font=\ttfamily}
}
\begin{document}
\begin{tikzpicture}
  \node (n11)                            {x};
  \node (n12) [right=of n11,xshift= 5mm] {x};
  \node (n21) [below=of n11,yshift=10mm] {x};
  \node (n22) [right=of n21]             {x};
  \begin{pgfonlayer}{background}
    \node [fill=red!20 ,inner sep=0pt,fit=(n11)(n12),line width=0] (n1) {};
    \node [fill=blue!20,inner sep=0pt,fit=(n21)(n22)(n1.west |-n21)(n1.east |-n22)] (n2) {};
  \end{pgfonlayer}
\end{tikzpicture}
\end{document}

在此处输入图片描述

相关内容