Marc van Dongen 声称在节点中使用 TikZ foreach 变量那\x
是一个“TiKZ 原语”。TikZ 有原语吗?我不明白为什么任何包都会生成\x
原语,并且我假设在 TeX 引擎/平台之外,只有 LuaTeX 才能使包/用户命令等同于原语。请问有人能告诉我原语的含义吗\x
?我看不到它在外部或内部定义tikzpicture
!
编辑
现在我明白了发生了什么。尽管 TikZ 没有原语,但 Marc van Dongen 的观点是有道理的。从 cjorssen 的例子来看,
\draw plot[samples=10,domain=-5:5] (\y,{(\y)^2})
失败,而
\draw plot[variable=\y,samples=10,domain=-5:5] (\y,{(\y)^2})
有效。在我看来,PGF 不应该使用通用宏\x
作为默认暂存宏,即使在本地组或恢复堆栈中也是如此。它可能对用户来说很方便,但正如我们所见,它并不是暂存变量的最佳选择。
答案1
\x
据我所知,这不是 tikz“原语”。它可以在操作中使用,plot
但它在后台使用\foreach
。请参见以下示例:这两个\draw
命令或多或少执行相同的操作(参见 中的第 388 行pgfmoduleplot.code.tex
和 中的第 2899 行tikz.code.tex
)。
\documentclass{standalone}
\usepackage{tikz}
\begin{document}
\begin{tikzpicture}
\draw plot[samples=10,domain=-5:5] (\x,{(\x)^2});
\draw[red] (-5,{(-5)^2}) \foreach \x in {-4,...,5} {-- (\x,{(\x)^2})};
\end{tikzpicture}
\end{document}
该\foreach
变量(此处\x
)是受组保护的,因此\x
在其他地方定义它在这里不是问题。
我想说的是,即使plot
将来操作的实现发生变化, tikz/pgf 开发人员也会注意保护 的定义\x
。