假設我有兩個巢狀的 foreach 迴圈。
\foreach \i in {0, ..., 3}
{
\foreach[parse=true] \j in {0, ..., {1, 5, 7, 8}[\i]}
{
}
}
這會導致額外的“}”錯誤。我怎樣才能做到這一點?
我的目的是能夠繪製二維圓圈網格。但是,由於每行的長度能夠以預設模式變化,IE 具有清單中指定的值。像這樣的東西。
ooooo
ooo
ooooooo
ooo
答案1
PGFFor 的選項parse
有點挑剔,特別是如果最後一項緊接在...
.它通常有助於0+
在其前面添加(有時就+
足夠了,但在這種情況下不行)。
我添加了另一個雙循環構造,它不使用數組,而是直接使用列表1, 5, 7, 8
作為外部循環的條目。0
透過使用 PGFFor 選項,仍然可以從 開始計數count
。
不要忘記,如果清單儲存在巨集中,您可以直接使用該巨集作為清單:
\newcommand*\myList{1, 5, 7, 8}
\foreach \i in \myList {
…
}
程式碼
\documentclass[varwidth]{standalone}
%\documentclass{article}
\usepackage{pgffor}
\begin{document}
Loops:
\foreach \i in {0, ..., 3}{
\par $ i = \i $:%
\foreach[parse=true] \j in {0, ..., 0+{1, 5, 7, 8}[\i]}{
$j = \j$,%
}
}
\vspace{1em}
\foreach[count=\cnt from 0] \i in {1, 5, 7, 8}{
\par \cnt. item: $ i = \i $:%
\foreach \j in {0, ..., \i}{
$j = \j$,%
}
}
\end{document}
獎金
\documentclass[tikz]{standalone}
\begin{document}
\tikz[y=-1cm, radius=.4]\draw
foreach[count=\y from 0] \i in {1, 5, 7, 8}{
[shift=(left:{(\i-1)/2})]
foreach \x in {0, ..., \i}{
(\x, \y) circle[] } };
\end{document}