垂直对齐多个标签

垂直对齐多个标签

我有一张包含两条对齐线的草图。这些线各有一个标签。查看我的示例时,您会看到标签“顶部”和“入口”不共享相同的基线。两个标签均单独放置。

我该如何为它们两者定义一个基线?

\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

由于 的深度,它们未对齐pTop您可以使用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来实现这一点:

  • ssstrutAg

    在此处输入图片描述

  • 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}

相关内容