Деление на суммы в координатах TikZ

Деление на суммы в координатах TikZ

Я хочу ввести математически вычисленные координаты, содержащие члены, которые делятся на суммы, в 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].

Связанный контент