Почему я не могу сравнить угол, найденный с помощью \tkzFindAngle, с 180?

Почему я не могу сравнить угол, найденный с помощью \tkzFindAngle, с 180?

Я практикуюсь с tkz-euclideпакетом. Я пробую запустить это:

    \documentclass{article} 
    \usepackage{tkz-euclide,ifthen}

    \usetkzobj{all}
    \begin{document} 
    \begin{tikzpicture}[scale=4]
    \tkzInit[xmin=-1,xmax=1, ymin=-1,ymax=1]
    \draw (0,0) circle [radius=1];
    \tkzDefPoint(.3,.5){A}\tkzDefPoint(.5,.2){B}\tkzDefPoint(0,0){O}
    \tkzDrawPoints(A,B)
    \tkzFindAngle(A,O,B)\tkzGetAngle{hoek}
    \ifthenelse{\hoek<180}{\tkzDrawArc(O,A)(B);}{\tkzDrawArc(O,B)(A);};
    \end{tikzpicture}

    \end{document}

Я получаю следующее сообщение об ошибке:

! Missing = inserted for \ifnum.
<to be read again> 
               .
l.12 \ifthenelse{\hoek<180}
                                 {\tkzDrawArc(O,A)(B);}{\tkzDrawArc(O,B)...

? H
I was expecting to see `<', `=', or `>'. Didn't.

Мне нужен код, который всегда рисует одну и ту же дугу между A и B, т. е. либо короткую, либо длинную. Почему это не работает?

решение1

Если вы добавите \show\hoekпрямо перед тестом, текст остановится и покажет вам

> \hoek=macro:
->-37.234850000000000000.

\ifnum(который используется \ifthenelseдля числовых тестов) предназначен для чисел tex, которые являются целыми числами.

Так вот он жалуется на.

Обычный трюк TeX — использовать измерения для хранения нецелочисленных значений.

    \ifthenelse{\lengthtest{\hoek pt<180pt}}{\tkzDrawArc(O,A)(B);}{\tkzDrawArc(O,B)(A);};

решение2

Это работает:

\documentclass{article} 
    \usepackage{tkz-euclide,ifthen}

    \usetkzobj{all}
    \begin{document} 
    \begin{tikzpicture}[scale=4]
    \tkzInit[xmin=-1,xmax=1, ymin=-1,ymax=1]
    \draw (0,0) circle [radius=1];
    \tkzDefPoint(.3,.5){A}\tkzDefPoint(.5,.2){B}\tkzDefPoint(0,0){O}
    \tkzDrawPoints(A,B)
    \tkzFindAngle(A,O,B)\tkzGetAngle{hoek}
    \draw(0,0) node{\hoek};
    \pgfmathparse{(\hoek<180) ? 1 : 0 }
    \ifthenelse{\equal{\pgfmathresult}{1}}{\tkzDrawArc(O,A)(B);}{\tkzDrawArc(O,B)(A);}; 
    \end{tikzpicture}

    \end{document}

Связанный контент