2009-10-19 5 views
15

私はダイアグラム全体に水平線を描こうとしています。線のY座標は点aとbの中間でなければなりません(aはbより下です)。ラインの左右の端点は、tikzpictureのバウンディングボックスにあります。ここでは、交差点演算子を使用して、これをやっています。tikz/PGF座標の1つのコンポーネントを取得する方法は?

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

これは私にはむしろラウンドアラートです。私はむしろ、(h0)のY座標とバウンディングボックスの東と西のX座標を取得し、自分自身で座標を作成します。私はこれを行うにはしたいと思いますが、それは構文はサポートされていません。

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

は私が欠けている座標の個々のコンポーネントを参照する方法はありますか?

答えて

15

letの操作内のコンポーネントを取得できます。作品でPGFマニュアルでそれを見て、しかし、メモリから:おそらくデバッグの必要があります

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

... EDIT:そして今、質問者に感謝しています。

+0

ありがとうございます!デバッグ: '\ p3'行を終了するコンマは削除する必要があり、' a.north'は終了する必要があります) 'と 'b.south'は開く必要があります(完了したら、これは完全に動作します) – uckelman

5

はまた、これらは生PGFある

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

を使用してコマンドので、それらを使用する不便かもしれません。

+0

hah !ありがとう、ありがとう...過去2時間、これを探していました... – leemes

+2

しかし、 ''は本当に低レベルのpgfpointである必要があります。 (1,2);はシェイプ座標のノードを定義します(アンカーをcenterと呼びます)、\ pgfpointanchorが返すので、 '\ pgfpointanchor {coordinate} {center}'と言う必要があります。このアンカーのpgf低レベルポイント – leemes