Как получить один компонент координаты 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. Как и в Примере, который я связал, это полезно, когда вы не знаете точных координат узла и должны рисовать вещи относительно него.