Я хочу ввести математически вычисленные координаты, содержащие члены, которые делятся на суммы, в TiкЗ.
Например, я хотел бы использовать что-то с похожим синтаксисом:\def \cmd {1/(1+1)}
а затем введите результат в TiкZ, используя синтаксис, похожий на этот:\coordinate (P) at (0,\cmd);
Причина, по которой я спрашиваю, заключается в том, что я использую \def
команду в \foreach
цикле, где значение определенной команды изменяется для каждого значения цикла \foreach
.
Вот MWE:
\documentclass{article}
\usepackage{tikz}
\begin{document}
\begin{tikzpicture}
\def \myFraction {3/(2+1)}
\fill[red] (0,0) circle [radius=\myFraction]; % Works!
%\fill[green] (3,\myFraction) circle [radius=1]; % Does not work. :(
\end{tikzpicture}
\end{document}
Важно сохранить структуру дроби «2+1».
решение1
Используйте фигурные скобки вокруг \myFraction
:
\documentclass{article}
\usepackage{tikz}
\begin{document}
\begin{tikzpicture}
\def \myFraction {3/(2+1)}
\fill[red] (0,0) circle [radius=\myFraction]; % Works!
\fill[green] (3,{\myFraction}) circle [radius=1]; % Does not work. :(
\end{tikzpicture}
\end{document}
В качестве альтернативы вы можете определить \myFraction
с помощью дополнительных скобок
\def \myFraction {{3/(2+1)}}
а затем использовать \myFraction
(без скобок)
\fill[green] (3,\myFraction) circle [radius=1];
решение2
Я бы использовал declare function
для определения константы(ок) и вычисления переменной(ок). Современный взгляд рассматривает все константы, параметры, переменные, функции как простопеременные. Код стал немного чище.
\documentclass{article}
\usepackage{tikz}
\begin{document}
\begin{tikzpicture}[declare function={a=-2;b=a+4;}]
\def\myFraction{3/(2+1)}
\fill[red] (0,0) circle(\myFraction);
\fill[green] (3,{\myFraction}) circle(1);
\fill[blue] (3,a) circle(1);
\fill[magenta] (7,a+1) circle(b);
\end{tikzpicture}
\end{document}
PS: Старый синтаксис мне нравится circle(2)
больше, чем новый circle[rađius=2cm]
.