Как получить один компонент координаты tikz/PGF?

Я пытаюсь нарисовать горизонтальную линию по моей диаграмме. Координата Y линии должна находиться на полпути между точками a и b (a ниже b). Левая и правая конечные точки линии находятся на ограничивающей рамке tikzpicture. Вот как я это делаю сейчас, используя оператор пересечения:

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

Есть ли способ ссылки на отдельные компоненты координат, которые мне не хватает?

Ответы

Ответ 1

Вы можете получить компоненты внутри операции 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: теперь это стало возможным благодаря опросу.

Ответ 2

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

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

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