我制作 tikz 图片已经有一段时间了,似乎有很多不同的方法可以在图表中定位节点。绝对坐标、东/西、左/右、$ $ 东西、最小距离……虽然我可以在网上找到足够的信息来让一些东西工作,但我无法看到全局。有人能解释一下所有这些不同的节点定位方法是如何协同工作的,以及计算机实际上是如何确定节点应该去哪里的吗?
答案1
您需要区分几件事:
部分
at (<somewhere)
(或作为关键词:)at={(<somewhere>)}
。可以
<somewhere>
是 TikZ 允许的任何坐标规范。这可能是一个明确的坐标,例如
(1, 2)
,(30: 4)
或者<another node>.<with an anchor>
。
这也可能是一个隐式坐标,例如
(xyz cs: x=1, y=2)
,(xyz polar cs: angle=30, radius=4)
或者(node cs: name=<another node>, anchor=<with an anchor>)
。
坐标系的概念及其版本(显式与隐式)在 13.2 节“坐标系”中进行了解释。第 123 页及后续页。的PGF 手册。
该
at
部分也可以是任意计算,calc
其$…$
概念在第 13.5 节“坐标计算”中进行了解释。第 134 页及后续页。的PGF 手册。此外,您还可以在坐标规范的开头给出用于转换指定坐标的选项,通常这些选项是诸如
scale
、shift
等xscale
。这些选项也可以在路径或范围上给出。
但这与节点没有特别的关系,因为路径上的每个坐标都可以用上述方式之一给出。
如果节点没有指定
at
部分,则使用路径上的当前位置(即路径起点的原点)。因此,以下两条路径的作用相同:
\path ( 3, 2) coordinate (a) + ( 1, 0) coordinate (b) + ( 0, 1) coordinate (c) + (-1, 0) coordinate (d) + ( 0,-1) coordinate (e); \coordinate (a) at (3, 2) coordinate (b) at + (right:1) coordinate (c) at + ( up:1) coordinate (d) at + ( left:1) coordinate (e) at + ( down:1);
选项
anchor=<anchor>
(默认值center
:)。这指定了节点本身的一个点,该点应放置在 处
at
。above left
和等选项right
(以下称为<somewhere>
键)在内部设置锚点(above left
集合anchor=south east
、right
集合anchor=west
)。如果使用此选项()指定长度,above left=1cm
则会添加该方向的变换。在我们的示例中,这意味着.south east
节点的锚点位于距离at
方向above left
(135°)零件一厘米的位置。选项
<somewhere> of=<another node without an anchor>
(已弃用)。此键只是将
<somewhere>
键与at
部分组合在一起。您也可以写:at=(<another node without an anchor>),% the `.center` anchor is used anyway <somewhere>=<node distance>
其中
<node distance>
是键设置的节点距离node distance
。他们还将锚点设置为,
.center
当然,你可以改变它,如果你只是使用anchor
键后按键<somewhere> of
。<somewhere>
通过库增强/改进的键(positioning
如果您使用“节点”图,它实际上应该是一个默认库)。如果值包含文本
of
,就会发生一些神奇的事情(否则我认为它只是一个普通的<somewhere>=<dimension>
键值对)。我相信魔法已经解释过了我的另一个答案。总结一下:
at
设置了部分(如果给出了无锚节点名,则可能用锚点指定),设置anchor
了(center
如果on grid
设置了选项,则始终为),还应用了转换(这取决于键的内容node distance
(有或没有and
)和实际方向(“<somewhere>
”))。钥匙
pos
,又一个神奇的东西。如果
pos
在节点上使用键,则节点将沿着路径(路径的一部分)定位。这已在 16.8 节“将节点明确放置在直线或曲线上”中进行了解释第 190 页及后续页。的PGF 手册。在同一节中,解释了相关的键
auto
和swap
以及和sloped
,并列出了键allow upside down
的快捷方式。pos
第 16.9 节“隐式地将节点放置在直线或曲线上”第 193 页及以上。解释一下如果在路径运算符的目标之前使用节点,这一切将如何发挥作用。