我正在努力绘制以下坐标:
\begin{tikzpicture}
\coordinate (a1) at (0,(1+{sqrt(\5)})^{2}/2);
\coordinate (a2) at (0,2);
\coordinate (a3) at (0,1);
\coordinate (a4) at (2,1);
\coordinate (a5) at (1,2);
\node[points, anchor=north] at (0,(1+{sqrt(\5)})^{2}/2) {};
\node[points, anchor=north] at (0,2) {};
\node[points, anchor=west] at (0,1) {};
\node[points, anchor=north] at (2,1) {};
\node[points, anchor=east] at (1,2) {};
\draw[black] (a1) -- (a2) {};
\draw[black] (a1) -- (a3) {};
\draw[black] (a1) -- (a4) {};
\draw[black] (a1) -- (a5) {};
\draw[black] (a2) -- (a3) {};
\draw[black] (a2) -- (a4) {};
\draw[black] (a2) -- (a5) {};
\draw[black] (a3) -- (a4) {};
\draw[black] (a3) -- (a5) {};
\draw[black] (a4) -- (a5) {};
\node[dotnode] at (a1) {};
\node[dotnode] at (a2) {};
\node[dotnode] at (a3) {};
\node[dotnode] at (a4) {};
\node[dotnode] at (a5) {};
\end{tikzpicture}
如果我删除点 a1,代码似乎可以正常工作。但是,我希望 a1 的值为 $\frac{(1+\sqrt{5})^{2}}{2}$,并且我尝试了几种不同的表达式来获取此值,包括写入 \5、\sqrt 等,但似乎无法使其正常工作。有没有办法做到这一点而不必写一个近似值?
答案1
- 请参阅第 13.5 章
pgf
手动的。 - 我认为这
sqrt(\5)
行不通,因为\5
这不是有效的命令。 - 此外,您
$
在使用该calc
库时还需要。 - 下次,请提供 MWE:我刚刚被要求写一个最小工作示例(MWE),那是什么?正如你的一篇先前的问题。
\documentclass{article}
\usepackage{tikz}
\usetikzlibrary{calc}
\begin{document}
\begin{tikzpicture}
\node at (0, 0) {node1};
\node at ($({sqrt(1)}, {sqrt(1)})$) {node2}; % Watch out for the right amount of "()".
\node at ($({sqrt(2)}, {sqrt(2)})$) {node3};
\node at ($({sqrt(4)}, {sqrt(4)})$) {node4};
\end{tikzpicture}
\end{document}
答案2
我认为@DrManuel 没有完全回答 OP。
如果你计算一下单身的坐标(此处y
的a1
),您既不需要calc
库也不需要$...$
语法。但是,当表达式包含括号时,必须在 中受到保护{...}
。如果没有这种预防措施,结束)
将被解释为部分的结束(x,y)
。
在这里你混合了 pgfmath计算和标准公式排版(即不需要额外的括号,并sqrt
计算平方根,而\sqrt
在这里是无意义的,并且可能会触发错误)。
因此,你应该写
\coordinate (a1) at (0,{(1+sqrt(5))^2/2});
请注意:
相反
\node
(或node
在路径中),既不是命令\coordinate
也不\draw
期望额外的参数,因此所有的空{}
都是无用的(如果没有错误)。最后,正如@DrManuel 回答中部分建议的那样,您的所有
\node
s 和\coordinate
s 都是高度冗余的。更短更好的编码仅涉及:\node[points, anchor=north] (a1) at (0,{(1+sqrt(5))^2/2}) {};
对于接下来的几点也是同样。
编辑:无论如何,我会使用:
\pgfmathsetmacro\MYCOORDY{(1+sqrt(5))^2/2}
并在节点定义中使用如此定义的宏\MYCOORDY
,或者更好的是:
\pgfmathsetmacro\Golden{(1+sqrt(5))/2}
\node[points, anchor=north] (a1) at (0,1+\Golden) {};