latex
Contadores, si enunciados y bucles con látex.
Buscar..
Contador declaración, inicialización e impresión a pdf.
Es posible utilizar variables enteras con látex. Para crear una nueva variable necesitamos el \newcounter{name}
, donde name
es el nombre del nuevo contador. El name
debe contener sólo letras. Este comando crea uno nuevo con el nombre \thename
. Con este comando podemos imprimir la variable del name
en el papel. El valor inicial del name
es 0. Para dar valor a "nombre" podemos usar \setcounter{name}{n}
donde n es un número entero. \value{name}
es una función que regresa con el valor 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}
Operaciones con contadores.
Este ejemplo muestra cómo usar operaciones matemáticas con contadores. Puede ser útil para los bucles de látex.
Adición: \addtocounter{num}{n}
este comando agrega n
a num
, donde num
es un contador y n
es un entero positivo.
Resta: \addtocounter{num}{-n}
este comando resta n
de num
, donde num
es un contador y n
es un entero positivo.
Multiplicación: \multiply\value{num} by n
este comando multiplica num
por n
, donde num
es un contador y n
es un entero.
División \divide\value{num} by n
este comando divide num
por n
y obtiene la parte entera del cociente ( num
es un contador y n
es un entero)
\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}
declara contador. \setcounter{num}{3}
establece el valor \setcounter{num}{3}
en 3.
\addtocounter{num}{10}
agrega 10 a num.
\addtocounter{num}{-3}
resta 3 de num.
\stepcounter{num}
agrega 1 a num
\multiply\value{num} by \value{num}
cuadrados num.
\multiply\value{num} by 2
dobles num.
\divide\value{num} by 60
divide num por 60 y obtiene la parte entera.
El resultado del código: 13 \\ 10 \\ 11 \\ 121 \\ 242 \\ 4
(\\ simboliza nueva línea)
El paquete intcalc agrega algunas otras operaciones de enteros, por ejemplo, mod, pow, sng, abs, inv ...
Si declaraciones
En el látex podemos usar comandos incorporados para ejecutar el código si las condiciones son verdaderas o no.
Comparando dos enteros: \ifnum\value{num}>n {A} \else {B}\fi
Este código ejecuta A si num. N más B. Podemos sustituir> con <y =.
Si un número es impar: \ifodd\value{num} {A}\else {B}\fi
Si num es impar entonces ejecuta A else B.
Si con condición: \ifthenelse{condition}{A}{B}
Tenemos que cargar el paquete para usar este comando. Si la condición es verdadera, entonces se ejecuta A else B.
Es posible crear una condición compleja con \( \)
, \AND
, \OR
, \NOT
.
Por ejemplo: \ifthenelse{\(\NOT 4<2 \OR 4>11\)\AND\isodd{4}}{A}{B}
Esta pieza de código escribe "B" en la página. \NOT 4<2
es verdadero y 4>11
es falso. Si conectamos una declaración falsa y una verdadera con "O", el resultado es verdadero. Entonces \(\NOT 4<2 \OR 4>11\)
es verdadero. \isodd{4}
es falso porque 4 es par. Una declaración falsa y verdadera conectada con "AND" es falsa, por lo que la salida es B.
Un código de ejemplo:
\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}
Bucles - repitiendo cosas
Podemos crear bucles en látex. Son similares pero no tan personalizables como los bucles en otros lenguajes de programación. Una alternativa para usar loops es @loops. Si usamos un comando que incluye "@" en su nombre, debemos colocarlo entre \makeatletter
y \makeatother
. No está permitido usarlos en una macro que describe una nueva definición.
Incorrecto:
\def\is#1#2{\makeatletter\@ifstar{#1}{#2}\makeatother
Derecha:
\makeatletter\def\is#1#2{\@ifstar{#1}{#2}}\makeatother
@for loop: \@for\command:={list}\do{commands}
Ejemplo :
\makeatletter
\@for\sun:={rising,setting}\do{The sun is \sun.}
\makeatother
Crea el siguiente texto: El sol está saliendo. El sol se esta poniendo.
bucle @whilenum: \@whilenum condition\do{commands}
Ejemplo :
\makeatletter
\newcounter{int}
\@whilenum\value{int}<10\do
{\stepcounter{int}\ifthenelse{\isodd{\value{int}}}{\theint}{}}
\makeatother
Este código escribe números impares del 1 al 9.
"repetición de bucle" bucle: \loop {commands} \ifnum condition \repeat
Ejecuta comandos hasta que la condición sea verdadera.
Ejemplo
\setcounter{int}{1}
\loop
\theint
\addtocounter{int}{2}
\ifnum \value{int}<10
\repeat
Este código hace lo mismo que @whilenum loop.
Un código de ejemplo:
\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}
Usando bucles en Tikz
Los bucles son útiles en Tikz.
El siguiente código dibuja un reloj sin números:
\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}
El resultado: