latex
Tellers, als verklaringen en lussen met latex
Zoeken…
Tegenaangifte, initialisatie en afdrukken naar pdf
Het is mogelijk om gehele variabelen met latex te gebruiken. Om een nieuwe variabele te maken, hebben we de opdracht \newcounter{name}
, waarbij name
de naam van de nieuwe teller is. De name
mag alleen letters bevatten. Met deze opdracht maakt u een nieuwe met naam \thename
. Met dit commando kunnen we printen name
variabele op het papier. De initiële waarde van name
is 0. Om waarde te geven aan "naam" kunnen we \setcounter{name}{n}
waarbij n een geheel getal is. \value{name}
is een functie die terugkeert met de waarde van 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}
Bewerkingen met tellers
Dit voorbeeld laat zien hoe u wiskundige bewerkingen met tellers kunt gebruiken. Het kan nuttig zijn voor lussen in latex.
Toevoeging: \addtocounter{num}{n}
deze opdracht voegt n
aan num
, waarbij num
een teller is en n
een positief geheel getal is.
Aftrekken: \addtocounter{num}{-n}
deze opdracht trekt n
van num
, waarbij num
een teller is en n
een positief geheel getal is.
Vermenigvuldiging: \multiply\value{num} by n
deze opdracht vermenigvuldigt num
met n
, waarbij num
een teller is en n
een geheel getal is.
Deling \divide\value{num} by n
dit commando deelt num
door n
en krijgt het gehele deel van het quotiënt ( num
is een teller en n
is een geheel getal)
\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}
verklaart teller. \setcounter{num}{3}
stelt num waarde in op 3.
\addtocounter{num}{10}
voegt 10 toe aan num.
\addtocounter{num}{-3}
trek 3 af van num.
\stepcounter{num}
voegt 1 toe aan num
\multiply\value{num} by \value{num}
vierkanten aantal.
\multiply\value{num} by 2
dubbele num.
\divide\value{num} by 60
deelt getal door 60 en krijgt het gehele getal.
Het resultaat van de code: 13 \\ 10 \\ 11 \\ 121 \\ 242 \\ 4
(\\ symboliseert nieuwe regel)
intcalc-pakket voegt een aantal andere integer-bewerkingen toe, bijv. mod, pow, sng, abs, inv ...
Als verklaringen
In latex kunnen we ingebouwde opdrachten gebruiken om code uit te voeren, ongeacht of de voorwaarden waar zijn of niet.
Vergelijking van twee gehele getallen: \ifnum\value{num}>n {A} \else {B}\fi
Deze code voert A uit als num> n anders B. We kunnen> vervangen door <en =.
Als een nummer oneven is: \ifodd\value{num} {A}\else {B}\fi
Als num oneven is, wordt A anders B uitgevoerd.
Indien met voorwaarde: \ifthenelse{condition}{A}{B}
We moeten het ifthen-pakket laden om deze opdracht te gebruiken. Als de voorwaarde waar is, wordt A anders B uitgevoerd.
Het is mogelijk om een complexe voorwaarde te maken met \( \)
, \AND
, \OR
, \NOT
.
Bijvoorbeeld: \ifthenelse{\(\NOT 4<2 \OR 4>11\)\AND\isodd{4}}{A}{B}
Dit stukje code schrijft "B" op de pagina. \NOT 4<2
is waar en 4>11
is onwaar. Als we een valse en een waar statement verbinden met "OF" dan is het resultaat waar. Dus \(\NOT 4<2 \OR 4>11\)
is waar. \isodd{4}
is false omdat 4 even is. Een onwaar en een waar statement verbonden met "AND" is onwaar, dus de uitvoer is B.
Een voorbeeldcode:
\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}
Lussen - dingen herhalen
We kunnen lussen in latex maken. Ze zijn vergelijkbaar, maar niet zo aanpasbaar als lussen in andere programmeertalen. Een alternatief voor het gebruik van lussen is @loops. Als we een opdracht gebruiken met "@" in de naam, moeten we deze tussen \makeatletter
en \makeatother
. Het is niet toegestaan om ze te gebruiken in een macro die een nieuwe definitie beschrijft.
Mis:
\def\is#1#2{\makeatletter\@ifstar{#1}{#2}\makeatother
Rechtsaf:
\makeatletter\def\is#1#2{\@ifstar{#1}{#2}}\makeatother
@for loop: \@for\command:={list}\do{commands}
Voorbeeld :
\makeatletter
\@for\sun:={rising,setting}\do{The sun is \sun.}
\makeatother
Het creëert de volgende tekst: De zon komt op. De zon gaat onder.
@whilenum loop: \@whilenum condition\do{commands}
Voorbeeld :
\makeatletter
\newcounter{int}
\@whilenum\value{int}<10\do
{\stepcounter{int}\ifthenelse{\isodd{\value{int}}}{\theint}{}}
\makeatother
Deze code schrijft oneven getallen van 1 tot 9.
lus "lus herhalen": \loop {commands} \ifnum condition \repeat
Voert opdrachten uit totdat de voorwaarde waar is.
Voorbeeld
\setcounter{int}{1}
\loop
\theint
\addtocounter{int}{2}
\ifnum \value{int}<10
\repeat
Deze code doet hetzelfde als @whilenum loop.
Een voorbeeldcode:
\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}
Lussen gebruiken in Tikz
Lussen zijn handig in Tikz.
De volgende code tekent een klok zonder cijfers:
\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}
Het resultaat: