![tkz-euclide \tkzDefPoint 中的平方根错误](https://linux22.com/image/363669/tkz-euclide%20%5CtkzDefPoint%20%E4%B8%AD%E7%9A%84%E5%B9%B3%E6%96%B9%E6%A0%B9%E9%94%99%E8%AF%AF.png)
我无法sqrt(x)
工作;我在以下代码中\tkzDefPoint
收到错误:! Argument of \XC@definec@lor has an extra }
\documentclass{scrbook}
\usepackage{fontenc}
\usepackage[utf8]{inputenc}
\usepackage{amsmath, amssymb}
\usepackage{tkz-euclide}
\usetkzobj{all}
\usetikzlibrary{patterns, calc}
\begin{document}
\begin{tikzpicture}
\tkzDefPoint(2,0){A}
\tkzDefPoint(1,{-sqrt(3)}){B}
\tkzDefPoint(-0.7,{sqrt(3.51)}){C}
\tkzDefPoint(-0.4,{-sqrt(3.84)}){D}
\tkzDrawSegments(A,B B,C C,D D,A)
\end{tikzpicture}
\end{document}
我发现的是计算包似乎启用了诸如sqrt
和之类的函数sin
,并且通常最好使用括号来覆盖,sqrt(x)
因为结尾的“)”可能会被误解为结束行。但在这种情况下,似乎“{}”造成了问题,我找不到这个简单问题的解决方案……
答案1
pgfmath
定义一个sqrt
可以在坐标中使用的函数,因此对于正常的 TikZ 代码来说,它可以工作。tkz-euclide
但是使用fp
包在 中进行计算\tkzDefPoint
,并且fp
不提供sqrt
。正如 Mike 在评论中提到的那样,它确实提供了更通用的root
,因此您可以使用它root(2,3)
来获得 3 的平方根。
\tkzDefPoint(<x>,<y>){<name>}
或者,您可以使用 TikZ 宏,而不是使用\coordinate (<name>) at (<x>,<y>);
。 (我认为,它们最终等同于同一件事,在通过 评估 x 和 y 分量之后,定义了fp
a 。)\coordinate
\documentclass[border=5mm]{standalone}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage{amsmath, amssymb}
\usepackage{tkz-euclide}
\usetkzobj{all}
\begin{document}
\begin{tikzpicture}
\tkzDefPoint(2,0){A}
\tkzDefPoint(1,{-root(2,2)}){B}
\tkzDefPoint(-0.7,{root(2,3.51)}){C}
\tkzDefPoint(-0.4,{-root(2,3.84)}){D}
\tkzDrawSegments(A,B B,C C,D D,A)
\end{tikzpicture}
\begin{tikzpicture}
\tkzDefPoint(2,0){A}
\coordinate (B) at (1,{-sqrt(3)});
\coordinate (C) at (-0.7,{sqrt(3.51)});
\coordinate (D) at (-0.4,{-sqrt(3.84)});
\tkzDrawSegments(A,B B,C C,D D,A)
\end{tikzpicture}
\end{document}