为了简单起见,我想画出逐渐消失的同心圆,比如
\foreach \x in {1,1.5,...,4}
\draw[color=black!{100-10*\x}!white] (0,0) circle (\x);
问题是我不知道是否有办法对 \draw 函数的参数进行一些数学运算。有办法吗?
(我可以通过以下方式解决问题
\foreach \x in {10,15,...,40}
\draw[color=white!\x!black] (5,0) circle ({0.1*\x});
但我真的想知道是否有可能用其他方法来实现)
另外,为什么
\foreach \x in {10,15,...,40}
\draw[color=white!\x!black] (5,0) circle ({0.1*\x} cm); %note the cm
不起作用?
答案1
你可以做这样的事:
\documentclass{article}
\usepackage{tikz}
\begin{document}
\begin{tikzpicture}
\foreach \x in {1,1.5,...,4}
\pgfmathtruncatemacro{\tmp}{100-\x*20}
\draw[color=blue!\tmp!green] (0,0) circle (\x);
\end{tikzpicture}
\end{document}
计算外部的值,将其存储在宏中(如果您愿意,可以像我一样截断)然后使用该宏。
将相同的策略应用到您的上一个查询:
\documentclass{article}
\usepackage{tikz}
\begin{document}
\begin{tikzpicture}
\foreach \x in {10,15,...,40}
\pgfmathsetmacro{\tmp}{0.1*\x}
\draw[color=white!\x!black] (5,0) circle (\tmp cm);
\end{tikzpicture}
\end{document}
另一个选择是Torbjørn T.方法是evaluate
:
\documentclass[border=5mm]{standalone}
\usepackage{tikz}
\begin{document}
\begin{tikzpicture}
\foreach [evaluate=\x as \y using 100-20*\x] \x in {1,1.5,...,4}
\draw[color=blue!\y!green] (0,0) circle (\x);
\end{tikzpicture}
\end{document}
答案2
您\multido
可以定义多个变量:
\documentclass{article}
\usepackage{tikz,multido}
\begin{document}
\begin{tikzpicture}
\multido{\r=1+0.5,\i=80+-5}{8}{%
\draw[color=blue!\i!green] (0,0) circle (\r);}
\end{tikzpicture}
\end{document}