对于 (A) -- (B) 和 (A) 到 (B) 的路径上 pos=x 节点的不同语法

对于 (A) -- (B) 和 (A) 到 (B) 的路径上 pos=x 节点的不同语法

我想知道为什么在使用简单和系统或操作时,需要不同的语法来在路径上指定nodes(和) 。coordinates--.. controls …to

以下举例说明该问题:

\documentclass{scrartcl} 

\usepackage[utf8]{inputenc} 
\usepackage[T1]{fontenc} 
\usepackage{tikz} 
\tikzset{every node/.style={fill=white,inner sep=2pt}}

\begin{document}
\begin{tikzpicture} 
    \draw [thick] (0,0) -- (5,2)
        node [pos=0.2] {A}
        node [midway] {B};
\end{tikzpicture}

\begin{tikzpicture} 
    \draw [thick] (0,0) .. controls +(1,2) and +(-2,-1) .. (5,2)
        node [pos=0.2] {A}
        node [midway] {B};
\end{tikzpicture}

\begin{tikzpicture}% with wrong result
    \draw[line width=1pt](0,0) to[out=40, in=160] (5,2)
        node [pos=0.2] {A}
        node [midway] {B};
\end{tikzpicture}

\begin{tikzpicture} 
    \draw[line width=1pt](0,0) to[out=40, in=160] 
        node [pos=0.2] {A}
        node [midway] {B} (5,2); 
\end{tikzpicture} 
\end{document}

使用--或时controls可以定位节点第二个坐标。

简单的  - 控制操作

to[in=x, out=y]这样不行

到问题

所有节点都转到(0,0)(不是第一个坐标,而是始终是),我们必须在操作(0,0)后立即定位到第二个坐标之前的节点to

结果权

我猜这与工作方式有关to,但我想知道为什么……?

答案1

这个to path机制非常强大。本质上,使用一个to path可以任何事物在路径构建的当前阶段,机器to path需要知道路径的起始坐标、目标以及要放置在路径上的任何节点。后者是因为它to path应该拥有完全的控制权,包括决定如何解释在路径段上定位节点的各种方式。

TikZ 的路径构造函数的工作原理类似于解析器。因此,它会吞噬输入行,并在执行过程中发出 PGF 命令。to path当到达目标坐标时(但在处理之前),将调用构造函数。因此,to path在指定目标之前,必须读取要参与构造的任何节点。可能可以在目标之后指定节点,但这是否有效将在很大程度上取决于实际to path执行的操作。在一些简单的情况下,它只是将更正常的段插入当前路径规范中,在这种情况下,将节点放在后面应该可以工作。但如果它做了一些更复杂的事情,那就不行了。

通过更简单的路径规范,例如---|.. controls ..,那么 TikZ 就知道路径的外观,因此在处理节点时,可以更灵活地指定它们的时间:不会出现意外。

相关内容