Dividindo por somas em coordenadas TikZ

Dividindo por somas em coordenadas TikZ

Quero inserir coordenadas calculadas matematicamente, contendo termos divididos por somas, em TikZ.

Por exemplo, eu gostaria de usar algo com uma sintaxe semelhante a esta:\def \cmd {1/(1+1)}

e então insira seu resultado em TikZ usando sintaxe semelhante a esta:\coordinate (P) at (0,\cmd);

A razão da minha pergunta é porque estou usando o \defcomando dentro de um \foreachloop, onde o valor do comando definido muda para cada valor do \foreachloop.

Aqui está um 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}

É importante que a estrutura “2+1” da fração seja mantida.

Responder1

Use colchetes ao redor \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}

insira a descrição da imagem aqui

Como alternativa, você pode definir \myFractioncom colchetes adicionais

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

e depois use \myFraction(sem aparelho)

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

Responder2

Eu usaria declare functionpara definir constante(s) e calcular variável(es). Uma visão moderna considera todas as constantes, parâmetros, variáveis, funções como apenasvariáveis. O código é um pouco mais limpo.

insira a descrição da imagem aqui

\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: Gosto circle(2)mais da sintaxe antiga do que da nova sintaxe circle[rađius=2cm].

informação relacionada