Tikz 错误:缺少数字,视为零

Tikz 错误:缺少数字,视为零

我在使用 Tikz 时遇到了问题。代码如下:

\begin{tikzpicture}[scale=0.6]

% Variables
\def\mu{0.1}
\def\R{10}

%Celestial bodies
\draw [thick, fill=yellow] (0,0) circle (1);
\draw [thick, fill=cyan] (\R,0) circle (0.25);

% Lagrangian points
\node at (\R*{1-{\mu/3}^{1/3}},0) {\color{orange}{\huge$\bullet$}}; %L1
\node at (\R*{1+{\mu/3}^{1/3}},0) {\color{orange}{\huge$\bullet$}}; %L2
\node at (-\R*{1+5/12*\mu},0) {\color{orange}{\huge$\bullet$}}; %L3
\node at (\R*{1/2*{1-2*\mu}},\R*sqrt(3)/2) {\color{orange}{\huge$\bullet$}}; %L4
\node at (\R*{1/2*{1-2*\mu}},-\R*sqrt(3)/2) {\color{orange}{\huge$\bullet$}}; %L5


\end{tikzpicture}

这是我收到的错误:

! Missing number, treated as zero.
<to be read again>
{
l.87 \node at (\R*{1-{\mu/3}^{1/3}},0)
{\color{orange}{\huge$\bullet$}}; %L1
A number should have been here; I inserted `0'.

我发现这是 Tikz 的一个常见错误,但我不明白为什么它不起作用。这可能是一个愚蠢的错误,有人能告诉我哪里出了问题吗?

答案1

存在三个问题:

  1. 如果您在坐标系中进行计算,则必须用括号将其括起来({\R*sqrt(3)},0)

  2. 在操作内部,使用圆括号而不是大括号进行分组。

固定代码:

\documentclass{article}

\usepackage{tikz}

\begin{document}
\begin{tikzpicture}[scale=0.6]

% Variables
\newcommand{\muu}{0.1}
\newcommand{\R}{10}

%Celestial bodies
\draw [thick, fill=yellow] (0,0) circle (1);
\draw [thick, fill=cyan] (\R,0) circle (0.25);

\node at ({\R*(1-(\muu/3)^(1/3))},0) {\color{orange}{\huge$\bullet$}}; %L1
\node at ({\R*(1+(\muu/3)^(1/3))},0) {\color{orange}{\huge$\bullet$}}; %L2
\node at ({-\R*(1+5/12*\muu)},0) {\color{orange}{\huge$\bullet$}}; %L3
\node at ({\R*(1/2*(1-2*\muu))},{\R*sqrt(3)/2}) {\color{orange}{\huge$\bullet$}}; %L4
\node at ({\R*(1/2*(1-2*\muu))},{-\R*sqrt(3)/2}) {\color{orange}{\huge$\bullet$}}; %L5

\end{tikzpicture}
\end{document}

第三个问题:

正如 Jasper 所说,\def除非你对自己所做的事情非常确定,否则请避免使用。\mu你定义的已经存在(希腊字母 μ)。

如果您使用\newcommand,LaTeX 会告诉您正在重新定义现有的宏。


1这还不是全部。当 TiZ 发现一个(它知道它正在读取一个坐标。它还期望下一个)将结束该坐标。

因此当 TiZ 发现(\R*sqrt(3),0),它将其理解\R*sqrt(3为坐标,这很糟糕,而且它仍然得到了一个,0)after,这更糟糕。但是当你将表达式分组在括号内时, 内的所有内容{...}将被视为单个标记,它将被传递给数学解释器来执行其工作。

所以每当你有表情带括号,你必须把它们藏在里面{...}。虽然不用括号括起表达式也没什么坏处。

感谢@hpekristiansen 指出这一点!

相关内容