如何获得tikz / PGF坐标的一个组件?

时间:2009-10-19 13:03:52

标签: latex 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);

这让我觉得相当迂回。我宁愿做的是得到(h0)的Y坐标和边界框的东边和西边的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 个答案:

答案 0 :(得分:18)

您可以访问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);

那可能需要调试......编辑:现在感谢提问者了。

答案 1 :(得分:7)

或者,使用

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

这些是原始PGF命令,因此使用它们可能不太方便。

答案 2 :(得分:0)

我刚从this找到的另一个选项显示你可以通过这样做从节点获得相对定位:

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

这将从节点a到点a的右边2点单位画一条线。就像我链接的示例一样,当您不知道节点的确切坐标并且需要绘制相对于它的东西时,这非常有用。