21

我试图在我的图表上画一条水平线。直线的 Y 坐标应在点 a 和 b 之间(a 低于 b)。线的左右端点在tikzpicture的边界框上。这是我现在使用交集运算符的方法:

\coordinate (h0) at ($(a.north)!0.5!(b.south)$);
\draw (h0 -| 当前边界框.west) -- (h0 -| 当前边界框.east);

这让我觉得相当迂回。我宁愿得到(h0)的Y坐标和边界框东西两侧的X坐标,并自己组合坐标。我想这样做,但它不受支持的语法:

\coordinate (h0) at ($(a.north)!0.5!(b.south)$);
\draw (当前边界框.west.x,h0.y) -- (当前边界框.east.x,h0.y);

有没有办法引用我缺少的坐标的各个组成部分?

4

3 回答 3

21

您可以获取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);

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

于 2009-11-22T18:39:15.247 回答
9

或者,使用

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

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

于 2010-02-06T13:25:34.667 回答
3

我刚刚从中找到的另一个选项表明,您可以通过执行以下操作从节点获取相对定位:

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

这将绘制一条从节点 a 到点 a 右侧 2 个单位的线。就像在我链接的示例中一样,当您不知道节点的确切坐标并且需要相对于它绘制事物时,这很有用。

于 2018-04-11T17:12:09.317 回答