Bitte beachten Sie diesen Code
\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}
Ich schaffe es nicht, eine gerade vertikale Linie von Knoten foo1 und foo2 nach unten zum Pfad line1 zu zeichnen. Ich möchte keine absoluten Koordinaten angeben. Ich habe versucht, dieses Problem mit Schnittpunkten zu lösen, aber da meine Startposition ein Knoten ist, scheint das nicht zu funktionieren. Irgendwelche Vorschläge?
Antwort1
So was?
\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}
Antwort2
Mit TikZ können Sie den Punkt am Schnittpunkt der horizontalen Linie lokalisieren, die durch a
und die vertikale Linie verläuft. Der foo1
von Ihnen gesuchte Punkt ist die Syntax (foo1|-a)
oder beides mit der Syntax (a-|foo1)
.
Ich zitiere das TikZ 3.1.4 Handbuch
Im Allgemeinen ist die Bedeutung von
(p |- q)
ist die Bedeutung vonSchnittpunkt einer vertikalen Linie durchp
und einer horizontalen Linie durchq
.
\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}