这是一个小文件:
\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}
- 取消注释行 A 和 ABC,您会得到“包 pgf 错误:没有已知名为 AA 的形状。”
- 重新注释行 A 并取消注释行 B,您将获得相同的结果。
- 重新注释行 B 并取消注释行 C,文档编译成功。
- 重新注释行 C 和 ABC 并取消注释行 D,文档编译成功。
- 重新注释行 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。