在 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]; };
我得到了完全相同的结果:
这可能是因为没有使用函数。如果我们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}
我的问题是:我们为什么需要print
?是否有我们必须放置它的例子?
答案1
print {some code or text};
和语法之间的不同之处 {some code or text};
在于,print
关键字在执行其参数之前不会\nullfont
在内部执行tikzpicture
(或执行任何检查以查看是否有必要),这使得它稍微快一些。
函数内的代码由数学解析器执行,该解析器会安装常用字体,以便可以计算诸如1ex
和之类的长度。因此,除非对空格非常小心,否则不应在函数内使用,因为它们将被打印出来。可以改用替代的 { }; 语法。2em
print
此外,print
它还是一种“语法糖”,使代码更具可读性。