2009-10-19 49 views
15

Tôi đang cố vẽ đường ngang trên biểu đồ của mình. Tọa độ Y của đường thẳng phải nằm giữa các điểm a và b (a dưới b). Các điểm cuối bên trái và bên phải của dòng nằm trên hộp giới hạn của tikzpicture. Dưới đây là cách tôi đang thực hiện việc này ngay bây giờ, bằng cách sử dụng toán tử giao lộ:Làm thế nào để có được một thành phần của một phối hợp tikz/PGF?

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

Điều này đánh tôi thay vì vòng xoay. Điều tôi muốn làm là lấy tọa độ Y của (h0) và tọa độ X của các cạnh phía đông và phía tây của hộp giới hạn, và tự soạn các tọa độ. Tôi muốn thực hiện việc này, nhưng cú pháp không được hỗ trợ:

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

Có cách nào để tham chiếu các thành phần riêng lẻ của tọa độ mà tôi bị thiếu không?

Trả lời

15

Bạn có thể lấy các thành phần bên trong hoạt động let. Xem trong hướng dẫn sử dụng PGF cho các tác phẩm, nhưng từ bộ nhớ:

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

Điều đó có thể sẽ cần gỡ lỗi ... EDIT: và bây giờ đã được nhờ người hỏi.

+0

Cảm ơn! Gỡ lỗi: Dấu phẩy kết thúc dòng '\ p3' cần được xóa,' a.north' cần đóng ')' và 'b.south' cần mở '('. Khi đã xong, thao tác này sẽ hoạt động hoàn hảo. – uckelman

5

Ngoài ra, sử dụng

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

Đây là những lệnh thô PGF, vì vậy nó có thể ít thuận tiện để sử dụng chúng.

+0

hah Cảm ơn bạn rất nhiều ... tôi đã tìm kiếm điều này trong 2 giờ qua ... – leemes

+2

Nhưng ' 'thực sự cần phải là một pgfpoint lowlevel. Để làm cho nó hoạt động với các điểm được xác định bằng cách sử dụng' \ coordinate tại .. .', bạn phải nói '\ pgfpointanchor {coordinate} {center}', vì '\ coordinate (tọa độ) tại (1,2);' định nghĩa một nút tọa độ hình dạng (có một ancher gọi là center) và \ pgfpointanchor trả về điểm lowlevel pgf cho neo này. – leemes