Tikz、foreach、evaluate 和 \ifodd 组合产生“\@next 的使用与其定义不匹配”

Tikz、foreach、evaluate 和 \ifodd 组合产生“\@next 的使用与其定义不匹配”

我正在尝试运行它。

\documentclass[tikz,border=5mm]{standalone}
\begin{document}
\begin{tikzpicture}
        \draw\foreach \s [evaluate=\s as \lowhigh using \s+1] in {1,...,4}{
            \ifodd\lowhigh node (\s) {\s} \fi
        };
\end{tikzpicture}
\end{document}

并得到

@next 的使用与其定义不符

我假设这是因为\lowhigh不再是整数,因为不管怎样evaluate。有没有简单的方法可以解决这个问题?(我的实际代码当然更复杂,所以我需要一些东西来解决问题,而不需要用evaluate其他东西替换。

答案1

像这样 ?

\documentclass[tikz,border=5mm]{standalone}
\begin{document}
\begin{tikzpicture}
        \foreach \s [evaluate=\s as \lowhigh using int(\s+1)] in {1,...,4}{
            \ifodd\lowhigh \node at (\s,0) (\s) {\s}; \fi
        };
\end{tikzpicture}
\end{document}

或者像这样?

\documentclass[tikz,border=5mm]{standalone}
\begin{document}
\begin{tikzpicture}
        \draw foreach \s [evaluate=\s as \lowhigh using int(\s+1)] in {1,...,4}{
            \ifodd\lowhigh node at (\s,0) (\s) {\s} \fi
        };
\end{tikzpicture}
\end{document}

同款截图:

截屏

相关内容