我想知道为什么通过 fit 定位的节点的节点文本没有居中?
编辑: 正如 Peter Grill 在他的评论中所建议的,我用更现实的例子改变了以前的 MWE:
\documentclass[tikz,border=3mm]{standalone}
\usetikzlibrary{chains,fit,positioning}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\begin{document}
%%%% se-fit
\begin{tikzpicture}[
every label/.append style = {label distance=1mm, inner ysep=0mm,
font=\scriptsize\sffamily, text=blue!50!black,
align=center},
node distance = 0mm,
start chain = going right,
N/.style 2 args = {name=n#1,
minimum width=#2,
draw, text height=2ex, text depth=1ex,
inner sep=2mm, outer sep=0mm, on chain}
]
\node[N={1}{11mm},draw=none,fill=blue!10] {};
\node[N={2}{11mm},draw=none,fill=blue!20] {};
\node[draw,inner sep=0pt, outer sep=0pt,
fit=(n1) (n2),
label=above left:{bits:},
label=above:144] {preamble};
\node[N={3}{11mm},fill=blue!20,right=of n2,
label=above:8] {signal};
\node[N={4}{11mm},fill=blue!20,
label=above:8] {service};
\node[N={5}{11mm},fill=blue!20,
label=above:12] {length};
\node[N={5}{7mm},fill=blue!20,
label=above:16] {FCS};
\node[N={6}{55mm},
label=above:<length> octets] {payload};
\end{tikzpicture}
%
\end{document}
这是功能还是错误?我想知道,为什么节点在通过 fit 选项放置时的行为与在某个坐标处定位时的行为不同。
将节点文本作为标签文本放置在中心节点并不方便,因为真实图片具有许多具有常见选项设置的标签,如上图所示的 MWE,以及许多类似的节点构造(未在 MWE 中显示)。
Peter Grill 建议使用另一个文本节点来解决问题,但我的主要问题仍然没有得到解答。
答案1
我不知道为什么\node
文本默认不居中,但您可以使用选项label=center:my text
将文本放在同一个节点中:
或者,您可以单独放置\node
后你有你的fit
。
代码:
\documentclass[tikz,border=3mm]{standalone}
\begin{document}
\usetikzlibrary{fit,positioning}
\begin{tikzpicture}[
node distance=0mm,
every node/.style={inner sep=0pt, outer sep=0pt,font=\large}
]
\node[minimum size=3em,fill=blue] (a) {};
\node[minimum size=3em,fill=red,right=of a] (b) {};
\node[draw=brown, thick,fit={(a) (b)}, label=center:my text] (c) {};
\end{tikzpicture}
\end{document}
代碼: 分开\node
:
\documentclass[tikz,border=3mm]{standalone}
\begin{document}
\usetikzlibrary{fit,positioning}
\begin{tikzpicture}[
node distance=0mm,
every node/.style={inner sep=0pt, outer sep=0pt,font=\large}
]
\node[minimum size=3em,fill=blue] (a) {};
\node[minimum size=3em,fill=red,right=of a] (b) {};
\node[draw=brown, thick,fit={(a) (b)}] (c) {};
\node at (c) {my text};
\end{tikzpicture}
\end{document}