当我尝试使用类似
\node[node contents={Test}] at (0,0){};
抛出一个错误:Use of \@next doesn't match its definition.
为了使其发挥作用,我可以将语法更改为\path ... node
,或使用at
键,或使用font=
hack。
\documentclass{standalone}
\usepackage{tikz}
\begin{document}
\begin{tikzpicture}
% \node[node contents={Test}] at (0,0){}; % <- not working
% \node[node contents={Test}] at (1,0); % <- not working
\path (0,0) node[node contents={Test}];
\path (1,0) node[node contents={Test}]{};
\node[node contents={Test}, at={(2,0)}];
\node[node contents={Test}, at={(3,0)}]{};
\node[font={Test}] at (4,0){};
\end{tikzpicture}
\end{document}
我的问题是:这是正常行为,还是一个错误?
答案1
这是预期的行为,并记录在手册的第 215 页(斜体是我的强调):
/tikz/node contents=<node contents>
当选项在节点的选项内使用时,节点的解析将在选项块结束后立即停止。特别是,选项块后面不能跟有其他选项块或花括号(或者,这些不算作节点规范的一部分)。还请注意,节点内容可能不包含易碎内容,因为 catcodes 在读取选项时会得到修复。