Tikz:将节点放置在两个不同宽度的节点的最左边

Tikz:将节点放置在两个不同宽度的节点的最左边

我有以下 tikz 图片:

\documentclass{minimal}
\usepackage{tikz}
\usetikzlibrary{positioning}
\begin{document}
    \begin{tikzpicture}
        \coordinate (origin) at (0,0) ;
        \node[above=10pt of origin,anchor=east] (topnode) {Short};
        \node[below=10pt of origin,anchor=east] (bottomnode) {Longer Node};
    \end{tikzpicture}
\end{document}

我的目标是将一个节点放置在位置 (x,y),y=0,但 x 等于两个节点 (topnode) 和 (bottomnode) 中最左边的节点。我希望在不对位置进行硬编码的情况下执行此操作。这样,如果我更改这两个节点的内容,该位置仍然是正确的。

答案1

已知local bounding box内部所有物体的最左/最右/最上/最下的坐标。

\documentclass{minimal}
\usepackage{tikz}
\usetikzlibrary{positioning}
\begin{document}
    \begin{tikzpicture}
        \coordinate (origin) at (0,0) ;
        \begin{scope}[local bounding box=nodes]
          \node[above=10pt of origin,anchor=east] (topnode) {Short};
          \node[below=10pt of origin,anchor=east] (bottomnode) {Longer Node};
        \end{scope}
        \node[anchor=west] at (origin-|nodes.west) {here I am};
    \end{tikzpicture}
\end{document}

在此处输入图片描述

答案2

另一种方法:使用\pgfgetlastxy

\documentclass[tikz]{standalone}
\usetikzlibrary{positioning}
\newdimen\xone
\newdimen\y
\newdimen\xtwo
\begin{document}
\begin{tikzpicture}
\coordinate (origin) at (0,0) ;
\node[above=10pt of origin,anchor=east,inner sep=0pt] (topnode) {Short};
\node[below=10pt of origin,anchor=east,inner sep=0pt] (bottomnode) {Longer Node};
\path (topnode.west);
\pgfgetlastxy{\xone}{\y};
\path (bottomnode.west);
\pgfgetlastxy{\xtwo}{\y};
\draw ({min(\xone,\xtwo)},0) circle (1pt);
\end{tikzpicture}
\end{document}

我在所需位置画了一个圆圈。您可以将其更改为任何您想要的值,甚至可以将其用作坐标:

在此处输入图片描述

在此处输入图片描述

相关内容