Eu tenho a seguinte imagem 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}
Meu objetivo é colocar um nó na posição (x,y), com y = 0, mas com x igual ao nó mais à esquerda dos dois nós (nó superior) e (nó inferior). Eu gostaria de fazer isso sem codificar a posição. Para que a posição ainda estivesse correta se eu alterasse o conteúdo desses dois nós.
Responder1
Uma local bounding box
conhecida coordenada esquerda/direita/superior/inferior de tudo o que está dentro.
\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}
Responder2
Uma maneira diferente: use o \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}
Coloquei um círculo no local desejado. Você pode alterá-lo para o que quiser, você pode até usar isso como uma coordenada: