網路城邦
上一篇 回創作列表 下一篇   字體:
TiKz 的foreach廻圈
2015/04/20 15:18:13瀏覽982|回應0|推薦0

廻圈foreach

TiKz 提供了一個廻圈foreach,用法:

\foreach 變數[參數] in {列值} {命令}

先在latex 下,觀察foreach的規則:

\foreach \x in {1,2,3,0} {\x, }

會在文件上面印出 1,2,3,0, 每一個列值都會被執行。

其中的列值部分,可以用"...",如果是

1,2,...,n,意味是1, 1+1, 1+2, 1+3, ...,1+md, 如果

1+md 小於等於 n 時成立,大於 n時則不會被執行。如:

\foreach \x in {2,4,...,11} {\x, } 會是 2,4,6,8,10, 

列值的差如果是浮點數,使用時就要注意,以免效果不好:

\foreach \x in {0,0.1,...,0.5} {\x, }

會是0,0.1, 0.20001, 0.30002, 0.40002, 因為下一個值比0.5大,所以不會被執行。

列值也可以遞減,那判斷方式就相反:

\foreach \x in {9,8,...,3.5} {\x, } 

會是9,8,7,6,5,4。

如果列值直接只有頭尾二數,則預設的遞增(減)值為1:

\foreach \x in {0.5,...,5} {\x, } 

為0.5, 1.5, 2.5, 3.5, 4.5,

foreach的列值也可使用字母:

\foreach \x in {a,d,...,z} {\x, }

結果為a, d, g, j, m, p, s, v, y, 

如果列值中的值含有某些語法,那麼使用上要注意不要中斷語法結構:

\foreach \x in {2^0,2^...,2^6} {$\x$, }

會是輸出2^0, 2^1, 2^2, 2^3, 2^4, 2^5, 2^6, 

多個變數的foreach

例如使用二個變數,\x, \y,則:

\foreach \x / \y in {1/2, a/b} {"\x \ and \y"}

會是 "1 and 2""a and b"

接下來是一個從TiKz文件上面的例子,畫一個鐘面,使用二個變數\angle, \label:

\begin{tikzpicture}[line cap=round, line width=3pt]

\draw (0,0) circle (2cm);

\foreach \angle / \label in {0/3, 30/2, 60/1, 90/12, 120/11, 150/10, 180/9, 210/8, 240/7, 270/6, 300/5,330/4}

{

\draw[line width=1pt] (\angle:1.8cm)--(\angle:2cm);

\draw(\angle:1.4cm) node {\textsf{\label}};

}

\foreach \angle in {0, 90, 180, 270}

{\draw[line width=2pt] (\angle:1.7cm)--(\angle:2cm);}

\draw (0,0) --(120:0.8cm);

\draw (0,0) --(90:1cm);

\end{tikzpicture}

( 知識學習科學百科 )
回應 推薦文章 列印 加入我的文摘
上一篇 回創作列表 下一篇

引用
引用網址:https://classic-blog.udn.com/article/trackback.jsp?uid=paraquat&aid=22378817