Différences
Ci-dessous, les différences entre deux révisions de la page.
Les deux révisions précédentesRévision précédenteProchaine révision | Révision précédente | ||
2_programmation:syntaxe:repeter_une_commande_n_fois [2022/01/07 10:25] – Compilation du code d'un exemple. jejust | 2_programmation:syntaxe:repeter_une_commande_n_fois [2022/10/10 15:34] (Version actuelle) – Usage de ⟨...⟩ dbitouze | ||
---|---|---|---|
Ligne 1: | Ligne 1: | ||
====== Comment répéter une commande N fois? ====== | ====== Comment répéter une commande N fois? ====== | ||
+ | TeX n'a //pas// été conçu comme un langage de programmation, | ||
+ | une partie d'un document, tout comme certaines parties de programmes doivent être exécutées plusieurs fois. | ||
+ | La conception de schémas est un exemple évident. Dans l' | ||
+ | de répéter manuellement le dessin de chaque graduation sur l'axe, alors que l' | ||
+ | < | ||
+ | \documentclass{article} | ||
+ | \usepackage{tikz} | ||
+ | \pagestyle{empty} | ||
- | TeX was //not// designed as a programming language, but there are occasions | + | \begin{document} |
- | when you want to repeat some part of your document, | + | \begin{tikzpicture} |
- | need to run several times. An obvious example is TeX-based drawing: LaTeX's '' | + | \draw[line width=.8pt,->] (0cm,0pt) -- ++(5.5cm, |
- | environment and [[ctanpkg> | + | \foreach \x in {0,0.5,...,5.0} \draw (\x cm, |
- | they are useful for drawing repeating patterns. As a result, " | + | \end{tikzpicture} |
- | often have to be emulated using obscure macro TeXniques. | + | \end{document} |
+ | </ | ||
+ | Donc tous naturellement, | ||
+ | fournissent des fonctions pour répéter des actions. | ||
+ | Même en dehors du contexte de dessin, il est souvent plus simple d' | ||
+ | plutôt que de les réimplémenter à l'aide d' | ||
- | This answer deals with repeating an operation a given number of times; | + | Cette réponse traite de la répétition d'une opération un nombre donné de fois; |
- | repeating operations once for each of a set of objects is dealt with in the answer | + | si vous souhaitez exécuter une action pour chaque élément d'une liste d' |
+ | lisez plutôt la réponse à la question | ||
«[[2_programmation: | «[[2_programmation: | ||
- | Plain TeX itself provides a '' | + | ===== En Plain TeX ===== |
- | contruct, which enables you to repeat a command | + | |
- | The syntax is simple | + | Plain TeX fournit lui-même une structure |
- | different enough that many people find it confusing. | + | (ou un ensemble de commandes). La syntaxe est relativement |
+ | est assez inhabituelle, | ||
+ | Voici un exemple: | ||
<code latex> | <code latex> | ||
\newcount\foo | \newcount\foo | ||
Ligne 27: | Ligne 43: | ||
\repeat | \repeat | ||
</ | </ | ||
- | In this slightly tricky code, '' | ||
- | '' | ||
- | '' | ||
- | TeX '' | ||
- | The [[ctanpkg> | + | Dans ce code un peu intrigant, '' |
- | Plain TeX and LaTeX); | + | en même temps, '' |
- | three arguments: | + | La boucle ci-dessus imprime donc les nombres de 10 à 1 dans le terminal, en utilisant la primitive TeX '' |
+ | |||
+ | |||
+ | ===== Avec l' | ||
+ | |||
+ | L' | ||
+ | elle définit une commande | ||
<code latex> | <code latex> | ||
- | \multido{<variables>}{< | + | \multido{⟨variables⟩}{⟨répétitions⟩}{⟨choses à répéter⟩} |
</ | </ | ||
- | When the macro is executing, the <//stuff to repeat//> | ||
- | <// | ||
- | variables that can be used in <// | ||
- | composite of a command sequence and how it varies; so a variable | ||
- | '' | ||
- | around, then '' | ||
- | and so on. (The variable '' | ||
- | initial letters represent different data types.) | ||
- | Both current LaTeX and (experimental) LaTeX3 have iteration | + | Lorsque la macro s' |
- | commands for internal use and for package writers; their use is | + | l' |
- | probably not recommendable. | + | Chaque variable est composée d'une suite de commandes et de la façon dont elle varie; |
+ | ainsi, la valeur '' | ||
+ | lors des deux itérations suivantes, et ainsi de suite. | ||
+ | (Si le nom de la variable commence par un '' | ||
+ | les autres lettres initiales représentent d' | ||
- | The LaTeX distribution package | + | LaTeX dans sa version actuelle, ainsi que LaTeX3 (expérimental), |
+ | pour leur usage interne, utilisables par les auteurs de paquets; cependant leur utilisation dans un document LaTeX | ||
+ | n'est pas recommandée. | ||
+ | |||
+ | |||
+ | ===== Avec l' | ||
+ | |||
+ | L' | ||
<code latex> | <code latex> | ||
Ligne 64: | Ligne 85: | ||
</ | </ | ||
+ | ===== Avec l' | ||
- | The [[ctanpkg> | + | L' |
<code latex> | <code latex> | ||
Ligne 76: | Ligne 98: | ||
</ | </ | ||
- | as you can see, the arguments | + | Comme vous pouvez le voir, les arguments |
- | termination | + | un argument |
- | (default step is 1). | + | |
- | The LaTeX '' | + | ===== Avec l' |
+ | |||
+ | L' | ||
<code latex> | <code latex> | ||
- | \multiput(x, | + | \multiput(⟨x⟩,⟨y⟩)(⟨xstep⟩,⟨xstep⟩){⟨n⟩}{⟨obj⟩} |
</ | </ | ||
- | which places <//obj//> (intended to be a bit of picture) | + | qui place '' |
- | <//n//> times at positions (<//x//>, <//y//>), | + | * '' |
- | (<//x//>+<//xstep//>, <//y//>+<//ystep//>), | + | * '' |
- | (<//x//>+2<//xstep//>, <//y//>+2<//ystep//>) and so on, adding the | + | * '' |
- | displacement again each time. The command was designed for use in | + | * et ainsi de suite, |
- | '' | + | en ajoutant à chaque fois le déplacement '' |
- | provide eccentric typesetting in a " | + | Cette commande a été conçue pour être utilisée dans un evironnement |
+ | mais elle ne fait aucun contrôle particulier pour ça, | ||
+ | et peut tout à fait être utilisée dans du texte ordinaire, comme ceci par exemple: | ||
<code latex> | <code latex> | ||
- | Here \multiput(0, | + | Et nous \multiput(0, |
</ | </ | ||
- | with predictable | + | qui donnera, de façon prévisible mais pas forcément souhaitable: |
- | with nothing but an iterative calculation in the braced argument, in | + | < |
- | which case its graphical capabilities have no effect. | + | |
- | The [[ctanpkg> | + | Elle peut être utilisé avec un simple calcul itératif dans son dernier argument, |
- | [[ctanpkg> | + | auquel cas ses capacités graphiques n'ont aucun effet. |
- | provides iterations to support the needs of graphics. Its syntax is | + | |
- | in the style of common programming languages: | + | |
+ | ===== Avec l' | ||
+ | |||
+ | L' | ||
+ | pour répondre aux besoins des graphiques. | ||
+ | Sa syntaxe reprend le style des langages de programmation courants: | ||
<WRAP column 50ex> | <WRAP column 50ex> | ||
Ligne 131: | Ligne 159: | ||
<WRAP clear /> | <WRAP clear /> | ||
- | The '' | + | La commande |
- | unit is executed in a group, so that any calculations done within the | + | de sorte que tous les calculs effectués dans la boucle sont perdus |
- | loop are lost (unless their result is made '' | + | cependant, elle n'a rien de particulièrement spécifique au dessin, à la différence de '' |
- | does not 'build in' its graphical origins (as '' | + | de sorte que son potentiel en dehors de son environnement graphique d' |
- | its potential outside its own graphics environment " | + | |
- | clear. | + | |
----- | ----- | ||
- | //Source:// [[faquk> | + | //Source:// [[faquk> |
{{htmlmetatags> | {{htmlmetatags> |