por favor considere este código
\documentclass{article}
\usepackage{tikz}
\usetikzlibrary{positioning,intersections}
\begin{document}
\begin{tikzpicture}[node distance=-\pgflinewidth]
\node[fill=black] (a) {};
\node[fill=black, xshift=\linewidth] (c) {};
\node[xshift=\linewidth*0.7] (b) {...};
\draw [name path=line1] (a) -- (b);
\draw (b) -- (c);
\node[draw, rectangle, above=of a, yshift=0.5cm, xshift=1cm] (foo1) {Foo 1};
\node[draw, rectangle, right=0.5cm of foo1] (foo2) {Foo 2};
\draw (foo1) -- TODO;
\draw (foo2) -- TODO;
\end{tikzpicture}
\end{document}
No logro dibujar una línea vertical recta desde el nodo foo1 y foo2 hacia abajo hasta la línea de ruta1. No quiero dar coordenadas absolutas. Intenté resolver este problema con intersecciones, pero como mi posición inicial es un nodo, esto no parece funcionar. ¿Alguna sugerencia?
Respuesta1
¿Como esto?
\documentclass{article}
\usepackage{tikz}
\usetikzlibrary{positioning,intersections}
\begin{document}
\begin{tikzpicture}[node distance=-\pgflinewidth]
\node[fill=black] (a) {};
\node[fill=black, xshift=\linewidth] (c) {};
\node[xshift=\linewidth*0.7] (b) {...};
\draw [name path=line1] (a) -- (b);
\draw (b) -- (c);
\node[draw, rectangle, above=of a, yshift=0.5cm, xshift=1cm] (foo1) {Foo 1};
\node[draw, rectangle, right=0.5cm of foo1] (foo2) {Foo 2};
\path[name path=fl1] (foo1.270)coordinate(f1)--++(-90:2);
\path[name path=fl2] (foo2.270)coordinate(f2)--++(-90:2);
\path[name intersections={of=fl1 and line1,by={a}}];
\path[name intersections={of=fl2 and line1,by={b}}];
\draw (f1)--(a);
\draw (f2)--(b);
% \draw (foo1) -- TODO;
% \draw (foo2) -- TODO;
\end{tikzpicture}
\end{document}
Respuesta2
TikZ te permite ubicar el punto ubicado en la intersección de la línea horizontal que pasa a
y la vertical foo1
que buscas es la sintaxis (foo1|-a)
o ambas con la sintaxis (a-|foo1)
.
Cito el manual de TikZ 3.1.4
En general, el significado de
(p |- q)
es elintersección de una línea vertical que pasa porp
y una línea horizontal que pasa porq
.
\documentclass{article}
\usepackage{tikz}
\usetikzlibrary{positioning,intersections}
\begin{document}
\begin{tikzpicture}[node distance=-\pgflinewidth]
\node[fill=black] (a) {};
\node[fill=black, xshift=\linewidth] (c) {};
\node[xshift=\linewidth*0.7] (b) {...};
\draw [name path=line1] (a) -- (b);
\draw (b) -- (c);
\node[draw, rectangle, above=of a, yshift=0.5cm, xshift=1cm] (foo1) {Foo 1};
\node[draw, rectangle, right=0.5cm of foo1] (foo2) {Foo 2};
\draw (foo1) -- (a-|foo1);
\draw (foo2) -- (a-|foo2);
\end{tikzpicture}
\end{document}