Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentesRévision précédente
Prochaine 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. jejust2_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, mais il arrive de vouloir répéter
 +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'exemple ci-dessous, vous n'avez évidemment pas envie
 +de répéter manuellement le dessin de chaque graduation sur l'axe, alors que l'ordinateur saurait très bien le faire pour vous:
 +<latexdoc>
 +\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, just as parts of programs +\begin{tikzpicture} 
-need to run several times An obvious example is TeX-based drawing: LaTeX'''picture'' +\draw[line width=.8pt,->] (0cm,0pt) -- ++(5.5cm,0pt) ; 
-environment and [[ctanpkg>pgf|PGF]] (at leastprovide repeat facilities --- +\foreach \x in {0,0.5,...,5.0} \draw (\x cm,4pt) -- (\x cm,-4pt) node[anchor=north,font=\footnotesize\it] {\x} ; 
-they are useful for drawing repeating patterns As a result"common" programming techniques +\end{tikzpicture} 
-often have to be emulated using obscure macro TeXniques.+\end{document} 
 +</latexdoc> 
 +Donc tous naturellement, l'environnement ''picture'' de LaTeX et [[ctanpkg>pgf|PGF]] (notamment
 +fournissent des fonctions pour répéter des actions. 
 +Même en dehors du contexte de dessin, il est souvent plus simple d'utiliser ces fonctionnalités
 +plutôt que de les réimplémenter à l'aide d'obscures macros TeXniques.
  
-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'objets 
 +lisez plutôt la réponse à la question
 «[[2_programmation:syntaxe:repeter_une_commande_pour_chaque_element_d_une_liste|Comment répéter une action pour chaque élément d'un ensemble?]]». «[[2_programmation:syntaxe:repeter_une_commande_pour_chaque_element_d_une_liste|Comment répéter une action pour chaque élément d'un ensemble?]]».
  
-Plain TeX itself provides a ''\loop''(nbsp)...(nbsp)''\repeat'' +===== En Plain TeX ===== 
-contructwhich enables you to repeat a command (or set of commands). + 
-The syntax is simple enoughbut it use of TeX conditionals is +Plain TeX fournit lui-même une structure ''\loop''(nbsp)...(nbsp)''\repeat'', qui permet de répéter une commande 
-different enough that many people find it confusing.+(ou un ensemble de commandes). La syntaxe est relativement simple, mais l'utilisation des structures conditionnelles de TeX 
 +est assez inhabituelle, ce qui fait que beaucoup de personnes la trouvent déroutante
  
 +Voici un exemple:
 <code latex> <code latex>
 \newcount\foo \newcount\foo
Ligne 27: Ligne 43:
 \repeat \repeat
 </code> </code>
-In this slightly tricky code, ''\loop'' starts the construct ended by 
-''\repeat'', but ''\repeat'' also "serves as" the ''\fi'' to the 
-''\ifnum'' The loop above prints the numbers from 10 down to 1 via 
-TeX ''\message'' (i.e., on the console output). 
  
-The [[ctanpkg>multido]] package is also 'generic' (usable both in +Dans ce code un peu intrigant, ''\loop'' démarre la boucle terminée par ''\repeat'', 
-Plain TeX and LaTeX); it defines a command ''\multido'' with +en même temps, ''\repeat'' tient également lieu de ''\fi'' pour le ''\ifnum''
-three arguments:+La boucle ci-dessus imprime donc les nombres de 10 à 1 dans le terminal, en utilisant la primitive TeX ''\message''
 + 
 + 
 +===== Avec l'extension “multido” ===== 
 + 
 +L'extension [[ctanpkg>multido]] est également «générique» (//ie// utilisable aussi bien avec Plain TeX que LaTeX); 
 +elle définit une commande ''\multido'' prenant trois arguments:
 <code latex> <code latex>
-  \multido{<variables>}{<repetitions>}{<stuff to repeat>}+  \multido{variables}{⟨répétitions⟩}{⟨choses à répéter⟩}
 </code> </code>
-When the macro is executing, the <//stuff to repeat//> gets executed 
-<//repetitions//> times; the <//variables//> gives a list of 
-variables that can be used in <//stuff//> Each variable is a 
-composite of a command sequence and how it varies; so a variable 
-''\iz=2+4'' sets ''\iz'' to ''2'' first time 
-around, then ''6'' and ''10'' in the next two iterations, 
-and so on.  (The variable ''\iz'' is an integer; variables with other 
-initial letters represent different data types.) 
  
-Both current LaTeX and (experimental) LaTeX3 have iteration +Lorsque la macro s'exécute, les ''⟨//choses à répéter//⟩'' sont exécutées ''⟨//répétitions//⟩'' fois; 
-commands for internal use and for package writerstheir use is +l'argument ''⟨//variables//⟩'' donne une liste de variables qui peuvent être utilisées dans les ''⟨//choses à répéter//⟩''
-probably not recommendable.+Chaque variable est composée d'une suite de commandes et de la façon dont elle varie
 +ainsi, la valeur ''\iz=2+4'' définirait la variable ''\iz'' à ''2'' la première fois, puis à ''6'' et ''10'' 
 +lors des deux itérations suivantes, et ainsi de suite. 
 +(Si le nom de la variable commence par un ''i'', comme ''\iz'', elle représente un nombre entier; 
 +les autres lettres initiales représentent d'autres types de données).
  
-The LaTeX distribution package [[ctanpkg>ifthen]] offers the macro ''\whiledo'':+LaTeX dans sa version actuelle, ainsi que LaTeX3 (expérimental), comportent tous deux des commandes d'itération 
 +pour leur usage interne, utilisables par les auteurs de paquets; cependant leur utilisation dans un document LaTeX 
 +n'est pas recommandée. 
 + 
 + 
 +===== Avec l'extension “ifthen” ===== 
 + 
 +L'extension [[ctanpkg>ifthen]], fournie avec LaTeX, propose la macro ''\whiledo'':
  
 <code latex> <code latex>
Ligne 64: Ligne 85:
 </code> </code>
  
 +===== Avec l'extension “forloop” =====
  
-The [[ctanpkg>forloop]] package provides nothing but ''\forloop'':+L'extension [[ctanpkg>forloop]] propose une unique macro, ''\forloop'':
  
 <code latex> <code latex>
Ligne 76: Ligne 98:
 </code> </code>
  
-as you can seethe arguments are counterstarting value and +Comme vous pouvez le voirles arguments sont le compteurla valeur de départ et la condition de fin; 
-termination condition; an optional argument supplies a step value +un argument facultatif fournit une valeur d'incrément (l'incrément par défaut est de ''1'').
-(default step is 1).+
  
-The LaTeX ''picture'' environment has a simple command for repeated drawing:+===== Avec l'environnement “picture” ===== 
 + 
 +L'environnement ''picture'' de LaTeX possède une commande simple pour répéter des opérations dans un dessin
 <code latex> <code latex>
-\multiput(x,y)(xstep,ystep){n}{obj}+\multiput(x,y)(xstep,⟨xstep⟩){n}{obj}
 </code> </code>
-which places <//obj//(intended to be a bit of picture) +qui place ''//obj//⟩'' (par exemple un élément d'une image''//n//⟩'' fois aux positions 
-<//n//> times at positions (<//x//><//y//>), +  * ''(//x////y//)''
-(<//x//>+<//xstep//><//y//>+<//ystep//>), +  * ''(//x//⟩ //xstep////y//⟩ //ystep//)''
-(<//x//>+2<//xstep//><//y//>+2<//ystep//>and so onadding the +  * ''(//x//⟩ + 2 //xstep////y//⟩ + 2 //ystep//)'' 
-displacement again each time The command was designed for use in +  * et ainsi de suite
-''picture'', but it makes no checkand may even be used to +en ajoutant à chaque fois le déplacement ''(⟨//xstep//⟩, ⟨//ystep//⟩)''
-provide eccentric typesetting in a "regular" sentencesuch as: +Cette commande a été conçue pour être utilisée dans un evironnement ''picture'', 
 +mais elle ne fait aucun contrôle particulier pour ça
 +et peut tout à fait être utilisée dans du texte ordinairecomme ceci par exemple:
 <code latex> <code latex>
-Here \multiput(0,0)(1,1){3}{weare again.+Et nous \multiput(0,0)(2,3){3}{re}voilà!
 </code> </code>
-with predictable (if not actually desirableeffect.  It may be used +qui donnera, de façon prévisible mais pas forcément souhaitable: 
-with nothing but an iterative calculation in the braced argumentin +<latex>Et nous \multiput(0,0)(2,3){3}{re}voilà!</latex>.
-which case its graphical capabilities have no effect.+
  
-The [[ctanpkg>pgf|pgffor]] packagewhich is part of the  +Elle peut être utilisé avec un simple calcul itératif dans son dernier argument, 
-[[ctanpkg>pgf|PGF]] distributionalso +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'extension “PGF” (TikZ) ===== 
 + 
 +L'extension [[ctanpkg>pgf|pgffor]], qui fait partie de [[ctanpkg>pgf|PGF]], fournit également de quoi faire des itérations 
 +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 ''\foreach'' command has the potential drawback that its repeated +La commande ''\foreach'' présente l'inconvénient potentiel que son contenu est exécuté dans un groupe
-unit is executed in a groupso that any calculations done within the +de sorte que tous les calculs effectués dans la boucle sont perdus (à moins que leur résultat ne soit rendu ''\global''); 
-loop are lost (unless their result is made ''\global''); howeverit +cependantelle n'a rien de particulièrement spécifique au dessin, à la différence de ''\multiput'', 
-does not 'build in' its graphical origins (as ''\multiput'' does) so +de sorte que son potentiel en dehors de son environnement graphique d'origine est plus clair.
-its potential outside its own graphics environment "home" is more +
-clear. +
  
 ----- -----
-//Source:// [[faquk>FAQ-repeat-num|Repeating a command _n_ times]]+//Source:// [[faquk>FAQ-repeat-num|Repeating a command ‘n’ times]]
  
 {{htmlmetatags>metatag-keywords=(LaTeX,boucles,répéter une commande,itérations en LaTeX,répétition de commande,exécuter en boucle) {{htmlmetatags>metatag-keywords=(LaTeX,boucles,répéter une commande,itérations en LaTeX,répétition de commande,exécuter en boucle)
2_programmation/syntaxe/repeter_une_commande_n_fois.1641551142.txt.gz · Dernière modification : 2022/01/07 10:25 de jejust
CC Attribution-Share Alike 4.0 International
Driven by DokuWiki Recent changes RSS feed Valid CSS Valid XHTML 1.0