在这种情况下,当您拥有某种形状(在我的情况下是矩形)的 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}