为什么我不能使用“后期选项”给坐标赋予别名?

为什么我不能使用“后期选项”给坐标赋予别名?

这是一个小文件:

\documentclass{standalone}

\usepackage{tikz}

\begin{document}

\begin{tikzpicture}
    %\coordinate (A) at (0, 0);                     % Line A
    %\node [coordinate] (A) at (0, 0) {};           % Line B
    %\node (A) at (0, 0) {};                        % Line C
    %\coordinate [alias=AA] (A) at (0, 0);          % Line D
    %\node [coordinate, alias=AA] (A) at (0, 0) {}; % Line E
    %\path (A) [late options = {alias=AA}];         % Line ABC
    \coordinate (B) at (1, 0);
    \draw (AA) -- (B);
\end{tikzpicture}

\end{document}
  1. 取消注释行 A 和 ABC,您会得到“包 pgf 错误:没有已知名为 AA 的形状。”
  2. 重新注释行 A 并取消注释行 B,您将获得相同的结果。
  3. 重新注释行 B 并取消注释行 C,文档编译成功。
  4. 重新注释行 C 和 ABC 并取消注释行 D,文档编译成功。
  5. 重新注释行 D 并取消注释行 E,文档编译成功。

似乎如果节点的形状为坐标,则可以为其指定别名,但不能使用后期选项机制。如果您尝试使用后期选项执行此操作,TikZ 不会报告错误,但不会执行任何操作。

我正在使用 PGF/TikZ 版本 2.10。

答案1

确保 TikZ 正确识别要应用“后期选项”的节点的最万无一失的方法是在“后期选项”选项列表中提供“名称”属性(使用节点的现有名称):

\documentclass{standalone}

\usepackage{tikz}

\begin{document}

\begin{tikzpicture}
    \coordinate (A) at (0, 0);
    \path [late options = {name=A,alias=AA}];
    \coordinate (B) at (1, 0);
    \draw (AA) -- (B);
\end{tikzpicture}

\end{document}

正如问题中的示例所示,TikZ 隐式识别节点的能力(正如 2.10 手册所建议的那样)有点容易出错。版本 3.00 手册(可以通过从下载 TikZ/PGF 版本 3.00 获得)项目的 Sourceforge 页面) 修改(第 251 页)2.10 手册第 201 页的内容,建议“name”属性是仅有的正确的方式来指示要应用“后期选项”的节点;TikZ 将自动从上下文中识别正确节点的建议已被消除。

感谢 Andrew Swann 和 percusse。

相关内容