2009-10-19 30 views
15

Ich versuche eine horizontale Linie über mein Diagramm zu zeichnen. Die Y-Koordinate der Linie sollte in der Mitte zwischen den Punkten a und b liegen (a ist unterhalb von b). Der linke und der rechte Endpunkt der Linie befinden sich auf der Begrenzungsbox des Tikz-Bildes. Hier ist, wie ich das jetzt mache, mit der Schnittführung:Wie bekomme ich eine Komponente einer Tikz/PGF-Koordinate?

\coordinate (h0) at ($(a.north)!0.5!(b.south)$); 
\draw (h0 -| current bounding box.west) -- (h0 -| current bounding box.east);

Das scheint mir eher Kreisverkehr. Was ich lieber tun würde, ist die Y-Koordinate von (h0) und die X-Koordinaten der Ost- und Westseite der Begrenzungsbox zu erhalten und die Koordinaten selbst zu bestimmen. Ich möchte, dies zu tun, aber es ist nicht Syntax unterstützt:

\coordinate (h0) at ($(a.north)!0.5!(b.south)$); 
\draw (current bounding box.west.x,h0.y) -- (current bounding box.east.x,h0.y);

Gibt es eine Möglichkeit einzelne Komponenten auf die Referenzkoordinaten, die ich vermisst habe?

Antwort

15

Sie können auf die Komponenten in einem let Betrieb zugreifen. Schauen Sie es in der PGF Handbuch für die Arbeiten, aber aus dem Gedächtnis:

\draw 
    let 
    \p1=($(a.north)!0.5!(b.south)$), 
    \p2=(current bounding box.west), 
    \p3=(current bounding box.east) 
    in 
    (\x2,\y1) -- (\x3, \y1); 

Das wird wahrscheinlich brauchen Debuggen ... EDIT: und jetzt hat sich dank gewesen an den Fragesteller.

+0

Danke! Debugging: Das Komma, das die '\ p3'-Zeile beendet, muss gelöscht werden,' a.north' braucht ein closing ')' und 'b.south' braucht eine öffnung '('. Sobald das erledigt ist, funktioniert das perfekt. – uckelman

5

Alternativ verwenden

\pgfextractx{<dimension>}{<point>} 
\pgfextracty{<dimension>}{<point>} 

Dies sind roh PGF-Befehle, so dass es weniger bequem sein kann, sie zu benutzen.

+0

hah Vielen Dank ... Ich habe die letzten 2 Stunden gesucht ... – leemes

+2

Aber '' muss wirklich ein Lowlevel-Punkt sein, damit es mit Punkten funktioniert, die mit '\ coordinate at .. . ', müssen Sie' \ pgfpointanchor {Koordinate} {Mitte} 'sagen, da' \ Koordinate (Koordinate) bei (1,2); 'definiert einen Knoten der Formkoordinate (mit einem ancher center) und \ pgfpointanchor kehrt zurück der pgf-Tiefpunkt für diesen Anker. – leemes