画中画:如何消除外部节点选项对内部节点的影响?

画中画:如何消除外部节点选项对内部节点的影响?

在这种情况下,当您拥有某种形状(在我的情况下是矩形)的 TikZ 图片时,外部形状的参数似乎也会影响内部图片的参数。这可以通过重新定义所有这些参数来消除。但是,如果外部形状已确定“文本宽度”,但在内部图片的形状中我只想确定“最小宽度”(形状的宽度会自动调整为文本的宽度),该怎么办?例如:

\documentclass[12pt,tikz,border=1mm]{standalone}
\usetikzlibrary{chains,shapes.multipart}

    \begin{document}
        \begin{tikzpicture}[start chain = going right]
        \node[rectangle split,rectangle split parts=2,
              inner ysep=1mm, inner ysep=2mm, text width=55mm, draw] 
        {adjust time\qquad
    \tikz[every node/.style={shape=rectangle,
                             inner xsep=0.5mm,outer sep=0mm, 
                             text width=1.1ex,% here I like to have minimum width ...
                             node distance=0.5mm,on chain}]
        {\node[fill=gray!10]{0};\node[fill=gray!10]{0};\node{:};
         \node[fill=gray!10]{0};\node[fill=gray!10]{0};}
    \nodepart{two} only text
                    };
        \end{tikzpicture}
    \end{document}

有没有办法告诉图片内部,为外部形状确定的“文本宽度”不应该影响内部文本宽度的文本宽度,或者在内部形状中确定它,它会自动调整到实际文本的宽度? 在此处输入图片描述

在上图中,带有分号(:) 的节点的宽度太宽,我希望宽度会自动调整到其宽度。

我还想解决一个问题,如何将内部矩形中的文本与外部矩形中的文本对齐。

答案1

要将内部节点中文本的基线与可\tikz[baseline,nodes={anchor=base,...}]用于内部图片的外部文本的基线对齐。

为了防止外部节点选项的影响,请将内部图片保存在一个框中:

\documentclass[12pt,tikz,border=1mm]{standalone}
\usetikzlibrary{chains,shapes.multipart}
\newbox\mytikzBox
\newcommand{\savetikzBox}[2][\mytikzBox]{%
  \sbox#1{\pgfinterruptpicture#2\endpgfinterruptpicture}}

\begin{document}
\begin{tikzpicture}
  \savetikzBox{%
    \tikz[
      baseline,
      start chain = going right,
      nodes={anchor=base,
        fill=gray!10,
        inner xsep=0.5mm,outer sep=0mm,
        on chain}
        ,node distance=.5mm
      ]
    {\node{0};\node{0};
    \node[fill=none,inner xsep=0pt]{:};
    \node{0};\node{0};}
  }
  \node[
    rectangle split,rectangle split parts=2,
    inner ysep=2mm,
    text width=55mm,
    draw] 
  {adjust time\qquad\usebox\mytikzBox
  \nodepart{two} only text
  };
\end{tikzpicture}
\end{document}

在此处输入图片描述

相关内容