Как получить один компонент координаты 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);

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

3 ответов


вы можете получить компоненты внутри a 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:и теперь благодаря вопрошающему.


можно использовать

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

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


еще один вариант, который я только что нашел из этой показывает, что вы можете получить относительное позиционирование от узла, сделав это:

\node at (2, 1) (a) {};
\draw (a) -- ++(right:2);

это нарисует линию от узла a до точки 2 единиц справа от точки a. Как и в Примере, который я связал, это полезно, когда вы не знаете точных координат узла и должны рисовать вещи относительно него.