TikZ 中范围环境有哪些缺点?

TikZ 中范围环境有哪些缺点?

Marmot 的回答如何在定义的 TikZ 命令中使用旋转?调用 TikZ 中 scope 的一个用法来快速而肮脏地修复。修复有效。但答案建议避免在 TikZ 命令定义中使用 scope,而改用 newcommand。

对于我这个非专家来说,这种使用范围的方式确实很奇怪。它似乎只是重申了我已经声明过的一个论点,因为 TikZ 忽略了该论点的一些(但不是全部)值,直到我重申它。但这个问题可能根本不是重点。

是否有普遍的理由尝试避免使用 scope 而倾向于使用 newcommand?

答案1

您的问题似乎基于误解,scope并不是\newcommand“竞争对手”,他们的目的完全不同。

土拨鼠在他的回答当他推荐 时\newcommand,使用的是\def\def\newcommand都用于定义新宏,但它们之间存在差异。\newcommand通常推荐使用 ,主要是(我认为)因为它首先检查命令是否存在,而\def会默默覆盖现有命令。 有关差异的更多信息,请参阅\def 和 \newcommand 之间有什么区别?

此外,正如 Andrew 提到的他对你另一个问题的回答,已经存在一个名为的宏\line,事实上,如果你这样做,\newcommand\line{foo}你会收到一条错误消息,说! LaTeX Error: Command \line already defined.当重新定义一个现有的命令时,你需要确保它不会破坏任何东西,所以这样的错误可能表明你应该为你的宏选择一个不同的名字。

scope另一方面,环境仅供在环境内使用,tikzpicture其目的是能够在本地应用 TikZ 设置,例如更改默认颜色、线宽或旋转。

相关内容