2009-10-19 5 views
15

다이어그램에 가로선을 그리려합니다. 선의 Y 좌표는 점 a와 점 b 사이의 중간에 있어야합니다 (a가 b 아래 임). 선의 왼쪽과 오른쪽 끝 점이 tikzpicture의 경계 상자에 있습니다. 교차 연산자를 사용하여 지금 내가하는 일은 다음과 같습니다.tikz/PGF 좌표의 한 구성 요소를 얻는 방법?

\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); 

그건 아마 ... 디버깅해야합니다 편집 : 지금은 질문자에게 감사하고있다. 또한

+0

감사! 디버깅 :'\ p3' 라인을 끝내는 쉼표는 삭제해야하고,'a.north'는 닫음이 필요합니다. ') 그리고'b.south'는 여는 것을 필요로합니다. (일단 완료되면, 이것은 완벽하게 작동합니다.) – uckelman

5

는,이 그것을 사용할 덜 편리 할 수 ​​있도록 원시 PGF는 명령입니다

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

사용합니다.

+0

hah 정말 고마워요 ... 지난 2 시간 동안 이걸 찾으려고했는데 ... – leemes

+2

하지만 ''은 정말 낮은 레벨의 pgfpoint 일 필요가 있습니다. '(1,2);에있는 \ coordinate (좌표)는 모양 좌표의 노드를 정의하고 (센터라고하는 하나의 앵커를 가짐) \ pgfpointanchor가 리턴하므로'\ pgfpointanchor {coordinate} {center}'라고해야합니다. 이 엥커의 pgf 저레벨 포인트 – leemes