2009-10-19 25 views
15

Diyagramım boyunca yatay bir çizgi çizmeye çalışıyorum. Çizginin Y koordinatı, a ve b noktaları arasında yarı olmalıdır (a, b'nin altındadır). Çizginin sol ve sağ uç noktaları tikzpicture'nin sınırlayıcı kutusundadır. İşte kesişim operatörü kullanılarak, şimdi bunu yapıyorum edebilirsiniz:Bir tikz/PGF koordinatının bir bileşeni nasıl alınır?

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

Bu beni çok dolambaçlı vurur. Yapmayı tercih ettiğim şey, (h0) Y koordinatını ve sınırlayıcı kutunun doğu ve batı taraflarının X koordinatlarını almak ve koordinatları kendim oluşturmaktır. Bunu yapmak istiyorum, ancak sözdizimi desteklenmez:

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

Kaçırdığım koordinatlarının bireysel bileşenlerini başvurmak için bir yol var mı?

cevap

15

let işleminin içindeki bileşenlerden yararlanabilirsiniz. işleri için PGF kılavuzunda o kadar bak ama bellekten:

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

Muhtemelen ... ayıklama ihtiyacımız vardır EDIT: şimdi ve sorgulayıcı sayesinde olmuştur. Alternatif olarak

+0

Teşekkürler! Hata ayıklama: '\ p3 'satırının sonlandırılması gereken virgülün silinmesi,' a.north 'kapanması gerekir') 've' b.south'un bir açıklığa ihtiyacı var' ('. Bu bittiğinde, bu mükemmel çalışır. – uckelman

5

, bu da bunları kullanmak için daha az uygun olabilir, böylece ham PGF komutlarıdır

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

kullanın.

+0

hah Çok teşekkür ederim ... son 2 saat boyunca bunu arıyordum ... – leemes

+2

Ama '' 'düşük seviye pgfpoint olması gerekiyor. .', '\ pgfpointanchor {koordinat} {center}' demek zorundasınız, çünkü '\ (koordinat) 'da (1,2)' de koordinat (koordinat) olduğundan, şekil koordinatının bir düğümünü tanımlar (merkez olarak adlandırılan bir anahtara sahip olmak) ve \ pgfpointanchor döndürür Bu çapa için pgf lowlevel noktası. – leemes