2
\documentclass{article}
\usepackage{tikz}

\begin{document}
\begin{tikzpicture}
\draw[help lines] grid (4,3);
\coordinate (X) at (3,3);
\draw[red ,thick,xshift=-10] (1,1 -|   X) -- (2,2 -|   X);
\draw[blue,thick,xshift=-10] (1,1 -| 3,3) -- (2,2 -| 3,3);
\end{tikzpicture}
\end{document} 

输出

当通过名称指定坐标时,似乎xshift=-10没有任何效果。这是为什么?

4

1 回答 1

1

答案在于它X是在转换范围之外定义的xshift=-10- 有关详细信息,请参见此处以及可能在此处- 即节点X已定义并且在转换范围开始之前具有固定位置,然后仅适用于范围内新定义的节点。

一个例子可以澄清事情:扩展范围以包括X仅用一行显示预期行为的定义:

\documentclass{article}
\usepackage{tikz}

\begin{document}
  \begin{tikzpicture}
    \draw[help lines] grid (4,3);
      \begin{scope}[xshift=-10]
        \coordinate (X) at (3,3);
        \draw[red ,thick] (1,1 -|   X) -- (2,2 -|   X);
        \draw[blue,thick] (1,1 -| 3,3) -- (2,2 -| 3,3);
      \end{scope}
  \end{tikzpicture}
\end{document}

产生:

预期输出 - 单行

于 2014-08-05T22:37:28.847 回答