tikx를 사용하여 다이어그램 시퀀스의 특정 그리드 지점에 화살표를 그리려고 하는데 다음 명령을 사용하려고 하면 "잘못된 측정 단위(pt 삽입)" 메시지가 나타납니다.
\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
}
물어봐서 죄송합니다. 무엇이 잘못되었는지 알 수 없습니다. 계산은 모두 매우 표준적인 것 같습니다(곱셈과 덧셈만 가능). 누군가 내 실수를 발견하도록 도와줄 수 있나요?
건배, 토마스
답변1
\ifdim
치수/길이를 비교하기 위한 것입니다. 아마도 당신은 \drawhigharrow{1}{2}
숫자만 사용하여 와 같은 명령을 사용할 것입니다 . 문 pt
뒤에 #1
추가 하면 작동하는 것 같습니다.#2
\ifdim
또는 을 사용할 수도 있습니다 \ifnum #1 < #2
. 이 경우 비교는 숫자에 대한 것입니다.
\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}