TikZ 的数学中的打印是否没用?

TikZ 的数学中的打印是否没用?

在 TikZ 3.0.0 手册中,有关该math库的部分,我们可以读到(第 635 页):

与 print 关键字不同,括号符号可以在函数中使用,以便 tikz 路径命令可以在 tikzpicture 内安全地执行。

还有这个例子:

\documentclass[tikz,border=7]{standalone}
\usetikzlibrary{math}
\usetikzlibrary{calc}
\begin{document}
  \begin{tikzpicture}
  \draw [help lines] grid (3,2);
  \tikzmath{
    coordinate \c;
    for \x in {0,10,...,360}{
      \c = (1.5cm, 1cm) + (\x:1cm and 0.5cm);
      { \fill (\c) circle [radius=1pt]; };
    };
  }
  \end{tikzpicture}
\end{document}

如果我更换

{ \fill (\c) circle [radius=1pt]; }; 

经过

print { \fill (\c) circle [radius=1pt]; };

我得到了完全相同的结果:

输出1

这可能是因为没有使用函数。如果我们print在 内部的函数中检查tikzpicture,我们可以看到差异。

\documentclass[tikz,border=7]{standalone}
\usetikzlibrary{math}
\begin{document}
  \begin{tikzpicture}
    \draw [help lines] grid (5,2);
    \tikzmath{
      function drawpoint(\s,\t){
        { \fill[red] (\s pt,\t pt) circle [radius=1pt] node[above]{(\s,\t)}; };
        print { \fill[blue] (\s pt,\t pt) circle [radius=1pt] node[below]{(\s,\t)}; };
      };
      coordinate \c; \c = (2cm, 1cm);
      drawpoint(\c);
    }
  \end{tikzpicture}
\end{document}

输出2

我的问题是:我们为什么需要print是否有我们必须放置它的例子?

答案1

print {some code or text};和语法之间的不同之处 {some code or text};在于,print关键字在执行其参数之前不会\nullfont在内部执行tikzpicture(或执行任何检查以查看是否有必要),这使得它稍微快一些。

函数内的代码由数学解析器执行,该解析器会安装常用字体,以便可以计算诸如1ex和之类的长度。因此,除非对空格非常小心,否则不应在函数内使用,因为它们将被打印出来。可以改用替代的 { }; 语法。2emprint

此外,print它还是一种“语法糖”,使代码更具可读性。

相关内容