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

Это поражает меня как довольно крутую. Я предпочел бы получить координату Y (h0) и координаты 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. Посмотрите на него в руководстве П для работы, но из памяти:

\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

В качестве альтернативы, использовать

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

Эти команды сырые PGF, так что может быть менее удобно, чтобы использовать их.

+0

hah Большое спасибо ... Я искал это в течение последних 2 часов ... – leemes

+2

Но '' действительно должен быть pgfpoint низкого уровня. Чтобы он работал с точками, определенными с помощью '\ координат в .. .', вы должны сказать '\ pgfpointanchor {coord} {center}', так как '\ координата (координата) в (1,2);' определяет узел координаты формы (имеющий один ancher-центр) и \ pgfpointanchor возвращает точка низкого уровня pgf для этого якоря. – leemes