循环 - 重复的事情
我们可以在乳胶中创建循环。它们类似但不像其他编程语言中的循环那样可自定义。使用循环的一种替代方法是 @loops。如果我们在名称中使用包含“@”的命令,则必须将它放在\makeatletter
和\makeatother
之间。不允许在描述新定义的宏中使用它们。
错误:
\def\is#1#2{\makeatletter\@ifstar{#1}{#2}\makeatother
对:
\makeatletter\def\is#1#2{\@ifstar{#1}{#2}}\makeatother
@for loop: \@for\command:={list}\do{commands}
示例 :
\makeatletter
\@for\sun:={rising,setting}\do{The sun is \sun.}
\makeatother
它创建了以下文本:太阳正在升起。太阳落山了。
@whilenum loop: \@whilenum condition\do{commands}
示例 :
\makeatletter
\newcounter{int}
\@whilenum\value{int}<10\do
{\stepcounter{int}\ifthenelse{\isodd{\value{int}}}{\theint}{}}
\makeatother
此代码将奇数从 1 写入 9。
****循环重复循环: \loop {commands} \ifnum condition \repeat
执行命令直到条件为真。
例
\setcounter{int}{1}
\loop
\theint
\addtocounter{int}{2}
\ifnum \value{int}<10
\repeat
此代码与 @whilenum 循环相同。
示例代码:
\documentclass{article}
\usepackage{ifthen}
\usepackage{amsmath} %\text{} command needs this package
\begin{document}
Demonstration of @for loop:
\makeatletter
\@for\sun:={rising,setting}\do{The sun is \sun. }
\makeatother
\newcounter{int}
@whilenum loop:
\setcounter{int}{0}
\makeatletter
\@whilenum\value{int}<20\do
{\stepcounter{int}\ifthenelse{\isodd{\value{int}}}{\theint\text{ }}{}}
\makeatother
"loop repeat" loop:
\setcounter{int}{1}
\loop
\theint
\text{ }\addtocounter{int}{2}\ifnum\value{int}<20
\repeat
\end{document}