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
\ifdim
serve para comparar dimensões/comprimentos. Presumivelmente você usa o comando like \drawhigharrow{1}{2}
, ou seja, apenas com números. Se você adicionar pt
depois #1
e #2
na \ifdim
instrução, parece funcionar.
Alternativamente, você poderia usar \ifnum #1 < #2
, caso em que a comparação é para números.
\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}