使用 \pgfmathprintnumber 打印两条线之间的角度时仅获取两位小数的问题

使用 \pgfmathprintnumber 打印两条线之间的角度时仅获取两位小数的问题

我想打印两条线之间的角度值(以度为单位)。打印时一切正常整体线与线之间的角度:

\documentclass{standalone}
\usepackage{tikz} \usetikzlibrary{angles,quotes}

\begin{document}

\begin{tikzpicture}
\coordinate (A) at (0,0);
\coordinate (B) at (2,5);
\coordinate (C) at (4,-1);
\filldraw[fill=yellow]
(A)--(B)--(C)--cycle
pic[draw,
        "\pgfmathanglebetweenlines{\pgfpoint{2}{-1}}{\pgfpoint{0}{0}}
                                  {\pgfpoint{0}{0}}{\pgfpoint{2}{5}}
        $\pgfmathresult$",
        angle eccentricity=2]
        {angle = C--A--B};
\end{tikzpicture}
\end{document}

我得到了这个:

轻松取样

这很好。

我想打印角度只有两位小数,因此我包含了该功能\pgfmathprintnumber,但收到了一条错误消息。

错误信息

我不知道如何修复它,主要是因为我不完全理解我在做什么。我给你看代码:

\documentclass{standalone}
\usepackage{tikz} \usetikzlibrary{angles,quotes}

\begin{document}

\begin{tikzpicture}
\coordinate (A) at (0,0);
\coordinate (B) at (2,5);
\coordinate (C) at (4,-1);
\filldraw[fill=yellow]
(A)--(B)--(C)--cycle
pic[draw,
        "\pgfmathanglebetweenlines{\pgfpoint{2}{-1}}{\pgfpoint{0}{0}}
                                  {\pgfpoint{0}{0}}{\pgfpoint{2}{5}}
        $\pgfmathprintnumber[fixed,precision=2]{\pgfmathresult}$",
        angle eccentricity=2]
        {angle = C--A--B};
\end{tikzpicture}
\end{document}

顺便说一句,如果有一些事情可以做得更好,比如不使用\pgfpoint以便获得点的坐标或更容易获得角度,请不要犹豫地纠正。

答案1

一旦从解析器中隐藏方括号,问题就会消失。

\documentclass{standalone}
\usepackage{tikz} \usetikzlibrary{angles,quotes}

\begin{document}

\begin{tikzpicture}
\coordinate (A) at (0,0);
\coordinate (B) at (2,5);
\coordinate (C) at (4,-1);
\filldraw[fill=yellow]
(A)--(B)--(C)--cycle
pic[draw,
        "{\pgfmathanglebetweenlines{\pgfpoint{2}{-1}}{\pgfpoint{0}{0}}
                                  {\pgfpoint{0}{0}}{\pgfpoint{2}{5}}
        $\pgfmathprintnumber[fixed,precision=2]{\pgfmathresult}$}",
        angle eccentricity=2]
        {angle = C--A--B};
\end{tikzpicture}
\end{document}

在此处输入图片描述

但是,读取角度的标准方法是使用calc。这样您就不必重复坐标。除此之外,计算结果在路径构建期间已经可用,并且可以在那里使用,这在本例中不起作用,但总的来说非常有用。

\documentclass{standalone}
\usepackage{tikz} 
\usetikzlibrary{angles,quotes,calc}

\begin{document}

\begin{tikzpicture}
\coordinate (A) at (0,0);
\coordinate (B) at (2,5);
\coordinate (C) at (4,-1);
\filldraw[fill=yellow] let \p1=($(B)-(A)$),\p2=($(C)-(A)$),
\n1={atan2(\y1,\x1)-atan2(\y2,\x2)} in 
(A)--(B)--(C)--cycle
pic[draw,
        "{$\pgfmathparse{\n1}%
        \pgfmathprintnumber[fixed,precision=2]{\pgfmathresult}$}",
        angle eccentricity=2]
        {angle = C--A--B};
\end{tikzpicture}
\end{document}

在此处输入图片描述

如你所见,这个角度也“更加现实”。

相关内容