我有一张包含两条对齐线的草图。这些线各有一个标签。查看我的示例时,您会看到标签“顶部”和“入口”不共享相同的基线。两个标签均单独放置。
我该如何为它们两者定义一个基线?
\begin{tikzpicture}[scale=20]
% Specify the coordinates
\coordinate (P1) at (-0.125,0.15);
\coordinate (P2) at (-0.0635, 0.15);
\coordinate (P3) at (-0.0605, 0.15);
\coordinate (P4) at (0.0, 0.15);
\coordinate (P5) at (-0.125,0);
\coordinate (P6) at (-0.0635,0);
\coordinate (P7) at (-0.0605,0);
\coordinate (P8) at (0.0,0);
\coordinate (P9) at (-0.102588, -0.03);
\coordinate (P10) at (-0.0605, -0.03);
\coordinate (P11) at (0.0, -0.03);
\draw[line width=0.5pt] (P1) -- (P2) -- (P6) -- (P10) -- (P7) -- (P3) -- (P4);
\draw[line width=0.5pt] (P1) -- (P5) -- (P9);
\draw[line width=0.5pt] (P4) -- (P11);
\draw[line width=0.5pt] (P1) -- (P2) node [midway, above] {Inlet};
\draw[line width=0.5pt] (P3) -- (P4) node [midway, above] {Top};
\end{tikzpicture}
答案1
如果你想要一个不依赖于标签的“自动”解决方案,那么
\draw[line width=0.5pt] (P1) -- (P2) node [midway, above] {\strut Inlet};
\draw[line width=0.5pt] (P3) -- (P4) node [midway, above] {\strut Top};
可以做。
答案2
由于 的深度,它们未对齐p
。Top
您可以使用vphantom{p}
来对齐它们:
\draw[line width=0.5pt] (P1) -- (P2) node [midway, above] {Inlet\vphantom{p}};
答案3
(这个答案旨在使用“入口”的原始位置进行对齐,而无需在节点上添加进一步的(垂直)填充。)
有一个特殊的锚点.base
,可以将at
节点的一部分放置在文本的基线处。但这在这里没有帮助,因为我们想要放置线条的节点above
(相当于anchor=south
)。使用anchor=base
我们将得到
不过,anchor=south
可以通过将基线对齐节点上移inner ysep
; 键的量来模仿:base above
:
text depth
可以通过将设置为零(从而忽略的深度)来获得非常相似的解决方案p
;关键:Base above
:
通过绘制节点的矩形形状可以看到实际的差异:
如果缺少的深度p
对您来说太紧,您可以使用(如其他答案中已经提出的)\vphantom
或\strut
(只是一个非常大的\vphantom
)。但我宁愿为此使用密钥,而不是手动在节点中插入这些宏。我们可以使用密钥font
来实现这一点:
ssstrut
,Ag
:sstrut
,()
:strut
,\strut
:
代码
\documentclass[tikz]{standalone}
\tikzset{
% nodes={draw,draw opacity=.5},% debug
base above/.style={% shape does not loose its original measurements
anchor=base, yshift=\pgfkeysvalueof{/pgf/inner ysep}},
Base above/.style={% “smashing” the bottom part
above, text depth=0ex},
ssstrut/.style={% very small strut
font=\vphantom{Ag}},
sstrut/.style={% small strut
font=\vphantom{()}},
strut/.style={% big strut
font=\strut}}
\newcommand*{\coordinates}{\coordinate (P1) at (-0.125,0.15) coordinate (P2) at (-0.0635,0.15)
coordinate (P3) at (-0.0605,0.15) coordinate (P4) at (0.0,0.15);}
\begin{document}
\begin{tikzpicture}[scale=20] \coordinates
\draw (P1) -- (P2) node [midway, base above] {Inlet};
\draw (P3) -- (P4) node [midway, base above] {Top};
\end{tikzpicture}
\begin{tikzpicture}[scale=20] \coordinates
\draw (P1) -- (P2) node [midway, Base above] {Inlet};
\draw (P3) -- (P4) node [midway, Base above] {Top};
\end{tikzpicture}
\begin{tikzpicture}[scale=20] \coordinates
\draw (P1) -- (P2) node [midway, above, ssstrut] {Inlet};
\draw (P3) -- (P4) node [midway, above, ssstrut] {Top};
\end{tikzpicture}
\begin{tikzpicture}[scale=20] \coordinates
\draw (P1) -- (P2) node [midway, above, sstrut] {Inlet};
\draw (P3) -- (P4) node [midway, above, sstrut] {Top};
\end{tikzpicture}
\begin{tikzpicture}[scale=20] \coordinates
\draw (P1) -- (P2) node [midway, above, strut] {Inlet};
\draw (P3) -- (P4) node [midway, above, strut] {Top};
\end{tikzpicture}
\end{document}