使用 bayesnet TikZ 库在下标中使用 \phantom

使用 bayesnet TikZ 库在下标中使用 \phantom

我正在使用bayesnetTikZ 库绘制图形模型。节点变量可能具有不同的大小,例如$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}

输出

原来的

在此处输入图片描述

\widthof{…}

在此处输入图片描述

width("…")

在此处输入图片描述

任意值

在此处输入图片描述

测量

在此处输入图片描述

相关内容