Unidade de medida ilegal (pt inserido) ao desenhar bordas no tikz

Unidade de medida ilegal (pt inserido) ao desenhar bordas no tikz

Estou tentando desenhar setas em pontos específicos da grade para sequência de diagramas usando tikx, mas recebo "Unidades de medida ilegais (pt inserido)" ao tentar usar o seguinte 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
}

Desculpe por perguntar, mas não consigo descobrir o que pode estar errado - os cálculos parecem ser todos muito padronizados (apenas multiplicação e adição). Alguém pode me ajudar a identificar meu erro?

Felicidades, Tomás

Responder1

\ifdimserve para comparar dimensões/comprimentos. Presumivelmente você usa o comando like \drawhigharrow{1}{2}, ou seja, apenas com números. Se você adicionar ptdepois #1e #2na \ifdiminstrução, parece funcionar.

Alternativamente, você poderia usar \ifnum #1 < #2, caso em que a comparação é para números.

insira a descrição da imagem aqui

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

informação relacionada