\xa 在任何地方都是原始的吗?

\xa 在任何地方都是原始的吗?

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

相关内容