如何在 tikz 中 \draw 参数中的 \foreach 循环中使用 \x

如何在 tikz 中 \draw 参数中的 \foreach 循环中使用 \x

为了简单起见,我想画出逐渐消失的同心圆,比如

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

相关内容