latex
Zähler, wenn Anweisungen und Schleifen mit Latex
Suche…
Gegendarstellung, Initialisierung und Ausdruck als PDF
Es ist möglich, Integer-Variablen mit Latex zu verwenden. Um eine neue Variable zu erstellen, benötigen wir den Befehl \newcounter{name}
, wobei name
der Name des neuen Zählers ist. Der name
darf nur Buchstaben enthalten. Dieser Befehl erstellt eine neue mit dem Namen \thename
. Mit diesem Befehl können wir drucken name
Variable auf das Papier. Der Anfangswert von name
ist 0. Um "name" zu bewerten, können Sie \setcounter{name}{n}
wobei n eine ganze Zahl ist. \value{name}
ist eine Funktion, die den Wert von name
zurückgibt.
\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}
Operationen mit Zählern
Dieses Beispiel zeigt, wie mathematische Operationen mit Zählern verwendet werden. Es kann für Schleifen in Latex nützlich sein.
Zusatz: \addtocounter{num}{n}
Dieser Befehl addiert n
zu num
, wobei num
ein Zähler und n
eine positive ganze Zahl ist.
Subtraktion: \addtocounter{num}{-n}
Dieser Befehl subtrahiert n
von num
, wobei num
ein Zähler und n
eine positive ganze Zahl ist.
Multiplikation: \multiply\value{num} by n
Dieser Befehl multipliziert num
mit n
, wobei num
ein Zähler und n
eine ganze Zahl ist.
Division \divide\value{num} by n
Dieser Befehl teilt num
durch n
und erhält den ganzzahligen Teil des Quotienten ( num
ist ein Zähler und n
ist eine ganze Zahl)
\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}
deklariert den Zähler. \setcounter{num}{3}
setzt den num-Wert auf 3.
\addtocounter{num}{10}
fügt 10 zu num hinzu.
\addtocounter{num}{-3}
subtrahiere 3 von num.
\stepcounter{num}
fügt 1 zu num hinzu
\multiply\value{num} by \value{num}
Quadraten num.
\multiply\value{num} by 2
verdoppelt num.
\divide\value{num} by 60
dividiert num durch 60 und erhält den ganzzahligen Teil.
Das Ergebnis des Codes: 13 \\ 10 \\ 11 \\ 121 \\ 242 \\ 4
(\\ symbolisiert neue Zeile)
Das intcalc-Paket fügt einige andere Ganzzahloperationen hinzu, z. B. mod, pow, sng, abs, inv ...
Wenn Aussagen
In Latex können wir integrierte Befehle verwenden, um Code auszuführen, unabhängig davon, ob die Bedingungen erfüllt sind oder nicht.
Vergleichen von zwei Ganzzahlen: \ifnum\value{num}>n {A} \else {B}\fi
Dieser Code führt A if num> n else B aus. Wir können> durch <und = ersetzen.
Wenn eine Zahl ungerade ist: \ifodd\value{num} {A}\else {B}\fi
Wenn num ungerade ist, wird A sonst B ausgeführt.
Wenn mit Bedingung: \ifthenelse{condition}{A}{B}
Wir müssen das ifthen-Paket laden, um diesen Befehl verwenden zu können. Wenn die Bedingung erfüllt ist, wird A sonst B ausgeführt.
Es ist möglich, komplexe Bedingungen mit \( \)
, \AND
, \OR
, \NOT
zu erstellen.
Zum Beispiel: \ifthenelse{\(\NOT 4<2 \OR 4>11\)\AND\isodd{4}}{A}{B}
Dieser Code schreibt "B" auf der Seite. \NOT 4<2
ist wahr und 4>11
ist falsch. Wenn wir eine falsche und eine wahre Aussage mit "ODER" verbinden, ist das Ergebnis wahr. Also ist \(\NOT 4<2 \OR 4>11\)
wahr. \isodd{4}
ist falsch, da 4 gerade ist. Eine falsche und eine wahre Aussage in Verbindung mit "AND" ist falsch, daher ist die Ausgabe B.
Ein Beispielcode:
\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}
Loops - Dinge wiederholen
Wir können Schleifen in Latex erstellen. Sie sind ähnlich, aber nicht so anpassbar wie Schleifen in anderen Programmiersprachen. Eine Alternative zur Verwendung von Loops sind @loops. Wenn wir einen Befehl verwenden, der im Namen "@" enthält, müssen wir ihn zwischen \makeatletter
und \makeatother
. Sie dürfen nicht in einem Makro verwendet werden, das eine neue Definition beschreibt.
Falsch:
\def\is#1#2{\makeatletter\@ifstar{#1}{#2}\makeatother
Recht:
\makeatletter\def\is#1#2{\@ifstar{#1}{#2}}\makeatother
@für Schleife: \@for\command:={list}\do{commands}
Beispiel :
\makeatletter
\@for\sun:={rising,setting}\do{The sun is \sun.}
\makeatother
Es wird folgender Text erstellt: Die Sonne geht auf. Die Sonne geht unter.
@Whilenum-Schleife: \@whilenum condition\do{commands}
Beispiel :
\makeatletter
\newcounter{int}
\@whilenum\value{int}<10\do
{\stepcounter{int}\ifthenelse{\isodd{\value{int}}}{\theint}{}}
\makeatother
Dieser Code schreibt ungerade Zahlen von 1 bis 9.
"loop repeat" Schleife: \loop {commands} \ifnum condition \repeat
Führt Befehle aus, bis die Bedingung erfüllt ist.
Beispiel
\setcounter{int}{1}
\loop
\theint
\addtocounter{int}{2}
\ifnum \value{int}<10
\repeat
Dieser Code funktioniert genauso wie die @whilenum-Schleife.
Ein Beispielcode:
\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}
Verwenden von Schleifen in Tikz
Loops sind in Tikz nützlich.
Der folgende Code zeichnet eine Uhr ohne Zahlen:
\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}
Das Ergebnis: