概要
pgffor
パッケージは,多くのプログラミング言語で用いられるfor文と似た構文として\foreach
コマンドを提供する.
pgffor
パッケージはtikz
パッケージを読み込むと自動的に読み込まれるようになっており,tikz
による描画で繰り返しを行うときに用いることが多いが,pgffor
自体で単体でも使える独立したパッケージになっている.
この記事ではpgfforの基本的な使い方をまとめる.
公式のマニュアルはtexdoc tikz
の89章にまとまっている.
記事内で触れていない機能も一部あるので,詳しく知りたい場合はマニュアルを参照してほしい.
構文
\foreach
コマンドの構文を簡単にまとめる.
\foreach <variables> in <list> <commands>
<variables>
で宣言された変数に<list>
に含まれる値を順に代入し,それぞれの値を使って<commands>
を実行する.
<variables>
で変数(制御綴)を宣言する./
で区切ることで複数の変数を宣言することもできる.
<list>
は{0,1,2,3}
のような,{...}
で囲まれたカンマ区切りの値のリストである.- 変数が複数ある場合は
/
で区切ってそれぞれの変数に対応する値を書ける.すべての値を明示的に書かない場合は,最後に書いた値が以降の変数について繰り返される. {0,1,...,10}
のような省略構文を使うこともできる.
- 変数が複数ある場合は
<commands>
は以下のいずれかである.tikz
の1つの描画コマンド (次の;
まで)- 1つの
\foreach
文 (多重ループ) {...}
で囲まれたグループ
リストの省略記法
連続した数字,英字の列挙について...
を使った省略記法を用いることができる.
使用法は比較的直観的に使えるものになっていて,例えば,
- {0,...,5} → {0,1,2,3,4,5}
- {a,...,f} → {a,b,c,d,e,f}
のように扱われる.
...
の前に2つの値を指定すると,その差分を使って補完する値が計算される.
例えば,
- {2,4,...,10} → {2,4,6,8,10}
- {0,0.1,...,0.5001} → {0,0.1,0.20001,0.30002,0.40002,0.50003}
のように使うことができる. 2つ目の例でわかるように,浮動小数点演算の誤差には注意する必要がある.
例
公式のマニュアルにあるサンプルをメインにいくつか例を見る.
- 基本的な繰り返し
\foreach \x in {1,2,3,0} {[\x]} % -> [1][2][3][0]
\x
に1,2,3,0
を順番に代入し,[\x]
を出力する.
- tikz のコマンドを繰り返す
\tikz \foreach \x in {0,1,2,3} \draw (\x,0) circle[radius=0.2cm];
x座標を変えながらいくつかの円を描く.
- 二重ループ
\begin{tikzpicture} \foreach \x in {0,1,2,3} \foreach \y in {0,1,2,3} { \draw (\x,\y) circle[radius=0.2cm]; \fill (\x,\y) circle[radius=0.1cm]; } \end{tikzpicture}
2重ループを使って x,y の両方の座標を変化させている.
- 2つの変数を宣言する
\begin{tikzpicture} \foreach \x/\xtext in {0,..,3,2.72/e} \draw (\x,0) node {$\xtext$}; \end{tikzpicture}
\x
, \xtext
という2つの変数を宣言している.
\xtext
を明示的に指定していない場合は,\x
と同じ値が使われている.
備考
画像を追加予定...