
私は今 TikZ を学習中で、いくつかの制御構造を試しています。以下のコードについてどなたか助けていただけないでしょうか?
\documentclass{article}
\usepackage{tikz}
\begin{document}
\begin{center}
\begin{tikzpicture}
\draw[fill=black] (0,0)circle(0.05) node[above=1.5]{You};
\foreach \(\x,\y) in {(-2,green),(-1,red),(0,black),(1,blue),(2,yellow)}
{
\filldraw[draw=\y] (0,0)--(\x,-1);
\draw[fill=black] (-\x,-1)circle(0.05);
}
\end{tikzpicture}
\end{center}
\end{document}
問題は私が使用しようとしているところから来ていることは分かっています
\foreach \(\x,\y) in {(-2,green),(-1,red),(0,black),(1,blue),(2,yellow)}
TikZ でこのようなことを処理できる方法はありますか?
答え1
はい、これを行う方法はあります。
83節/911ページよりPGF/TikZ マニュアル (v3.0.0):
複数の変数。2 つの変数を同時に反復処理したい場合がよくあります。
\foreach
ループをネストできるので、通常は簡単です。ただし、変数を「同時に」反復処理したい場合もあります。たとえば、2 つの座標を接続するエッジのリストが与えられ、これらのエッジを反復処理したい場合があります。その際、エッジのソースとターゲットを 2 つの異なる変数に設定する必要があります。これを実現するには、次の構文を使用します。⟨変数⟩単一の TEX 変数だけではなく、スラッシュ (
/
) で区切られた変数のリストにすることもできます。この場合、リスト項目はスラッシュで区切られた値のリストにすることもできます。仮定すると、⟨変数⟩リスト項目は値のリストであり、⟨コマンド⟩が実行されると、⟨変数⟩現在のリスト項目を構成するリストの一部に設定されます。
PGF/TikZ のドキュメントは非常に詳細で、そのセクション全体で\foreach
ループの使用方法を非常にわかりやすく説明しています。初めて学習するときには最初から最後まで読むことはお勧めしません (完全なドキュメントは 1000 ページを超えます) が、何か新しいことを詳細に学習したい場合は非常に役立ちます。
だから、その行を置き換える必要があります
\foreach \(\x,\y) in {(-2,green),(-1,red),(0,black),(1,blue),(2,yellow)}
と
\foreach \x/\col in {-2/green, -1/red, 0/black, 1/blue, 2/yellow}
\col
2 番目の変数の名前を、よりわかりやすいようにor \color
/に変更することをお勧めします\colour
。(x,y) 座標ペアをかなり頻繁にループする可能性があるため、混乱しないようにする必要があります。
例は次のようになります。
\documentclass{article}
\usepackage{tikz}
\begin{document}
\begin{tikzpicture}
\draw [fill=black] (0,0) circle (0.05) node [above=1.5] {You};
\foreach \x/\col in {-2/green, -1/red, 0/black, 1/blue, 2/yellow}
{
\filldraw [draw=\col] (0, 0) -- (\x, -1);
\draw [fill=black] (-\x, -1) circle (0.05);
}
\end{tikzpicture}
\end{document}
コンパイルすると次のようになります:
答え2
まあ、たとえ Python のようなループをサポートしていたとしても、\(
たとえばインライン数式環境のオープンであるため、依然として問題が発生し\(\alpha\)
ます$\alpha$
。
しかし、そうではありません。
したがって、使用する必要がある
\foreach \x/\y in {-2/green,-1/red,0/black,1/blue,2/yellow}