我需要绘制一个图形,其中某些节点具有相同的 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
出于同样的原因设置键。\mu
0
如果您只期望使用像 A-Za-z0-9 和简单下标这样的一般字符,您可以轻松使用font=\vphantom{Ag}
类似于font=\strut
但不会增加那么多高度和深度(您在这里使用时不会注意到minimum size=1cm
)。
不同之处在于,键text height
和text 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]
但它似乎也适用于其他类型的图表。