%20%D0%BF%D1%80%D0%B8%20%D1%80%D0%B8%D1%81%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B8%20%D0%BA%D1%80%D0%B0%D0%B5%D0%B2%20%D0%B2%20tikz.png)
Я пытаюсь нарисовать стрелки в определенных точках сетки для последовательности диаграмм с помощью tikx, но получаю сообщение «Недопустимые единицы измерения (вставлена точка)» при попытке использовать следующую команду:
\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}