迭代两个不同长度的列表

迭代两个不同长度的列表

我正在尝试在 TikZ 中绘制日历类型的东西,需要将一周中的各天放在一个圆圈周围。我不知道如何在 365 个位置范围内重复 7 天的模式。

这有效:

\foreach \i/\j in {1/Sat,2/Sun,3/Mon,4/Tue}{
    \node at (0,\i) {\j};
}

但我正在寻找类似的东西{1/Sat,2/Sun,3/Mon,...,365/Sat}- 我肯定不必手动写出 365 对?

所以基本上我希望同时迭代两个列表,但一个比另一个短,并且我希望短列表重复直到长列表的结尾。

答案1

\documentclass[border=2mm,tikz]{standalone}

\newcommand\week{{"Mon","Tue","Wed","Thu","Fri","Sat","Sun"}}

\begin{document}
\begin{tikzpicture}
\foreach \i [evaluate=\i as \row using {div(\i-1,7)}, 
                evaluate=\i as \col using {mod(\i-1,7)}] in {1,...,365}
    \node[draw, circle, inner sep=1pt, minimum size=9mm] at (\col,-\row) {\pgfmathparse{\week[\col]}\pgfmathresult};
\end{tikzpicture}
\end{document}

在此处输入图片描述

相关内容