Dividiendo por sumas en coordenadas TikZ

Dividiendo por sumas en coordenadas TikZ

Quiero ingresar coordenadas calculadas matemáticamente, que contengan términos que se dividen por sumas, en TikZ.

Por ejemplo, me gustaría usar algo con una sintaxis similar a esto:\def \cmd {1/(1+1)}

y luego ingrese su resultado en TikZ usando una sintaxis similar a esta:\coordinate (P) at (0,\cmd);

El motivo de mi pregunta es porque estoy usando el \defcomando dentro de un \foreachbucle, donde el valor del comando definido cambia para cada valor del \foreachbucle.

Aquí hay un 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}

Es importante que se mantenga la estructura "2+1" de la fracción.

Respuesta1

Utilice llaves alrededor de \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}

ingrese la descripción de la imagen aquí

Alternativamente, puede definir \myFractioncon las llaves adicionales

\def \myFraction {{3/(2+1)}}

y luego usar \myFraction(sin frenillos)

\fill[green] (3,\myFraction) circle [radius=1];

Respuesta2

Lo usaría declare functionpara definir constantes y calcular variables. Una visión moderna considera todas las constantes, parámetros, variables y funciones como simplementevariables. El código es un poco más limpio.

ingrese la descripción de la imagen aquí

\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}

PD: Me gusta circle(2)más la sintaxis antigua que la nueva circle[rađius=2cm].

información relacionada