随机极坐标有一个我要遵循的一般语法示例。由于某种原因,结果没有按预期工作。
在 MWE 中,我注释掉了要使用 的行\MathPunctTwo
,否则会出现错误。 \MathPunctOne
说明了我感兴趣的输出类型(如下图所示)。 \MathPunctTwo
应该计算另一个点的半径,该点将出现在与标记为 3309 的点相同的环上。但是,如果我取消注释 的使用\MathPunctTwo
,pdflatex 会抱怨
“!缺失数字,视为零。”
我不熟悉 TikZcalc
库,所以也许我只是使用错了。
\documentclass[10pt]{article}
\usepackage{tikz}
\usetikzlibrary{backgrounds,shapes,arrows,positioning,calc,snakes,fit}
\usepgflibrary{decorations.markings}
\newcommand{\MathPunctOne}[5]{%
\node[dot,label={[label distance=-.1cm]-#5:{\tiny #2}}] (#2) at (-#5:#4cm) {};
}
\newcommand{\MathPunctTwo}[5]{%
\pgfmathsetmacro\radius{{#4 / 7}*5.6}%
\node[dot,label={[label distance=-.1cm]-#5:{\tiny #2}}] (#2) at (-#5:\radius cm) {};
}
\begin{document}
\begin{figure}[htpb]
\centering
\begin{tikzpicture}[>=stealth',join=bevel,font=\sffamily,auto,on grid, decoration={markings, mark=at position .5 with \arrow{>}},dot/.style={circle,inner sep=1pt,fill}]
\MathPunctOne{3305}{3323}{2}{1.6}{72.6605504587156}
\MathPunctOne{3306}{3309}{3}{3.2}{26.422018348623855}
% \MathPunctTwo{3315}{3307}{3}{4}{35}
\draw[black!50] (0,0) circle (5.6cm); % 1
\draw[black!50] (0,0) circle (4.8cm); % 2
\draw[black!50] (0,0) circle (4.0cm); % 3
\draw[black!50] (0,0) circle (3.2cm); % 4
\draw[black!50] (0,0) circle (2.4cm); % 5
\draw[black!50] (0,0) circle (1.6cm); % 6
\draw[black!50] (0,0) circle (0.8cm); % 7
\end{tikzpicture}
\caption{Layer structure}\label{figure:layer structure}
\end{figure}
\end{document}
答案1
如何用 tikz calc 进行除法(找到质心)似乎表明无法使用 TikZ calc 进行除法。事实上,切换到乘法确实有效。
\newcommand{\MathPunctTwo}[5]{%
\pgfmathsetmacro\radius{#4 * 0.8}%
\node[dot,label={[label distance=-.1cm]-#5:{\tiny #2}}] (#2) at (-#5:\radius cm) {};
}
...但下面@percusse 的评论表明这种分歧是可能,需要添加括号(而不是像我原来的 MWE 那样使用大括号)。事实上,其他例子,比如这个向日葵图案说明如何使用括号来控制运算符优先级(和特征除法)。