迴圈 - 重複的事情

我們可以在乳膠中建立迴圈。它們類似但不像其他程式語言中的迴圈那樣可自定義。使用迴圈的一種替代方法是 @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}

StackOverflow 文件