Unidad de medida ilegal (pt insertado) al dibujar bordes en tikz

Unidad de medida ilegal (pt insertado) al dibujar bordes en tikz

Estoy intentando dibujar flechas en puntos particulares de la cuadrícula para la secuencia de diagramas usando tikx, pero aparece "Unidades de medida ilegales (pt insertados)" cuando intento usar el siguiente comando:

\newcommand*{\drawhigharrow}[2]{
    \ifdim #1 < #2 {
        \draw (#1*\gridsize+0.5*\gridsize, 5*\gridsize) edge[thick,out=90,in=180] (#2*\gridsize, 6*\gridsize);
        \draw (#2*\gridsize, 6*\gridsize) edge[thick, out=0,in=90,->] (#2*\gridsize+0.5*\gridsize, 5*\gridsize+0.1);
    } \else {
        \draw (#1*\gridsize+0.5*\gridsize, 5*\gridsize) edge[thick, out=90,in=0] (#1*\gridsize, 6*\gridsize);
        \draw (#1*\gridsize, 6*\gridsize) edge[thick, out=180,in=90,->]
              (#2*\gridsize+0.5*\gridsize, 5*\gridsize+0.1);        
    }
    \fi
}

Perdón por preguntar, pero no puedo entender qué puede estar saliendo mal: todos los cálculos parecen ser muy estándar (solo multiplicación y suma). ¿Alguien puede ayudarme a detectar mi error?

Saludos, Tomás

Respuesta1

\ifdimes para comparar dimensiones/longitudes. Presumiblemente usas el comando como \drawhigharrow{1}{2}, es decir, solo con números. Si agrega ptdespués #1y #2en la \ifdimdeclaración, parece funcionar.

Alternativamente, puedes usar \ifnum #1 < #2, en cuyo caso la comparación es para números.

ingrese la descripción de la imagen aquí

\documentclass[border=5mm]{standalone}
\usepackage{tikz}
\newcommand\gridsize{1cm}
\newcommand*{\drawhigharrow}[2]{
    \ifdim #1pt < #2pt { % note the addition of pt
        \draw (#1*\gridsize+0.5*\gridsize, 5*\gridsize) edge[thick,out=90,in=180] (#2*\gridsize, 6*\gridsize);
        \draw (#2*\gridsize, 6*\gridsize) edge[thick, out=0,in=90,->] (#2*\gridsize+0.5*\gridsize, 5*\gridsize+0.1);
    } \else {
        \draw (#1*\gridsize+0.5*\gridsize, 5*\gridsize) edge[thick, out=90,in=0] (#1*\gridsize, 6*\gridsize);
        \draw (#1*\gridsize, 6*\gridsize) edge[thick, out=180,in=90,->]
              (#2*\gridsize+0.5*\gridsize, 5*\gridsize+0.1);        
    }
    \fi
}
\begin{document}
\begin{tikzpicture}
\drawhigharrow{1}{2}
\end{tikzpicture}
\end{document}

información relacionada