我正在使用bayesnet
TikZ 库绘制图形模型。节点变量可能具有不同的大小,例如$v_0$
和$v_{N-1}$
,结果是某些气泡比其他气泡大。我试图使用\phantom
它来创建大小相同的气泡,如下所示:
\node[obs] (v0) {$v_{0\phantom{N-}}$};
此解决方案的问题是标签在气泡内被推到最左边。参考上面的片段,有没有办法计算{N-}
(注意它是一个下标)所占用的空间并将其均匀分布在 的左侧和右侧$v_0$
?
答案1
是的,你可以测量宽度。使用
\sbox0{$\scriptstyle N-$}
和一个
\hspace*{.5\wd0}
实际内容之前和之后将会解决这个问题。
但使用text width
键(或minimum width
减去/pgf/inner xsep
值)更简单。您可以使用\widthof
(更强大)或 PGFmathwidth
函数。
minimum width
此外,您还可以简单地为或指定任意值text width
。
如果你不想提前提供内容,你可以使用.aux
如下文件TikZ 中的依赖节点大小。
代码
\documentclass[tikz,convert=false]{standalone}
\begin{document}
\begin{tikzpicture}[nodes=draw]
\node {$v_{N-1}$};
\node at (0,-.5) {$v_0$};
\end{tikzpicture}
\begin{tikzpicture}[nodes={draw,align=center,text width=\widthof{$v_{N-1}$}}]
\node {$v_{N-1}$};
\node at (0,-.5) {$v_0$};
\end{tikzpicture}
\begin{tikzpicture}[nodes={draw,align=center,text width=width("$v_{N-1}$")}]
\node {$v_{N-1}$};
\node at (0,-.5) {$v_0$};
\end{tikzpicture}
\begin{tikzpicture}[nodes={draw,minimum width=+3.5em}]
\node {$v_{N-1}$};
\node at (0,-.5) {$v_0$};
\end{tikzpicture}
\begin{tikzpicture}[nodes=draw]
\node {$v_{N-1}$};
\node at (0,-.5) {\sbox0{$\scriptstyle N-$}\hspace*{.5\wd0}$v_0$\hspace*{.5\wd0}};
\end{tikzpicture}
\end{document}