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}

Я поместил круг в нужное место. Вы можете изменить его на любой другой, можете даже использовать это как координату:

введите описание изображения здесь

введите описание изображения здесь

Связанный контент