latex
Compteurs, si instructions et boucles avec latex
Recherche…
Compteur déclaration, initialisation et impression en pdf
Il est possible d'utiliser des variables entières avec latex. Pour créer une nouvelle variable, nous avons besoin de la commande \newcounter{name}
, où name
est le nom du nouveau compteur. Le name
doit contenir que des lettres. Cette commande en crée une nouvelle avec le nom \thename
. Avec cette commande, nous pouvons imprimer une variable de name
sur le papier. La valeur initiale de name
est 0. Pour donner une valeur à "name", nous pouvons utiliser \setcounter{name}{n}
où n est un entier. \value{name}
est une fonction qui renvoie la valeur de name
.
\documentclass{article}
\begin{document}
\newcounter{num} %new counter, initial value is 0
\thenum %print 0
\setcounter{num}{3} %set num to 3
\thenum %print 3
\newcounter{number}
\setcounter{number}{\value{num}} %set number to value of num
\thenumber %print 3
Latex provides some other formats to print a number.
Other types of printing:
\arabic{num}\\
\Roman{num}\\ %→ I, II, III, IV, . . . (num = 1, 2, 3, . . . )
\roman{num}\\ %→ i, ii, iii, iv, . . . (num = 1, 2, 3, . . . )
\Alph{num}\\ %→ A, B, C, D, . . . (num = 1, 2, 3, . . . , 26)
\alph{num}\\ %→ a, b, c, d, . . . (num = 1, 2, 3, . . . , 26)
\fnsymbol{num}\\ %→ ∗, †, ‡, §, ¶, k, ∗∗, ††, ‡‡ (num = 1, 2, 3, . . . , 9)
\end{document}
Opérations avec des compteurs
Cet exemple montre comment utiliser des opérations mathématiques avec des compteurs. Cela peut être utile pour les boucles en latex.
Ajout: \addtocounter{num}{n}
cette commande ajoute n
à num
, où num
est un compteur et n
est un entier positif.
Soustraction: \addtocounter{num}{-n}
cette commande soustrait n
de num
, où num
est un compteur et n
est un entier positif.
Multiplication: \multiply\value{num} by n
cette commande multiplie num
par n
, où num
est un compteur et n
est un entier.
Division \divide\value{num} by n
cette commande divise num
par n
et obtient la partie entière du quotient ( num
est un compteur et n
est un entier)
\documentclass{article}
\begin{document}
\newcounter{num}
\setcounter{num}{3}
\addtocounter{num}{10}
\thenum\\%prints 13
\addtocounter{num}{-3}
\thenum\\%prints 10
\stepcounter{num}
\thenum\\%prints 11
\multiply\value{num} by \value{num}
\thenum\\%prints 121
\multiply\value{num} by 2
\thenum\\%prints 242
\divide\value{num} by 60
\thenum%prints 4
\end{document}
\newcommand{num}
déclare un compteur. \setcounter{num}{3}
définit la valeur de num sur 3.
\addtocounter{num}{10}
ajoute 10 à num.
\addtocounter{num}{-3}
soustrayez 3 de num.
\stepcounter{num}
ajoute 1 à num
\multiply\value{num} by \value{num}
carrés num.
\multiply\value{num} by 2
doubles num.
\divide\value{num} by 60
divise num par 60 et obtient la partie entière.
Le résultat du code: 13 \\ 10 \\ 11 \\ 121 \\ 242 \\ 4
(\\ symbolise la nouvelle ligne)
Le package intcalc ajoute d'autres opérations sur les nombres entiers, par exemple mod, pow, sng, abs, inv ...
Si déclarations
Dans latex, nous pouvons utiliser des commandes intégrées pour exécuter du code, que les conditions soient vraies ou non.
Comparaison de deux entiers: \ifnum\value{num}>n {A} \else {B}\fi
Ce code exécute A si num> n else B. On peut substituer> par <et =.
Si un nombre est impair: \ifodd\value{num} {A}\else {B}\fi
Si num est impair, alors il exécute A else B.
Si avec condition: \ifthenelse{condition}{A}{B}
Nous devons charger si le paquet pour utiliser cette commande. Si la condition est vraie, elle exécute A else B.
Il est possible de créer une condition complexe avec \( \)
, \AND
, \OR
, \NOT
.
Par exemple: \ifthenelse{\(\NOT 4<2 \OR 4>11\)\AND\isodd{4}}{A}{B}
Ce morceau de code écrit "B" sur la page. \NOT 4<2
est vrai et 4>11
est faux. Si nous connectons une instruction false et une instruction true avec "OR", le résultat est vrai. Donc \(\NOT 4<2 \OR 4>11\)
est vrai. \isodd{4}
est faux car 4 est pair. Une instruction false et une instruction true connectées à "AND" sont fausses, la sortie est donc B.
Un exemple de code:
\documentclass{article}
\usepackage{ifthen}
\begin{document}
\newcounter{num}
\setcounter{num}{10}
If num$>$100 then the next sentence will be "Num is large." else "Num is small."
Num is \ifnum \value{num}>100 {large} \else {small}.
If num is odd then the next sentence will begin with "Odd" if not then with "Even"
\ifodd \value{num} {Odd} \else {Even} numbers are cool.
If (num$>$3 and (1$<$0 or num$=$10)) is true then the next sentence will be "True." else "False."
\ifthenelse{\value{num}>3\AND\(1<0 \OR \value{num}=10\)}{True.}{False.}
\end{document}
Boucles - répéter des choses
Nous pouvons créer des boucles en latex. Ils sont similaires mais pas aussi personnalisables que les boucles dans d'autres langages de programmation. Une alternative à l'utilisation de boucles est @loops. Si nous utilisons une commande qui inclut "@" dans son nom, il faut le placer entre \makeatletter
et \makeatother
. Il n'est pas autorisé de les utiliser dans une macro qui décrit une nouvelle définition.
Faux:
\def\is#1#2{\makeatletter\@ifstar{#1}{#2}\makeatother
Droite:
\makeatletter\def\is#1#2{\@ifstar{#1}{#2}}\makeatother
@pour la boucle: \@for\command:={list}\do{commands}
Exemple :
\makeatletter
\@for\sun:={rising,setting}\do{The sun is \sun.}
\makeatother
Il crée le texte suivant: Le soleil se lève. Le soleil se couche.
@whilenum loop: \@whilenum condition\do{commands}
Exemple :
\makeatletter
\newcounter{int}
\@whilenum\value{int}<10\do
{\stepcounter{int}\ifthenelse{\isodd{\value{int}}}{\theint}{}}
\makeatother
Ce code écrit les nombres impairs de 1 à 9.
"loop repeat" loop: \loop {commands} \ifnum condition \repeat
Exécute les commandes jusqu'à ce que la condition soit vraie.
Exemple
\setcounter{int}{1}
\loop
\theint
\addtocounter{int}{2}
\ifnum \value{int}<10
\repeat
Ce code fait la même chose que la boucle @whilenum.
Un exemple de code:
\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}
Utiliser des boucles dans Tikz
Les boucles sont utiles dans Tikz.
Le code suivant dessine une horloge sans chiffres:
\documentclass{article}
\usepackage{ifthen}
\usepackage{intcalc}
\usepackage{tikz}
\newcounter{num}
\begin{document}
\begin{tikzpicture}
\makeatletter
\setcounter{num}{1}
\newcounter{angle}
\draw (0,0) circle (3cm);
\@whilenum\value{num}<13\do{
\setcounter{angle}{360}
\multiply\value{angle} by \value{num}
\divide\value{angle} by 12
\ifnum \intcalcMod{\value{num}}{3}=0{
\draw[line width=4pt] (\theangle:2cm) -- (\theangle:3cm); }\else
{
\draw[line width=1pt] (\theangle:2.3cm) -- (\theangle:3cm);
}\fi
\addtocounter{num}{1}
}
\makeatother
\end{tikzpicture}
\end{document}
Le résultat: