
Я столкнулся с этой проблемой при использовании draw
предопределенной команды. Есть идеи, как исправить? Вот минимальный (не)рабочий пример:
\documentclass{article}
\usepackage{tikz}
\newcommand{\Ve}{(1,1)}
\begin{document}
\begin{tikzpicture}
\draw (1,0) to[bend right] (1,1) ; %works
\draw \Ve to[bend right] (1,0) ; %works
\draw (1,0) to[bend right] \Ve ; %doesn't work
\end{tikzpicture}
\end{document}
Произошла ошибка:
Latex Error: ./untitled.tex:9 Package tikz Error: (, +, coordinate, pic, or node expected. Latex Error: ./untitled.tex:9 Package pgf Error: No shape named is known.
решение1
Вам нужны скобки. С \draw
путем, который указан, например, с двумя точками, следует нарисовать. Координаты начальной и конечной позиций указаны как точки вкруглые скобки.[Видеть:2.3 Строительство прямого пути,стр.31]
Определение:положение точки
- в см:
(1,0)
и(1,1)
Позиции указываются в специальной системе координат, в которой изначально одна единица равна
1cm
. [См.2.2.1 Настройка среды в LATEXстр.29-30] - в pt:
(1pt,0pt)
и(1pt,1pt)
-> Позиции указываются в специальной системе координат с единицей измеренияpt
. - в полярных координатах:
(0:1)
и(45:{sqrt(2)})
-> полярные координаты:1
соответственноsqrt(2)
(как радиус) в направлении0
соответственно45
градус (угол). Для расчета{sqrt(2)}
(чтобы получить правильный радиус) вам нужно\usetikzlibrary{calc}
.См.2.15 Указание координат,стр.37 и далее. - с макросом:
(\Va)
и(\Ve)
-> парсер TikZ понимает координаты и узлы (и их имена), явно ища(
символ во входном потоке. Следовательно, если скобки скрыты внутри макроса, парсер сначала не сможет найти скобки, а затем расширит макрос, что будет слишком поздно. Вместо этого определите свои собственные команды с помощью\newcommand{\Va}{1,0}
и\newcommand{\Ve}{1,1}
(подсказка из комментария @JLDiaz)
Но я предпочитаю и рекомендую:
- с координатами:
(A)
и(B)
-> Определение двух координат (имя:А,Б) с помощью\coordinate
команды. Например\coordinate (A) at (1,0);
и\coordinate (B) at (1,1);
Решение:
МВЭ:
\documentclass{article}
\usepackage{tikz}
%\usetikzlibrary{calc}
%\newcommand{\Ve}{1,1}
\begin{document}
\begin{tikzpicture}
\coordinate (VE) at (1,1);
%\coordinate (VE) at (45:{sqrt(2)});
\draw (1,0) to[bend right] (1,1);
\draw (VE) to[bend right] (1,0);
\draw (1,0) to[bend right] (VE) ;
\end{tikzpicture}
% \begin{tikzpicture}
% \draw (1,0) to[bend right] (1,1);
% \draw (\Ve) to[bend right] (1,0);
% \draw (1,0) to[bend right] (\Ve) ;
% \end{tikzpicture}
\end{document}