\let\a=\a 除了 \relax 还能做什么?

\let\a=\a 除了 \relax 还能做什么?

在 TikZ 代码中查看\show(和),我发现(在tikzpictures 内部) 的定义以\loggingall\tikz@command@path\path\let

\let \tikz@signal@path =\tikz@signal@path

这有什么用吗?我看到的唯一可能性是\afterassignment诡计,或者非常不太可能使用\global

\RequirePackage{tikz}
\makeatletter
\show\tikz@command@path

或者,这也是的定义\path

\documentclass{article}
\usepackage{tikz}
\begin{document}
\tikz{\show\path}
\end{document}

答案1

据我所知,这用于判断路径从哪里开始。该字符串\tikz@signal@path再次出现在 的第 41 行tikzlibrarymatrix.code.tex

我对代码的解释(可能是错的!)是,使用以下选项在矩阵中构造一个单元格matrix of nodes

  • 首先,通用矩阵代码开始设置单元。
  • 执行的代码execute at begin cell。具体来说,matrix of nodes就是挂钩到这个机制中。
  • TikZ 尝试智能地为该单元格创建一个节点:
    • 如果单元格内容以 开头,|那么它会创建一个新的\node,其中包含作为选项所划定的内容|(以及之后作为节点内容传递的任何内容);
    • 如果单元格以 TikZ 路径开头,则不会创建任何节点,并且单元格完全由 pgf 代码处理;
    • 否则它只会创建一个包含单元格内容的节点。
  • PGF 继续处理细胞。

这里的问题是如何检查单元格内容是否以 TikZ 路径开头。这是通过检查\let\tikz@signal@path内容开头是否存在来完成的。

因此,回答您的问题,\let \tikz@signal@path =\tikz@signal@path当作为路径的一部分执行时,它不执行任何操作(有用),但可以作为向检查代码的任何东西发出的信号,表明以下代码是路径的一部分。

相关内容