我的意思是,这是有效的:
\draw ([yshift=0.125cm]x\i.south |- ppre.west) -- ([shift={(0.125,0)}]x\i.south |- ppre.west) -- (ppre.west);
这不:
\draw (y\i.west) -- (ppre2.east |- [yshift=-0.125cm]y\i.west) -- (ppre2.east);
失败Package pgf: No shape named '[yshift=-0 is' known
我无法理解这一点:为什么移动一个节点(取 X 坐标)会起作用,而移动 Y 坐标却不起作用?
答案1
以下是我解释此问题的方式。
当您使用类似 的语法时([yshift=0.125cm]x\i.south |- ppre.west)
,它[yshift=0.125cm]
不适用于(x\i.south)
,而是适用于(x\i.south |- ppre.west)
。以下示例说明了这一事实:
\documentclass[tikz, border=0.3mm]{standalone}
\begin{document}
\begin{tikzpicture}[font=\tiny, every circle/.style={radius=0.5pt}]
\coordinate (a) at (0,0);
\coordinate (b) at (1,1);
\draw[red] (a) -- ([xshift=1cm] a -| b);
\fill (0,0) circle node[below] {$(0,0)$};
\fill (1,0) circle node[below] {$(1,0)$};
\fill (2,0) circle node[below] {$(2,0)$};
\end{tikzpicture}
\end{document}
如果[xshift=1cm]
将 应用于(a)
,则将首先给出(使用默认单位) 的 (1,0) ([xshift=1cm] a)
,然后再次给出 的 (1,0) ([xshift=1cm] a -| b)
。但是,红色部分从 (0,0) 到 (2,0),而不是从 (0,0) 到 (1,0)。获得 (2,0) 是因为是 (1,0),应用(a -| b)
后变为 (2,0) (使用默认单位)。[xshift=1cm]
([foobar] a -| b)
因此,将选项应用于foobar
而(a -| b)
不是 的事实(a)
表明,此类选项涉及所有的坐标表达式。在这些条件下,只允许它们出现在这些表达式的开头,即:紧接在左括号之后,似乎是合理的。