在 foreach 中使用命令参数

在 foreach 中使用命令参数

当我定义一个新命令来绘制轴时,我想使用一个参数来计算刻度数的步长。我试过了,但没有用:

\newcommand{\axistest}[2]{
  \draw[->,color=black] (0,0) -- (#1+0.5,0);
  \foreach \x in {1, ..., #1} {
    \draw[shift={(\x,0)},color=black] (0pt,2pt) -- (0pt,-2pt) node[below] {\footnotesize $#2*\x$};
  }
}

\begin{tikzpicture}
  \axistest{5}{2}
\end{tikzpicture}

我得到以下输出:

乳胶输出

但我希望数字是 2、4、6 等。

当我删除周围的美元符号时,我得到了相同的输出#2*\x

答案1

你问 TiZ 将文本写入节点,它会写入文本。如果要计算要打印到节点中的值,则必须将标签评估到定义中foreach(例如):

\documentclass[tikz,border=3.14mm]{standalone}
% https://tex.stackexchange.com/q/630831/204164

\begin{document}
    \begin{tikzpicture}
        \draw[->,color=black] (0,0) -- (5+0.5,0);
        \foreach \x [evaluate=\x as \l using int(2*\x)] in {1, ..., 5} {
            \draw[shift={(\x,0)},color=black] (0pt,2pt) -- (0pt,-2pt) node[below] {\footnotesize $\l$};
            }
    \end{tikzpicture}
\end{document}

foreach 和计算

由于您没有提供 MWE,所以我没有将命令插入到newcommand,但我相信您可以自己弄清楚。

相关内容