tkz-euclide \tkzDefPoint 中的平方根错误

tkz-euclide \tkzDefPoint 中的平方根错误

我无法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 分量之后,定义了fpa 。)\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}

代码输出

答案2

您还可以按如下方式迁移到 PSTricks。

\documentclass[pstricks]{standalone}
\usepackage{pst-node}
\begin{document}
\begin{pspicture}(-1,-2)(2,2)
    \pnodes
        (2,0){A}
        (!1 3 sqrt neg){B}
        (!-.7 3.51 sqrt){C}
        (!-.4 3.84 sqrt neg){D}
    \pspolygon[linejoin=2](A)(B)(C)(D)
\end{pspicture}
\end{document}

在此处输入图片描述

相关内容