如何按基线对齐 TikZ 节点中的文本?

如何按基线对齐 TikZ 节点中的文本?

我需要绘制一个图形,其中某些节点具有相同的 y 坐标。我希望位于同一 y 坐标上的节点内的文本与基线对齐。但是,文本似乎是与底线对齐的,而不是与基线对齐的。

以下是我尝试做的事情:

\documentclass[final,t]{beamer}
\mode<presentation>
\usepackage{tikz}
\usepackage{pgfplots}
\tikzstyle{gate2} = [circle,fill=white,draw=black,minimum size=1cm]
\begin{document}
    \begin{tikzpicture}
        \node[gate2] (mu_0) at (0, 0) {$\mu_0$};
        \node[gate2, baseline = (mu_0.base)] (Lambda_0) at (2,  0) {$\Lambda_0  $};
    \end{tikzpicture}
\end{document}

我看到的是形状位于相同的 y 坐标(如预期的那样),但 mu 高于 Lambda。我如何指定 mu 和 Lambda 应位于基线上?

答案1

我只需\strut在两个字符上都添加一个

\documentclass[final,t]{beamer}
\mode<presentation>
\usepackage{tikz}
\usepackage{pgfplots}
\tikzstyle{gate2} = [circle,fill=white,draw=black,minimum size=1cm]
\begin{document}
    \begin{tikzpicture}
        \node[gate2] (mu_0) at (0, 0) {$\strut\mu_0$};
        \node[gate2, baseline = (mu_0.base)] (Lambda_0) at (2,  0) {$\strut\Lambda_0$};
    \end{tikzpicture}
\end{document}

在此处输入图片描述

答案2

根据您的实际图表,您想要使用positioning加载的TikZ 库

\usetikzlibrary{positioning}

base right=of <other node>钥匙。

无论哪种方式,您都希望使用键。如果您的文本深度不同(在您的例子中,比两个节点中的下标更低/更深),text height您也希望text depth出于同样的原因设置键。\mu0

如果您只期望使用像 A-Za-z0-9 和简单下标这样的一般字符,您可以轻松使用font=\vphantom{Ag}类似于font=\strut但不会增加那么多高度和深度(您在这里使用时不会注意到minimum size=1cm)。

不同之处在于,键text heighttext depth无论内容如何都会设置高度和深度,而\vphantom\strut仅设置最小高度/深度(可以这么说)。

代码

\documentclass[tikz]{standalone}
\tikzset{gate2/.style={circle, inner sep=+0pt, fill=white, draw=black, minimum size=+1cm}}
\newcommand*{\tfbox}[1]{{\fboxsep-\fboxrule\fbox{#1}}}
\begin{document}
\begin{tikzpicture}[gate2/.append style={anchor=base}]
  \node[gate2] (mu_0)                {\tfbox{$\mu_0$}};
  \node[gate2] (Lambda_0) at (2,  0) {\tfbox{$\Lambda_0$}};
  \draw (mu_0.center) -- (Lambda_0.center) (mu_0.base)   -- (Lambda_0.base);
\end{tikzpicture}
\begin{tikzpicture}[gate2/.append style={text height=\heightof{$\Lambda$},text depth=\depthof{g}}]
  \node[gate2] (mu_0)                {$\mu_0$};
  \node[gate2] (Lambda_0) at (2,  0) {$\Lambda_0$};
  \draw (mu_0.center) -- (Lambda_0.center) (mu_0.base)   -- (Lambda_0.base);
\end{tikzpicture}
\begin{tikzpicture}[gate2/.append style={font=\vphantom{Ag}}]
  \node[gate2] (mu_0)               {$\mu_0$};
  \node[gate2] (Lambda_0) at (2, 0) {$\Lambda_0$};
  \draw (mu_0.center) -- (Lambda_0.center) (mu_0.base)   -- (Lambda_0.base);
\end{tikzpicture}
\end{document}

输出

在此处输入图片描述 在此处输入图片描述 在此处输入图片描述

答案3

您可以通过设置固定文本高度和文本深度设置来实现这一点。我使用了这段代码,最初用于在交换图中排列表达式:

\tikzstyle{inline text}=[text height=1.5ex, text depth=0.25ex, yshift=0.5mm]

但它似乎也适用于其他类型的图表。

相关内容