TikZ \foreach 循环使用 pgfmath 函数评估变量

TikZ \foreach 循环使用 pgfmath 函数评估变量

我在使用 pgfmath 函数选项在\foreach循环内定义新变量时遇到问题:evaluate

\documentclass{article}
\usepackage{tikz}
\begin{document}
  \begin{tikzpicture} 
    \foreach \j [evaluate=\j as \jn using mod(\j,4)] in {5,6} {
      \node[] at (\j,0) {$\jn$};
    }
  \end{tikzpicture}
\end{document}

这给了我错误:

! Package pgfkeys Error: I do not know the key '/pgf/foreach/4)'

如果我mod用例如intexp(仅接受一个参数)替换,它可以正常工作..例如可以exp(\j)正常工作..

答案1

我认为您需要做的就是{}在表达式周围添加一个额外的内容,因为逗号可能会使解析器感到困惑。

\foreach  \j [evaluate=\j as \jn using {mod(\j,4)}]  in {5,6}

不过,我建议采用略有不同的方法,即使用pagemathtruncatemacro(或者\pgfmathsetmacro如果您需要实数值):

代码:

\documentclass{article}
\usepackage{tikz}
\begin{document}
  \begin{tikzpicture} 
    \foreach  \j  in {5,6} {
       \pgfmathtruncatemacro{\jn}{mod(\j,4)}%
       \node[] at (\j,0) {$\jn$};
    }
  \end{tikzpicture}
\end{document}

相关内容