¿Por qué no puedo comparar el ángulo que encontré usando \tkzFindAngle con 180?

¿Por qué no puedo comparar el ángulo que encontré usando \tkzFindAngle con 180?

Estoy practicando con el tkz-euclidepaquete. Intento ejecutar esto:

    \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}

Recibo el siguiente mensaje de error:

! 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.

Lo que quiero es un código que dibuje siempre el mismo arco entre A y B, es decir, el corto o el largo. ¿Por qué esto no funciona?

Respuesta1

Si agrega \show\hoekjusto antes, el texto de prueba se detendrá y le mostrará

> \hoek=macro:
->-37.234850000000000000.

\ifnum(que es lo que \ifthenelsese usa para las pruebas numéricas) está diseñado para números tex, que son números enteros.

Entonces aquí se queja en el.

El truco habitual de TeX es utilizar dimensiones para contener valores no enteros.

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

Respuesta2

Esto funciona:

\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}

información relacionada