tikz foreach floor 函数

tikz foreach floor 函数

似乎在 tikz-foreach-loop 中数学表达式没有被正确评估:

\documentclass{minimal}
\usepackage{tikz}

\begin{document}

\begin{tikzpicture}
\foreach \c [count=\i] in {0,1,...,{floor(9/4)}}
\node at (\i,0) {\c};
\end{tikzpicture}

\end{document}

这会产生奇怪的输出:

0 1 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?

任何想法如何解决这一问题?

答案1

改编

  • 用于\pgfmathsetmacro{\n}{floor(9/4)}将结果保存为\n
  • \n可以用作 for 循环的上限

代码

\documentclass{minimal}
\usepackage{tikz}

\begin{document}

\begin{tikzpicture}
    \pgfmathsetmacro{\n}{floor(9/4)}
    \foreach \c [count=\i] in {0,1,...,\n}
    \node at (\i,0) {\c};
\end{tikzpicture}

\end{document}

结果

在此处输入图片描述

答案2

解析器发现 以floor字母开头,因此认为 不是floor(9/4)数字。

如果您添加parse=true\foreach的选项列表中,并在floor表达式前面加上一个数字,使得\foreach实际上认为这是一个数字,那么您就会得到您想要的结果(无需用户面临临时分配):

\documentclass[border=3.14,tikz]{standalone}

\begin{document}

\begin{tikzpicture}
\foreach \c [count=\i,parse=true] in {0,1,...,1*floor(9/4)}
  \node at (\i,0) {\c};
\end{tikzpicture}

\end{document}

在此处输入图片描述

相关内容