Comandos Latex
Comandos Latex
Comandos Latex
Joseph C. Várilly
Universidad de Costa Rica, 2060 San José, Costa Rica
TEX es un software para levantamiento y fotocomposición de textos técnicos de alta calidad gráfica.
Actualmente hay diversas versiones de TEX para computadoras grandes y pequeñas. Algunas de
las versiones mas usadas en la actualidad son PC TEX y emTEX para sistemas PC-DOS, MikTEX
y DviWindo para sistemas basadas en Windows, Textures y OzTEX para Macintosh, teTEX para
sistemas Unix.
El manual principal es The TEXbook de Donald E. Knuth, el creador del sistema. Ese manual
está organizado en tres niveles paralelos: (1) para usuarios iniciales, (2) para usuarios intermedios,
y (3) para expertos. Este documento no pretende reemplazar el TEXbook, sino proporcionar una
introducción en español en sus niveles básico e intermedio para personas que pretenden usar TEX
para levantar escritos con una alta proporción de simbologı́a matemática. Los detalles que aquı́ se
omiten pueden encontrarse en alguna parte del TEXbook, que es el libro de referencia canónica.
TEX es una marca registrada del American Mathematical Society. El nombre puede pronun-
ciarse tej o tecs según el gusto de cada quien.
1
Retomaremos cada una de estas funciones especiales oportunamente. Por ahora, basta señalar
que los caracteres de esta lista están reservados para usos especiales y que al principio hay que tener
especial cuidado al teclear texto que contenga cualquiera de ellos.
Hay algunos otros caracteres que también se obtienen directamente del teclado, que son fáciles
de olvidar, porque son invisibles: son el espacio en blanco producido al tocar la barra de espacia-
miento, el retorno de carro, la tabulación y el corte de página. (El corte de página se obtiene de
ciertos procesadores de palabras; su efecto en TEX es equivalente a dos retornos de carro.) Para
denotar un toque explı́cito a estas teclas, usaremos en estos apuntes los sı́mbolos siguientes:
Sı́mbolo Significado
un espacio tecleado (= un toque a la barra),
← un retorno de carro,
→ una tabulación.
2
1.2.3. Ligaduras.
Algunas pares o ternas de letras tecleadas se combinan en impresión para producir un carácter
compuesto. Ellos son ff, fi, fl, ffi y ffl, que se imprimen como ff, fi, fl, ffi, y ffl.
El programa TEX posee (como parte de su estructura interna) una unidad lectora (un “scanner”,
para usar un anglicismo de moda) que lea los caracteres tecleados y automáticamente combina los
pares o ternas que forman estas ligaduras. El tecladista no tiene que hacer nada especial.
Los caracteres que no son letras también pueden formar ligaduras; de hecho, las barras se
obtienen al aplicar este artificio al par -- y a la terna --- ; también, las comillas dobles se arman
ası́ de ‘‘ y ’’.
Para imprimir texto en español, se usan otras dos ligaduras: ?‘ produce el signo de interrogación
inicial ¿ mientras !‘ produce el signo de admiración inicial ¡.
3
2 Comandos en TEX
4
\A, \a, podrı́an ser “palabras de control”; pero \quie bra, \Parte2, \uno-a-uno, \er,ror no son
palabras de control.
Para asegurar que los espacios en blanco sirvan para terminar palabras de control, TEX tiene
una regla muy importante: Cuando un espacio en blanco sigue una palabra de control,
TEX lo desecha; y sigue desechando espacios en blanco hasta llegar al próximo carácter visible. A
modo de ejemplo, la palabra de control \TeX produce el logo ‘TEX’, pero
al teclear: \TeX es muy feo, se obtiene: TEXes muy feo
ya que se bota el espacio después de \TeX. Esto ocurre pocas veces, pero hay un remedio sencillo:
el sı́mbolo de control \ produce un espacio en impresión que no desaparece. Luego se debe teclear:
\TeX\ es muy feo.
Ahora, solo hay que aprender los significados de todos los comandos que Plain TEX entiende,
y dispondremos de una maquinaria capaz de producir los más variados efectos en impresión!
5
2.5 Palabras claves
Hay una pequeña colección de palabras especiales, que no son palabras de control (y por ende
no empiezan con vara \), que TEX reconoce en ocasiones especiales. Por ejemplo, si es necesario
declarar una longitud, como 3 cm, por ejemplo, TEX reconocerá la “palabra” cm como sinónimo de
“centı́metro”. (Ası́, se puede teclear \hsize=16.5cm para asignar el valor “dieciséis centı́metros
y medio” al parámetro \hsize.) Cuando no se espera una unidad de longitud, el tecleo de cm
imprime una palabra de dos letras: cm. Las cuatro funciones especiales que demandan estas palabras
claves son: medidas de longitud, confección de cajas, confección de goma y operaciones aritméticas
internas. La lista completa de palabras claves es:
Función Palabras Claves
Aritmética: at, by, scaled, true
Medidas: bp, cc, cm, dd, em, ex, in, mm, mu, pc, pt, sp
Cajas: depth, height, spread, to, width
Goma: fil, fill, filll, minus, plus
2.6 Agrupamiento
Un archivo fuente de TEX es un archivo de texto con comandos intercalados; pero es frecuente
encontrar casos en donde uno quiere limitar el alcance de algunos comandos. Para poder hacer ésto,
TEX usa las llaves { } para delimitar bloques de texto a los cuales estos comandos se aplican. Por
ejemplo, el comando \bf efectúa un cambio de estilo a letra negrilla. En el código
las llaves limitan el efecto del cambio de estilo a la palabra negrilla. Los cambios ambientales
efectuados dentro de las llaves se pierden al salir del grupo o bloque que ellas delimitan. En este
sentido, rodear un bloque de texto con llaves es equivalente a la operación de pantalla de seleccionar
el bloque con el ratoncillo, con la diferencia importante que la demarcación con { } es permanente,
pues queda grabado en el archivo.
[[ Es importante distinguir entre las llaves { }, los corchetes [ ] y los paréntesis ( ) ; sólo las
llaves poseen la función de agrupamiento en Plain TEX. ]]
Es a veces incómodo que las palabras de control, como \TeX, comen los espacios en blanco que
los siguen. Una manera de evitar eso es la de incluir el comando entre llaves: {\TeX}, ya que la llave
derecha, por no ser letra, termina el comando, y los espacios en blanco que siguen no son ignorados.
Hay otros comandos que actúan sobre un bloque de texto. Entonces ese bloque debe indicarse
explı́citamente, colocándolo entre llaves. Por ejemplo,
tiene el efecto de colocar “Esta frase debe centrarse.” en un renglón aparte en forma centrada;
las llaves delimitan el argumento de \centerline, que es el bloque de texto por destacar. Puede
colocarse un bloque dentro de otro, ası́:
6
2.7 Un archivo fuente ejemplar
Consideremos ahora un pequeño ejemplo de un trabajo en Plain TEX.
% Un ejemplo de archivo fuente para TeX
\input option_keys
\hrule
\vskip 2cm
\line{Izquierda \hfill Derecha}
\vskip 1.5cm
\centerline{\bf Tı́tulo Centrado} \medskip
\centerline{\sl El Autor} \bigskip
\medskip
\hrule
\bye
Supóngase (en un exceso de realismo) que usted dispone del programa Textures para Macintosh,
el más “user-friendly” de todas las implementaciones de TEX. Abra el ı́cono ‘TexturesTM ’ y teclee
este ejemplo (tal cual) en la ventana ‘untitled’ que se abre automáticamente. Guarde el archivo con
algún nombre (‘Tonto’, digamos) y elige la función Typeset del menú también llamado ‘Typeset’.
El directorio TEX inputs, o el mismo directorio donde se guarda el archivo ‘Tonto’, debe incluir
previamente el archivo ‘option_keys’ que siempre acompaña al programa Textures. Se abre una
nueva ventana TeX log y allı́ aparece, de inmediato, unos mensajes como los siguientes:
Textures 2.0.2 (preloaded format=plain 96.6.7) 24 AUG 1998 20:29
(Tonto (option_keys) [1]
Output written on Tonto (1 page, 833 bytes).
elapsed seconds = 0.28
El archivo fuente contiene dos párrafos cortos de texto (separados por una lı́nea en blanco) y
varios comandos antes y después para formatear el texto. La primera lı́nea empieza con el carácter
% que “esconde” todo a su derecha: esta lı́nea es un comentario. La segunda lı́nea lee un archivo
externo macteclado que contiene los convenios para el tecleo de acentos en español. (Esto es
necesario ya que otros sistemas operativos, como MS-DOS, organizan los caracteres acentuados en
una forma distinta.) Los comandos \vskip, \medskip y \bigskip solicitan separación vertical de
bloques de texto. Los \hrule inicial y final trazan reglas horizontales en la página, cuya anchura
es la del área de texto en esa página. Los \centerline producen renglones centrados, el primero
en letra negrilla (obtenida por \bf) y el segundo en letra oblicua (debido a \sl). La primera lı́nea
escrita es un \line, que extiende a lo ancho del área de texto escrito, y contiene un resorte \hfill
que se estira para empujar las dos partes de esta lı́nea contra los márgenes izquierda y derecha.
El último comando del ejemplo es \bye, que indica a TEX que debe terminar el levantamiento.
Cada archivo fuente de Plain TEX debe terminar con \bye o alguna instrucción equivalente.
De ahora en adelante veremos, de modo más o menos sistemático, los diversos comandos legales
que se pueden incluir en un archivo fuente y los efectos que cada uno produce. La estructura de un
documento que TEX debe levantar es esencialmente la misma de nuestro pequeño ejemplo: primero
hay unos comentarios y comandos preliminares, sigue el texto del documento con algunos comandos
de formateo intercalados, y se termina el archivo fuente con el comando \bye.
7
3 Tipos y tamaños de letra
8
3.3 Estilos matemáticos
Los caracteres que se usan en fórmulas matemáticas también vienen en varias fuentes de Com-
puter Modern. Las letras en matemáticas representan variables: a, b, x, y, f , etc., que normalmente
no se juntan para formar palabras. Es usual usar para estas variables un estilo itálico con algunas
diferencias con el itálico usual de texto. Este estilo está en archivo bajo la consigna cmmi, y lo
llamaremos matitálico.
Existen también dos fuentes de sı́mbolos: cmsy denota una colección de sı́mbolos matemáticos,
como ⊕, →, ∇, ∞. Esta fuente también incluye un abecedario de letras caligráficas mayúsculas:
A, B, . . . , Z son
P sı́mbolos
R N matemáticos de este alfabeto. Finalmente, hay una fuente de sı́mbolos
grandes, como , , , etc.: esta fuente es cmex.
En Plain TEX, las fuentes cmmi y cmsy aparecen en tamaños de 10, 7 y 5 puntos; los tamaños
menores se emplean en exponentes y subı́ndices, y en fracciones como ab . Los sı́mbolos grandes
ocupan una sola fuente, cmex10.
Para usar sı́mbolos matemáticos, es necesario encerrarlos entre sı́mbolos de dólar: $xy$ pro-
duce xy. El signo $ es un carácter especial, cuya función es de encender y apagar el ambiente
de sı́mbolos matemáticos. Por ejemplo, x + y produce x + y (tres caracteres en letra romana),
mientras $x + y$ produce x + y, una expresión matemática que representa la suma de las dos varia-
bles x, y. No sólo aparecen las variables en la fuente “matitálica”, sino que el signo + adquiere un
espaciamiento apropiado a su alrededor. Estos “efectos matemáticos” comienzan después del primer
signo de dólar $ tecleado; con el segundo $, se regresa a texto ordinario. Si se omitiera cualquiera
de los dos $, se podrı́a producir un efecto tipográfico no deseado. Para prevenir eso, TEX insiste que
ciertos comandos estén reservados para el “modo matemático” que ocurre entre los signos de dólar.
4 Fórmulas matemáticas
TEX arma las fórmulas matemáticas de modo que sean fáciles de teclear. Una fórmula complicada
es usualmente un juego de subfórmulas menos complicadas conectadas de manera simple; cada
subfórmula tiene componentes menos complicados aún. En otras palabras, lo que hay que saber es:
(i) cómo teclear fórmulas simples; (ii) cómo combinar subfórmulas.
La fórmula más simple de todas es una letra, como x, que se obtiene al teclear $x$. Recuerde
que el carácter $ es un “paréntesis matemático”: lo que está entre dos signos $ está en un “modo
matemático”, en donde las reglas de impresión son diferentes de las reglas para texto corriente.
Por ejemplo, $x$ da una letra matitálica x, mientras $2$ da el dı́gito romano 2: esto es un
convenio establecido para fórmulas matemáticas, incorporado automáticamente en TEX. Las teclas
de puntuación producen caracteres romanos en impresión, salvo el guión $-$ que produce un signo
menos −.
Es un error, casi inevitable al teclear un documento largo, omitir un sı́mbolo $ de vez en cuando;
cuando esto ocurre, TEX tendrá que interpretar texto como fórmulas y viceversa, y probablemente
protestará contra ese abuso. Este problema disminuye con la práctica.
Dos sı́mbolos de dólar seguidos, $$, encienden y apagan el modo matemático de despliegue, en
donde una fórmula se destaca en un renglón aparte para mayor legibilidad.
Las reglas de espaciamiento en fórmulas matemáticas son complejas y rı́gidas: es mejor dejar
este trabajo en las manos competentes de TEX. Por lo tanto, se establece un convenio especial
dentro del “modo matemático”: TEX ignora todos los espacios tecleados mientras esté en el modo
matemático. Ası́, si se teclea $(x + y)/(x - y)$ o $(x+y)/(x-y)$ o bien $(x+y) / (x-y)$, el
resultado (x + y)/(x − y) es exactamente el mismo. Por supuesto, se requieren algunos espacios
tecleados para terminar palabras de control; pero aparte de eso, el tecleo de espacios dentro de
una fórmula puede hacerse en una forma totalmente arbitraria. Se aconseja intercalar suficientes
espacios para que el tecleo de la fórmula sea fácilmente legible; por ejemplo, es un buen hábito
rodear verbos como ‘=’ con espacios en blanco.
9
4.1 El bestiario de sı́mbolos
4.1.1. Caracteres matemáticos.
Las letras (de A a Z y de a a z) representan “variables” en ecuaciones, etcétera, y se representan
con letras matitálicas. Los dı́gitos de 0 a 9 y los caracteres de puntuación ! ? . | / ‘ @ " se
imprimen con letras romanas. Todos estos caracteres se imprimen seguidos, sin colocar espacio extra
a su alrededor.
4.1.2. Letras griegas.
En el modo matemático, se dispone de un gran surtido de sı́mbolos especiales que normal-
mente no se ocupan en texto corriente. En primer lugar, tenemos el alfabeto griego: si se teclea
$\alpha,\beta,\gamma$, se obtiene α, β, γ. Las mayúsculas requieren comandos con letra inicial
mayúscula: $\Gamma,\Delta,\gamma,\delta$ produce Γ, ∆, γ, δ. He aquı́ la lista:
α \alpha θ \theta o o υ \upsilon
β \beta ϑ \vartheta π \pi φ \phi
γ \gamma ι \iota $ \varpi ϕ \varphi
δ \delta κ \kappa ρ \rho χ \chi
\epsilon λ \lambda % \varrho ψ \psi
ε \varepsilon µ \mu σ \sigma ω \omega
ζ \zeta ν \nu ς \varsigma
η \eta ξ \xi τ \tau
10
4.1.4. Operaciones binarias.
Los caracteres +, -, * representan operaciones binarias matemáticas (+ es sumar, - es restar) que
ligan dos cosas: la suma $2+3$ expresa que 2 y 3 se combinan de una cierta forma (es irrelevante que
el resultado sea 5) y se imprime 2+3 con un poco de espacio alrededor del signo +. Otras operaciones
se producen con comandos: $2 \times 3$, $8 \div 4$, $n \pm 1$, $A \cap B$ producen 2 × 3,
8 ÷ 4, n ± 1, A ∩ B. Aquı́ está la lista completa de operaciones binarias:
+ + − - ∗ *, \ast ? \star
± \pm ∩ \cap \odot † \dagger
∓ \mp ∪ \cup ⊗ \otimes ‡ \ddagger
\ \setminus ] \uplus ⊕ \oplus o \wr
· \cdot u \sqcap \ominus / \triangleleft
× \times t \sqcup \oslash . \triangleright
÷ \div \diamond
\bigcirc 4 \bigtriangleup
∨ \vee, \lor ◦ \circ q \amalg 5 \bigtriangledown
∧ \wedge, \land • \bullet
11
4.1.6. Flechas.
Una clase particular de relaciones, que abundan en escritos matemáticos, son las flechas. TEX
tiene un gran surtido de flechas horizontales y verticales:
← \gets, \leftarrow ←− \longleftarrow ↑ \uparrow
⇐ \Leftarrow ⇐= \Longleftarrow ⇑ \Uparrow
→ \to, \rightarrow −→ \longrightarrow ↓ \downarrow
⇒ \Rightarrow =⇒ \Longrightarrow ⇓ \Downarrow
↔ \leftrightarrow ←→ \longleftrightarrow l \updownarrow
⇔ \Leftrightarrow ⇐⇒ \Longleftrightarrow m \Updownarrow
7 → \mapsto 7−→ \longmapsto % \nearrow
←- \hookleftarrow ,→ \hookrightarrow & \searrow
( \leftharpoonup * \rightharpoonup . \swarrow
) \leftharpoondown + \rightharpoondown - \nwarrow
*
) \rightleftharpoons ⇐⇒ \iff
12
4.1.9. Operadores grandes.
P En matemáticas,
R ocurren muchas sumas e integrales, que se escriben con sı́mbolos especiales:
P
para sumas,R para integrales. Para teclearlos, solo hay que saber que \sum produce y que
\int produce . En despliegues, estos sı́mbolos tienen un tamaño mayor de lo que tienen en texto;
por eso, se llaman “operadores grandes”.
La lista completa de operadores grandes es la que sigue:
P X T \ J K
\sum \bigcap \bigodot
Q Y S [ N O
\prod \bigcup \bigotimes
` a F G L M
\coprod \bigsqcup \bigoplus
Z _ ]
R W U
\int \bigvee \biguplus
I
H V ^
\oint \bigwedge ∫ ∫ \smallint
13
Para teclear un exponente y un subı́ndice simultáneamente, no hay ambigüedad: $x_k^2$
y $x^2_k$ ambos producen x2k , con la k directamente debajo de la 2. Es preferible, como regla de
estilo, teclear el subı́ndice antes del exponente, es decir, obtener x2k con $x_k^2$, pero se permite
invertir ese orden.
Un exponente que ocurre mucho en matemáticas es la “prima” 0 , que se obtiene con el comando
\prime; ası́, $x^\prime$ produce x0 , $y^{\prime\prime}$ produce y 00 , etcétera. Para mayor co-
modidad, Plain TEX permite el uso del apóstrofe ’ en modo matemático como sinónimo de \prime;
entonces se pueden obtener x0 y y 00 con $x’$ y $y’’$ simplemente.
14
Para enumerar una fórmula con una “etiqueta” (un número entre paréntesis, digamos) al lado
de una fórmula desplegada, teclee \eqnohetiquetai al final del despliegue, justo antes de los $$
finales. Todo lo que viene entre el \eqno y los $$ se coloca al lado derecho del despliegue. Para
obtener el número al lado izquierdo, teclee \leqno en vez de \eqno, pero siempre después de la
ecuación principal. Por ejemplo:
$$
x^2 - y^2 = (x - y)(x + y), \eqno(42)
$$
mientras
$$
x^3 - y^3 = (x - y)(x^2 + xy + y^2). \leqno(43)
$$
(43) x3 − y 3 = (x − y)(x2 + xy + y 2 ).
Se recomienda, para mantener uniformidad, usar solamente \eqno o solamente \leqno en un docu-
mento, sin mezclarlos.
4.6 Fracciones
Es común encontrar en fórmulas matemáticas diversas fracciones y otras cosas con unos sı́mbolos
montados sobre otros:
1 n+1 n+1
y y
2 3 3
se obtienen en despliegues al teclear $$1 \over 2$$, $$n+1 \over 3$$, $$n+1 \choose 3$$. Si
se teclea $1 \over 2$ y $n+1 \choose 3$, se obtienen 12 y n+1 3 en un tamaño menor dentro del
renglón de texto, lo cual dificulta su lectura; por eso, se acostumbra desplegar las fracciones cuando
sea posible.
El comando \over divide la fórmula en dos partes: la parte que precede el \over es el numerador
de la fracción, y la parte que lo sigue es el denominador. Si la fracción no abarca toda la fórmula,
hay que limitar el alcance de \over con llaves alrededor de la fracción:
x + y2
$$ x+y^2 \over k+1 $$
k+1
x + y2
$$ {x+y^2 \over k}+1 $$ +1
k
y2
$$ x+{y^2 \over k}+1 $$ x+ +1
k
2
y
$$ x+{y^2 \over k+1} $$ x+
k+1
2
$$ x+y^{2 \over k+1} $$ x + y k+1
Como regla general, es aconsejable encerrar una fracción entre llaves siempre; esto evita dificultades
sobre el alcance de \over.
Al igual que $a_b_c$ y $a^b^c$, la frase $a \over b \over c$ es ambigua y por lo tanto es
prohibida; hay que usar llaves para distinguir las partes de las fracciones:
$$ a $$
b a
{{a \over b} \over c} {a \over {b \over c}} b
c
$$ $$ c
15
a
Debido al cambio de tamaños, es mejor usar la raya / para formar fracciones: b = a/b. El ejemplo
anterior se ve mucho mejor de la forma:
$$ $$
a/b a
{a/b \over c} {a \over b/c}
c b/c
$$ $$
Hay otros dos comandos que tienen un formato similar a \over, y tienen las mismas reglas de
alcance: \atop (“encima”) da una fracción sin barra, y \choose da una fracción sin barra encerrada
entre paréntesis:
$$
n n
{n \atop k+1} \neq {n\choose k} 6=
k+1 k
$$
[[ El nombre \choose se usa porque 52 significa el número de maneras de elegir 2 objetos de entre
una lista de 5 objetos dados. Resulta que hay 15 formas diferentes de hacer esa elección: 52 = 15. ]]
Aquı́ e está en el estilo de texto (o de despliegue) y su exponente está en el estilo de ı́ndices. Cuando
este exponente es {1\over2}, las cifras 1 y 2 están en el estilo de ı́ndices de segundo orden. Los
\scriptstyle en el ejemplo dan estas cifras en un tamaño más grande. Sin embargo, en casos como
este, se recomienda usar la forma 1/2, que tiene mejor apariencia tipográfica.
16
es el siguiente:
\arccos \cos \csc \exp \ker \limsup \min \sinh
\arcsin \cosh \deg \gcd \lg \ln \Pr \sup
\arctan \cot \det \hom \lim \log \sec \tan
\arg \coth \dim \inf \liminf \max \sin \tanh
Figura 4.10. Funciones matemáticas con letras romanas
Estas palabras especiales pueden llevar ı́ndices mediante _ y ^, como por ejemplo:
$$
sin2 x
\lim_{x\to0} {\sin^2x \over x^2} = 1 lim =1
x→0 x2
$$
(observe el uso de \to para producir la flecha →.)
4.8 Delimitadores
4.8.1. Delimitadores en tamaños \big y \bigg.
Los delimitadores vienen en varios tamaños. A veces un tamaño más grande de paréntesis es
apropiado para encerrar una subfórmula que ya incluye otros paréntesis; esto ayuda la distinción
visual de la jerarquı́a de fórmulas. Lo mismo puede suceder con corchetes, barras, y otros delimita-
dores. Los tamaños más grandes se obtienen al colocar \bigl ante un delimitador izquierdo y \bigr
ante un delimitador derecho. Por ejemplo,
$\bigl(x-s(x)\bigr)\bigl[y-s[y]\bigr]$ x − s(x) y − s[y]
$\bigl| |x|+|y| \bigr|$ |x| + |y|
En despliegues, se pueden colocar \biggl y \biggr ante los delimitadores respectivos para
obtener delimitadores aun más grandes. Esto es particularmente apropiado para encerrar fracciones:
$$
a+b
\biggl({a+b \over c+d}\biggr)
c+d
$$
[[ Hay otros dos tamaños de delimitadores: \Bigl y \Bigr dan un tamaño intermedio mayor que
\bigl y \bigr pero menor que \biggl y \biggr; también hay \Biggl y \Biggr, que son mayores
aún que \biggl y \biggr. Estos pueden emplearse en despliegues, pero son de poco uso. Los
delimitadores \lgroup, \rgroup, \lmoustache, \rmoustache se obtienen solamente en los tamaños
\Big, \bigg o mayor. ]]
4.8.2. Los comandos \left y \right.
Otro método de encerrar una fórmula con delimitadores es el de colocar \left ante el delim-
itador izquierdo, y \right ante el delimitador derecho. Con esta opción, TEX tome nota de la
subfórmula entre el \lefthdelimitador i y el \righthdelimitador i, calcula rápidamente su extensión
vertical, y luego elige automáticamente el tamaño mı́nimo que deben llevar los hdelimitador i para
encerrar la subfórmula intermedia. Por ejemplo, $\left( a+b \right)$ produce (a + b), que es
idéntico al resultado de teclear $(a+b)$; pero observe:
$$ 3
1
1+\left( 1 \over 1-x^2 \right)^3 1+
1 − x2
$$
pues en este caso se eligen \biggl( y \biggr) para encerrar la fracción.
Hay dos cosas de notar acerca de \left y \right. En primer lugar, ellos funcionan como
un par de llaves para demarcar un grupo: la subfórmula 1\over1-x^2 no extiende el alcance del
\over más allá del \left( y del \right). En segundo lugar, deben aparecer en pareja: una fórmula
que empieza con un \lefthdelimitador i debe terminar con un \righthdelimitador i para que se
pueda saber cuál es la subfórmula intermedia. Si se omite un \righthdelimitador i después de un
\lefthdelimitador i, o si se omite un \lefthdelimitador i antes de un \righthdelimitador i, TEX se
sentirá ofendido y protestará contra ese abuso.
17
4.9 Matrices
Una “matriz” es un arreglo rectangular de sı́mbolos (dı́gitos, letras o subfórmulas) que se
organizan en varias filas y columnas. Las matrices normalmente aparecen en despliegues. Por
ejemplo:
$$ 1 2 3
\matrix{1 & 2 & 3\cr 4 & 5 & 6\cr 7 & 8 & 9\cr} 4 5 6
$$ 7 8 9
La fórmula
1 2 1 2
det = =1
0 1 0 1
se obtiene al teclear
$$
\det\left[ \matrix{1 & 2\cr 0 & 1\cr} \right]
= \left| \matrix{1 & 2\cr 0 & 1\cr} \right| = 1
$$
El contenido de la matriz es el argumento (entre llaves) del comando \matrix. Las filas terminan
con \cr, que es una especie de “retorno de carro” explı́cito (← sólo da un espacio en blanco). Las
columnas se separan con el carácter especial &, que en este caso juega el papel de “tabulador” entre
columnas. Los delimitadores alrededor de la matriz pueden colocarse con \left y \right.
Es muy común encerrar una matriz entre paréntesis. En Plain TEX, se usa \pmatrix{...} para
no tener que teclear \left(\matrix{...}\right). Por ejemplo,
$$
3 4
\pmatrix{3 & 4\cr 5 & 6\cr}. .
5 6
$$
(Obsérvese que aquı́ los = quedan verticalmente alineados.) Esto resulta de:
$$
\eqalign{SO(n) &= \{A : A^T A = I, \det A = 1\}, \cr
U(n) &= \{A : A^* A = I\}, \cr
SU(n) &= \{A \in U(n): \det A = 1\}, \cr
Sp(n) &= \{A \in U(2n): A^T J A = J\}. \cr}
$$
18
Otro ejemplo es:
n n
X n k X n!
E(X) = k p (1 − p)n−k = k pk (1 − p)n−k
k k!(n − k)!
k=0 k=1
n n−1
X n − 1
X (n − 1)! k−1 n−k
= np p (1 − p) = np pr (1 − p)n−1−r
(k − 1)!(n − k)! r=0
r
k=1
n−1
= np p + (1 − p) = np.
Obsérvese que en este ejemplo la fórmula abarca tres renglones (separados por \cr) pero el segundo
y el tercero tienen parte izquierda vacı́a, y por eso empiezan directamente con el tabulador &.
4.10.2. Alineamientos con etiquetas.
Si se quiere colocar etiquetas en un despliegue alineado, cada renglón constará de tres partes:
la parte izquierda, la parte derecha, y la etiqueta (que puede colocarse junto a cualquiera de los
dos márgenes). Los comandos \eqalignno y \leqalignno (el segundo coloca las etiquetas a la
izquierda) se usan para alinear las tres partes. En cada lı́nea, hay uno o dos tabuladores &: el
primero divide la izquierda y la derecha de la fórmula; si aparece un segundo &, todo lo que sigue
hasta el \cr es la etiqueta para esta lı́nea. Ejemplo:
$$
\eqalignno{
1+1 &= 2 &(9) \cr
1+1+1 &= 2+1 = 3 &(9’) \cr
1+1+1+1 &= 3+1 = 4 &(9’’) \cr}
$$
produce:
1+1=2 (9)
1+1+1=2+1=3 (90 )
1+1+1+1=3+1=4 (900 )
mientras
$$
\leqalignno{
1+2+3 &= 6, &(10) \cr
1 \times 2 \times 3 &= 6. \cr}
$$
genera la fórmula:
(10) 1 + 2 + 3 = 6,
1 × 2 × 3 = 6.
19
Obsérvese que el segundo & no hace falta si la lı́nea no tiene etiqueta.
Para colocar una fórmula centrada entre dos lı́neas de un despliegue, basta usar \eqalign{...}
o \leqalign{...} seguido por \eqno. Esto es ası́ porque estos comandos crean bloques centrados
dentro de cajas verticales; para alinearse con otras partes de la fórmula, quedan verticalmente
centradas. Por ejemplo, se obtiene:
6=1+2+3
(10) ⇐⇒ (102 )
6=1×2×3
al teclear
$$
(10) \iff \eqalign{ 6 &= 1 + 2 + 3 \cr
6 &= 1 \times 2 \times 3 \cr} \eqno(10^2)
$$
Obsérvese que la hetiquetai después de \eqno es una subfórmula y que puede llevar exponentes, etc.,
al igual que la fórmula principal.
5 Macros
Un programa tan vasto y complejo como TEX se volverı́a inmanejable si no hubiera una forma
de simplificar su uso mediante el empleo de macros. Un “macro” es un comando que sustituye una
colección más larga de caracteres y comandos, para abreviar o sistematizar trozos de texto, y ası́
ahorrar esfuerzo mental y tiempo de tecleo. Encontramos macros en varios niveles de complejidad.
\def\1{\’{\i}}
que define un nuevo macro \1 como abreviatura del juego de 6 caracteres, \’{\i}, reconocido por
Plain TEX. Después del renglón en el archivo fuente donde aparece esta definición, se acepta \1 como
sinónimo de \’{\i} y produce la ı́ tildada.
[[ Este macro es obsoleto en las versiones actuales de TEX, pues el carácter tecleado \’{\i} es
reconocido y puede emplearse directamente. Es de notar, sin embargo, que es necesario establecer
la equivalencia entre \’{\i} y el código \’{\i}, mediante algún archivo auxiliar, antes de emplear
la \’{\i} tecleada en vez de \1; y que, debido a la incompatibilidad entre las tablas de caracteres
de diferentes sistemas operativos, la versión más primitiva \1 puede usarse en documentos que se
pretenden transferir a otros sistemas. ]]
El comando \def (definición) crea nuevos macros. Su sintaxis es:
\defhcomandoi{htexto sustitutoi}
donde el hcomandoi debe ser un sı́mbolo de control, una palabra de control, o bien un “carácter
activo”. La mayorı́a de los comandos reconocidos por Plain TEX son macros también: de unos 900
comandos reconocidos, solamente 325 comandos son “primitivos” de TEX, cuyo significado depende
directamente del programa. Por ejemplo, \def es primitivo (por supuesto) pero \neq, \> y ~ son
macros. Plain TEX contiene las siguientes definiciones:
\def\neq{\not =}
\def\>{\mskip\medmuskip}
\def~{\nobreak\ }
(La liga ~ es un “carácter activo”: aunque no lleva vara, se comporta como comando y su definición
puede cambiarse.)
20
Los macros más simples (y más usados) son las sencillas abreviaturas:
\def\del{\partial}
\def\la{\lambda}
\def\p{\cdot}
\def\x{\times}
\def\UCR{Universidad de Costa Rica}
\def\BibUCR{Biblioteca de la \UCR}
$a \p b \x c = a \x b \p c$ a·b×c=a×b·c
$(\la - 1)^3 = \la^3 - 3\la^2 + 3\la - 1$ (λ − 1)3 = λ3 − 3λ2 + 3λ − 1
Las demoras son largas en la \BibUCR Las demoras . . .
Obsérvese que el macro \BibUCR contiene otro macro como parte de su definición. Esto es factible
porque los macros se “expanden” en forma automática. Más precisamente, cada \def agrega un
comando a un “diccionario” temporal de macros. Al encontrar un comando como \BibUCR en el
texto, el cual no es parte de Plain TEX, el programa busca este comando en el diccionario y lo
reemplaza por el “texto sustituto” Biblioteca de la \UCR; al leer este texto, TEX encuentra el
macro \UCR, y se repite el ciclo. La “expansión total” de \BibUCR es entonces la frase ‘Biblioteca
de la Universidad de Costa Rica’.
Las expresiones que se abrevian en macros pueden ser asaz complicadas. Ejemplos:
\def\mate{matem\’atica}
\def\unoaene{1,2,\ldots,n}
\def\sumkon{\sum_{k=0}^n}
\def\abcd{\pmatrix{a & b \cr c & d \cr}}
Obsérvese que en el último ejemplo, la plantilla \pmatrix{a & b \cr c & d \cr} contiene llaves.
Es lógico que sea la segunda llave derecha } y no la primera (que sigue &d \cr) la que cierra el
“texto sustituto”. Para asegurar que ası́ sea, TEX demanda que el texto sustituto sea “equilibrado”,
es decir, que cada llave { que abre un grupo sea seguido por una llave } que cierre este grupo, dentro
del “texto sustituto”.
La necesidad de llaves internas se ve con el siguiente ejemplo. La definición
\def\R{\bf R}
produce un efecto no deseable: cuando se usa \R en el archivo fuente, se efectua un cambio al estilo
negrilla, porque \R es remplazado por \bf R; ası́, la frase
producirı́a, en impresión:
pero ası́ se pierde toda la utilidad del macro, cuyo propósito principal es de evitar el tecleo de llaves.
La definición correcta es
\def\R{{\bf R}}
pues ahora \R se reemplaza por {\bf R} y el cambio de estilo queda localizado. Las llaves externas
delimitan el “texto sustituto” y se eliminan; las llaves internas forman parte del texto sustituto y
se conservan en la expansión del macro.
21
5.2 Macros con un parámetro
La próxima etapa en la elaboración de macros es la inclusión de “parámetros” que representan
argumentos. Por ejemplo, un escrito sobre álgebra lineal podrı́a contener muchas instancias de vec-
tores como (x1 , . . . , xn ), (y1 , . . . , yn ), (z1 , . . . , zn ), etc. Es deseable teclear $\vector x$, $\vector
y$, $\vector z$ para representar estas frases simbólicas. La idea es que \vector sea un macro
que tome un argumento (x, y ó z, según el caso) y lo sustituye en lugares adecuados en el “molde”
( 1 , . . . , n ).
Lo que hay que teclear es:
\def\vector#1{(#1_1,\dots,#1_n)}
donde el parámetro #1 representa el eventual argumento de \vector.
En esta definición, #1 significa la “ficha” (carácter o comando) que sigue inmediatamente des-
pués de \vector, (habido cuenta de la eliminación de espacios en blanco). Ası́, $\vector\alpha$
producirá (α1 , . . . , αn ).
Si la ficha que sigue \vector es un abre-grupo {, el argumento del vector es todo el grupo.
Por ejemplo, $\vector{2x}$ produce (2x1 , . . . , 2xn ) porque el parámetro #1 es sustituido por el
contenido ‘2x’ del grupo y se inserta ‘2x’ en el molde cada vez que #1 aparece en la plantilla del
macro.
Otro ejemplo es el macro \centerline de Plain TEX (TEXbook, p. 353):
\def\centerline#1{\line{\hss#1\hss}}
Cada instancia de \centerline{htextoi} se expande en \line{\hsshtextoi\hss}. A su vez, \line
es un macro que toma un argumento y su definición es
\def\line{\hbox to\hsize}
ası́ que \line{\hsshtextoi\hss} se expande en \hbox to\hsize{\hsshtextoi\hss}. Por lo tanto,
\centerline crea una caja cuya anchura es la de la página donde aparece, y dentro de esta caja
coloca su argumento con ciertos “resortes” antes y después, para centrar el texto y dejarlo proyectar
en los márgenes.
Es muy aconsejable usar macros con parámetros para posponer decisiones finales acerca del
formato del resultado. Por ejemplo, la definición
\def\reciproco#1{{1\over#1}}
permite obtener $\reciproco7 - \reciproco8 = \reciproco{56}$ en la forma 71 − 18 = 56 1
. Si
el formato de este resultado no satisface nuestro propósito, no hay que modificar el código que
lo produce, sino que es cuestión de cambiar la definición del macro \reciproco. Por ejemplo, si
usamos
\def\reciproco#1{1/#1},
el mismo código genera el resultado: 1/7 − 1/8 = 1/56.
22
La regla de sustitución es sencilla: cada vez que \fila aparece en el archivo fuente, se buscan las
dos fichas (o grupos) inmediatamente siguientes. La primera reemplaza #1 y la segunda reemplaza
#2; en ambos casos, se desechan las llaves exteriores que demarcan un grupo. Por ejemplo:
En \fila xn, #1 ←− x, #2 ←− n;
en \fila\alpha{p+q}, #1 ←− α, #2 ←− p + q;
en \fila{ab}5, #1 ←− ab, #2 ←− 5;
en \fila{3x}{2n}, #1 ←− 3x, #2 ←− 2n.
Figura 5.1. Sustitución de argumentos en macros
Un macro muy favorecido por los matemáticos es
\def\frac#1#2{{#1\over#2}}
que permite teclear 1 + 14 = 54 en la forma $1 + \frac14 = \frac54$ en vez de la forma básica,
que es más incómoda: $1 + {1\over 4} = {5\over 4}$, pues el macro se hace cargo de colocar
las llaves obligatorias en los lugares correctos. Se abandona la sintaxis ordinaria de una fracción
(númerador sobre denominador) y en cambio se obtiene la sintaxis funcional : una fracción es una
función de su numerador y de su denominador.
El manual de LaTEX aconseja a sus usuarios teclear \frac{3}{5} en vez de \frac35 para
obtener 53 . En ambos casos, las sustituciones son:
#1 ←− 3, #2 ←− 5,
y la expansión del macro es {3\over 5}. Siempre se pueden rodear argumentos de un macro con
llaves, aunque algún argumento conste de una sola ficha, porque las llaves exteriores se desechan
antes de la sustitución de parámetros. Esto resalta los argumentos del macro al costo de teclear
pares de llaves redundantes, y es una buena práctica para principiantes. Sin embargo, con un poco
de experiencia se aprende a desechar las llaves redundantes.
TEX permite hasta un máximo de 9 parámetros en un macro. La única restricción que impone es
que el orden natural #1#2...#9 debe usarse después del comando por definir; dentro de la plantilla,
los parámetros pueden ocurrir en cualquier orden (o no ocurrir del todo). Por ejemplo, en la teorı́a
del momento angular, se usan los llamados “coeficientes de Clebsch–Gordan”, que algunos autores
j1 j2 j
escriben Cm , otros usan hj1
1 m2 m
m1 j2 m2 |jmi, algunos ponen hj1 m1 j2 m2 |(j1 j2 )jmi, y también hay
j1 j2 j
autores que usan . En cada caso, se debe teclear
m1 m2 m
\cleb{j_1}{j_2}{j}{m_1}{m_2}{m}
y definir (o redefinir) el macro \cleb según el formateo deseado. Las tres primeras variantes se
obtienen por:
\def\cleb#1#2#3#4#5#6{C^{#1#2#3}_{#4#5#6}}
\def\cleb#1#2#3#4#5#6{\langle#1#4#2#5|#3#6\rangle}
\def\cleb#1#2#3#4#5#6{\langle#1#4#2#5|(#1#2)#3#6\rangle}
y se pueden obtener otras variantes por simples ajustes a éstas.
23
Teorema 2.4. Los números primos p > 2 son impares.
La definición de \proclaim (TEXbook, p. 202) es esencialmente la siguiente:
\def\proclaim#1. #2\par{\medbreak\noindent
{\bf#1.\enspace}{\sl#2}\par\medbreak}
Los \medbreak producen una separación vertical extra antes y después del enunciado del “teorema”.
El \noindent suprime la sangrı́a al inicio de este párrafo, para que el identificador esté justificado
a la izquierda. El primer argumento es todo lo que antecede la primera ocurrencia de ‘. ’ (en el
ejemplo, la frase ‘Teorema 2.4’) y el segundo argumento es lo que sigue, hasta la próxima lı́nea
en blanco. Obsérvese que se desechan los separadores de argumentos ‘. ’ y ‘\par’, y que el texto
sustituto del macro debe restaurarlos o reemplazarlos por algo apropiado. Aquı́ ‘. ’ es reemplazado
por ‘.\enspace’, que da un espacio un poco más ancho que un espacio normal; y el ‘\par’ es
restaurado explı́citamente. El efecto total es de crear un párrafo especial sin sangrı́a, destacado por
separación vertical del resto del texto, con un identificador en negrilla y el resto del texto en letra
oblicua. Este formateo no tiene efecto alguno sobre el párrafo que sigue.
24
Para obtener la letra α en texto, se puede teclear $\alpha$. Si ocurre muchas veces, uno puede
abreviar: \def\a{$\alpha$}. Pero esta abreviatura no funcionará en fórmulas, porque la expansión
del macro \a resulta en
y ahora los ‘\alpha’ quedan fuera de modo matemático, dando lugar a varias protestas de TEX. Lo
correcto es definir el macro
El número henteroi debe tomar un valor (k, digamos) no negativo; se ejecuta uno de los casos
k = 0, 1, 2, . . . , n, siendo n el número de ocurrencias de ‘\or’. Si k > n, se ejecuta hotros casosi.
El TEXbook (p. 406) explica como imprimir la fecha en forma automática (usando el reloj
interno de la computadora):
\def\today{\ifcase\month\or
January\or February\or March\or April\or May\or June\or
July\or August\or September\or October\or November\or
December\fi\ \number\day, \number\year}
Obsérvese que cada \if... debe terminar con su propio \fi; esta es una medida de seguridad para
que las condicionales siempre estén correctamente encajadas.
25
diversos sistemas operativos. Es aconsejable usar solamente los códigos inferiores a 127 en cualquier
archivo de TEX que se piensa transferir a un aparato con un convenio distinto.
TEX agrupa los caracteres en 16 “categorı́as”, numeradas de 0 a 15. Algunos, como hnuloi y
hdeletei no se obtienen del teclado directamente, pero a veces se generan en procesadores de palabras
como Microsoft Word, y de este modo pueden entrar al archivo fuente:
Categorı́a Sı́mbolo Significado
0 \ Carácter de escape
1 { Inicio de grupo
2 } Fin de grupo
3 $ Cambio matemático
4 & Tabulador
5 ← Fin de lı́nea
6 # Parámetro
7 ^ Exponente
8 _ Subı́ndice
9 hnuloi Ignorado
10 Espacio
11 hletrai Letra
12 hotroi Otro
13 ~ Activo
14 % Comentario
15 hdeletei Inválido
Figura 6.1. Las categorı́as de caracteres que TEX establece
Las categorı́as 11 y 12 contienen la mayorı́a de los caracteres. Una hletrai puede ser mayúscula:
A, B, C, . . . , Z, o minúscula: a, b, c, . . . , z (pero la ~
N y la ~
n no son letras en versiones de TEX
anteriores a 1990). Cualquier otro carácter visible del teclado inglés tiene la categorı́a de hotroi.
Ellos son: los dı́gitos 1234567890, los caracteres de puntuación ‘!()-[]’";:,./?, los sı́mbolos
aritméticos =+<>|, el asterisco *, y la arroba @.
Cualquier carácter visible que no aparece en estas listas (como letras acentuadas, incluyendo
la ~
n), no forma parte del juego básico de 128 caracteres ASCII. Plain TEX no les asigna categorı́a
alguna. Para poder usarlos en el archivo fuente, se les asigna la categorı́a 13 (activo) de la liga ~ que
los convierte en comandos y que permite asignarlos una expansión en términos de los caracteres de
ASCII estándar. Vea, por ejemplo, el archivo option_keys que acompaña el programa Textures.
Nota: El carácter “invisible” →(la tecla de tabulación) recibe categorı́a 10 cuando TEX lo lee;
en otras palabras, una → se lee como un espacio en blanco; esto por cuanto TEX tiene su propia
manera de sangrar párrafos.
6.2 Dimensiones
6.2.1. Unidades de longitud.
TEX reconoce un buen surtido de unidades de longitud, o “dimensiones”, que se usan para
medir arreglos tipográficos. Sabe de pulgadas (en el hemisferio occidental, las hojas de papel de
tamaños carta y oficio tienen sus medidas y márgenes en pulgadas); de centı́metros y milı́metros
(para hojas A4 europeos); de puntos y picas, y sus versiones europeas didots y ciceros. Además
tiene un “punto grande” (“big point”) para las fuentes PostScript que usan las impresoras laser, y
1
posee su propia unidad secreta, la cual es 65536 de un punto!
A cada unidad, TEX da un nombre de dos letras (una “palabra clave” que no lleva vara). He
aquı́ la lista:
pt punto bp punto grande dd didot
pc pica cm centı́metro cc cicero
in pulgada (“inch”) mm milı́metro sp “scaled point”
Figura 6.2. Las dimensiones reconocidas por TEX
26
Además, TEX sabe que:
1 pc = 12 pt,
1 in = 72,27 pt = 72 bp,
1 in = 2,54 cm = 25,4 mm,
1157 dd = 1238 pt,
1 cc = 12 dd.
El “sp” se define de modo que 1 pt = 65536 sp. Internamente, TEX convierte todas las dimen-
siones a “sp” para hacer sus cálculos aritméticos con números enteros; por eso sus medidas son
siempre muy exactas.
[[ Los “puntos” de los tipos de letra de las impresoras laser, hechos con PostScript, son ‘bp’ y
no ‘pt’; de ahı́ la distinción de las dos formas de “punto”. Los tipos Computer Modern empleados
por TEX usan el punto de imprenta tradicional ‘pt’ en sus medidas. ]]
Para TEX, una dimensión es cualquier número (entero o decimal) seguido por uno de esos nueve
pares de letras; ası́,
son dimensiones (la “coma decimal” y el “punto decimal” pueden usarse indiferentemente para
separar las partes entera y fraccional del número). Un número sin un par de letras no es interpretado
como una dimensión; por ejemplo, la longitud cero no es 0, sino 0pt ó 0in ó 0mm, etc.
entonces las dimensiones serán aumentadas por un 20%. (Un ‘magstep’ es un 20% más.) El efecto
es de convertir una página de 30 pc × 40 pc, con una letra de 10 puntos, en una hoja de 36 pc × 48 pc
(sólo el texto impreso, no el papel!) con una letra de 12 puntos. De igual modo, \magnification
= 800 reduce el texto en un 20%; pero es necesario disponer de los tamaños apropiados de las
fuentes para obtener buenos resultados. Las versiones de TEX para sistemas Unix usualmente
incluyen juegos de fuentes en el tamaño estándar y también en las magnificaciones ‘\magstephalf’,
‘\magstep1’, ‘\magstep2’, ‘\magstep3’, ‘\magstep4’ y ‘\magstep5’, que convierten un tipo de 10
puntos en 11 pt, 12 pt, 14 pt, 17 pt, 21 pt y 25 pt aproximadamente. Aunque estos se guardan en
un formato compacto (archivos .pk), requieren un enorme espacio de almacenaje en disco. Las
implementaciones mas modernos de TEX, como el Textures 2.0, usan solamente el tamaño estándar,
ligado a una versión en PostScript de cada tipo.
27
6.2.4. Medidas que dependen del tipo.
Hay otras dos unidades de longitud que TEX reconoce: un em es la anchura de un cuadratı́n
\quad (o de la barra larga — si ésta forma parte de la fuente en uso), y un ex es la altura de una
letra x. Estas unidades dependen de la fuente en uso. Por ejemplo, 1 em = 10 pt en la fuente romana
de 10 pt de la familia Computer Modern (cmr10), pero 1 em = 11.5 pt en la fuente negrilla de 10 pt
(cmbx10). Luego, si se desea una sangrı́a de 2 cuadratines, se puede poner \parindent=2em al inicio
del archivo; pero en ese caso la sangrı́a de párrafos en letra negrilla será mayor (de 23 pt en lugar
de 20 pt). El formato de PlainTEX establece \parindent=20pt.
6.3 Cajas
Para TEX, una página de texto no es más que un armazón de cajas. La página es una caja
rectangular; contiene un juego de tres cajas adentro: la cabeza, el cuerpo, y el pie, ordenados
verticalmente de arriba para abajo. El cuerpo de la página se subdivide a su vez en una lista de
párrafos, cada párrafo es una lista vertical de cajas que son los renglones, y cada renglón es una
lista horizontal de cajas que son los caracteres. En estas últimas cajas, hay que colocar “tinta” para
pintar el carácter en la hoja impresa; pero eso es un trabajo aparte que le toca a la impresora o al
programa de prevista en pantalla. Lo que hace TEX es decidir dónde colocar las letras en la página.
Cada caja (sea página, fórmula, renglón o carácter) es un rectángulo que tiene determinadas
altura, hondura y anchura; éstas longitudes se miden a partir de un punto de referencia en el margen
izquierdo:
−→• . . . . . . .
28
6.4.1. Flexibilidad de la goma.
Un renglón de texto contiene aproximadamente unas 70 cajas: las letras que lo componen.
Estas se agrupan en palabras: cada palabra consta de varias cajas de letra sin separación. Entre
las palabras está la goma, la cual se estira o se contrae para justificar el renglón en los márgenes.
También hay goma entre los renglones: esta goma flexible se ajusta de tal modo que las lı́neas de
base de los renglones de un párrafo se separen siempre por el mismo monto. En un texto de letra de
10 pt, las lı́neas de base se separan normalmente por 12 pt; en la jerga de imprenta, tenemos “letra
de 10 pt sobre una base de 12 pt”.
Cada gota de goma tiene tres medidas: su tamaño natural, su estirabilidad, y su contractibilidad.
Un espacio en blanco (producido por o \ o ← o → ) genera una gota de goma y no una caja, y su
tamaño natural producirı́a renglones no justificados. No se contrae más allá de su “contractibilidad”:
si el renglón no puede justificarse aun con la máxima contracción, se proyecta al margen y da un
Overfull \hbox. Si, por otro lado, el renglón no puede justificarse aun con el máximo estirón de
cada uno sus gotas de goma, se le permite estirar un poco más, pero TEX protesta acerca de un
Underfull \hbox. Si una página se corta sin tener suficiente espacio en blanco entre sus párrafos,
la “goma vertical” colocada allı́ se estira, pero TEX emite una protesta sobre un Underfull \vbox
while output is active.
Una gota de goma se obtiene mediante
y normalmente da un brinco vertical de 6 pt, pero puede variar entre 4 pt y 8 pt, dependiendo de las
exigencias de la confección de página. Fı́jese que las hdimeni deben llevar la unidad de medición
siempre.
Un \hskip produce un espacio horizontal y un \vskip resulta en un brinco vertical. Por
ejemplo, un espacio de medio cuadratı́n (5 pt para la fuente cmr10) se obtiene con \enskip, que es
una abreviatura para \hskip.5em\relax. En un \enskip, la longitud del espacio es fija; el papel
del \relax (que no hace nada) es de prevenir la posibilidad de que el texto que sigue empieza con
las letras plus... o minus...
Si varias gotas de goma se estiran o se contraen simultáneamente, el monto del cambio de cada
gota es proporcional a su estirabilidad o contractibilidad respectivamente. Hecho este ajuste, se
empaca el resultado en una caja más grande que luego queda fija: se dice que se está “secando la
goma”. (Ası́ es cómo se forman las cajas de los renglones.)
6.4.2. Brincos verticales entre párrafos.
Los espacios entre renglones normalmente están determinados por el estilo general del docu-
mento, y no es necesario modificarlos. Si, por ejemplo, el texto tiene letras de 10 pt, se establece
una “base” de 12 pt; si la altura de un renglón más la hondura del renglón anterior suman menos
de 12 pt, se coloca goma entre las cajas de renglón para que la separación vertical entre las lı́neas
de base sea exactamente 12 pt. Si se desea más espacio entre párrafos (por ejemplo, para destacar
un cambio de tema), se puede agregar un \smallskip entre párrafos: un \smallskip es una gota
de goma que mide 3 pt (en su tamaño natural). Más grande es un \medskip (un brinco mediano),
que es de 6 pt, más o menos; y entre secciones de un documento conviene poner un \bigskip, que
da aproximadamente 12 pt de espacio vertical.
6.4.3. Resortes.
Hay una especie de goma cuya estirabilidad es “infinita”. Como varias gotas de goma en una
lista se estiran proporcionalmente, si una de ellas pudiera estirarse indefinidamente, entonces las
29
demás no se estirarı́an. A una unidad de esta goma le daremos el nombre de resorte. Hay resortes
horizontales: \hfil, y resortes verticales: \vfil. Como es de esperar, un \hfil se usa dentro de
un párrafo (o en un \hbox) y un \vfil se usa entre párrafos de texto (o en un \vbox).
Si hay un resorte en el extremo izquierdo de un renglón, al estirarse el texto se corre hacia
la derecha, “justificando” el renglón a la derecha. Si se ponen resortes en ambos extremos de un
renglón, se estiran por igual monto y el texto queda centrado. Ası́ es cómo funciona \centerline.
Otros resortes más poderosos son \hfill y \vfill. Su estirabilidad es mucho mayor que la de
\hfill y \vfill; cuando se suman un \hfill y un \hfil, el efecto del segundo queda anulado.
Al fondo de una página, \vfill proporciona un relleno vertical con espacio en blanco. La
despedida \bye coloca este tipo de goma automáticamente en la última página de un documento.
Además, los comandos \hss y \vss producen goma que puede estirarse y también contraerse
indefinidamente. Por ejemplo, el comando \line{htextoi} pone un texto en una caja de la anchura
de \hsize. Entonces \line{\hsshtextoi\hss} produce una caja centrada, que puede proyectar en
los márgenes sin causar una protesta sobre un Overfull \hbox: es ası́ como se define \centerline.
6.4.4. Goma después de puntuación.
En texto ordinario, se coloca el mismo monto de goma entre las palabras de una oración. Pero
después de puntuación, se coloca goma de mayor tamaño natural, con más estirabilidad y menos
contractibilidad. En consecuencia, un espacio después de un punto o una coma es levemente más
larga que un espacio después de una palabra que termina sin puntuación. Luego es innecesario
(aunque permisible) teclear dos espacios después de puntos, comas, dos puntos, punto y coma,
etcétera. TEX, con sus gotas de goma, hará lo que es apropiado en cada caso.
Sin embargo, hay ciertas excepciones a las reglas automáticas de TEX que requieren una in-
tervención explı́cita del tecladista. A veces uno quiere obtener el espacio usual entre dos palabras,
aunque la primera lleve puntuación. He aquı́ una pequeña lista de casos especiales:
Puntos suspensivos. Tres puntos tecleados juntos ... producen ... con separación insuficiente,
y tres puntos separados darı́a un resultado peor: . . . Luego Plain TEX tiene el comando \dots
cuyo efecto . . . tiene la medida correcta de una elipsis textual.
Abreviaturas. Las abreviaturas como Sr., Srta., Dr., Prof., i. e., p. ej., etc., no terminan
oraciones, aunque cada una es una palabra seguida por un punto. En estos casos, se puede
usar la liga ~, que produce un espacio ordinario: Sr.~Juez, Prof.~Girafales, p.~ej.~veamos,
etc.~etc. Alternativamente, se puede emplear el espacio explı́cito \ que produce un espacio
ordinario, al igual que la liga, pero permite que el renglón se rompa en ese lugar. Esto es útil,
por ejemplo, al citar revistas: Rev.\ Fil.\ Univ.\ Costa Rica.
Espaciamiento uniforme. En bibliografı́as, donde ocurren muchas citas con abreviaturas, es
apropiado que todos los espacios sean de la misma anchura, independientemente de la pun-
tuación. (Esto elimina la necesidad de estar tecleando tantos \ .) Se obtiene este efecto al
teclear \frenchspacing antes de la bibliografı́a. Se puede regresar al método de espaciamiento
usual al teclear \nonfrenchspacing.
Después de una letra mayúscula. Un punto que sigue una letra mayúscula es seguido por un
espacio normal (sin necesidad de teclear \ ). Donald~E. Knuth, el creador de TEX, ası́ lo
estableció para poder teclear iniciales de nombres (o de segundos apellidos) en forma sencilla.
6.4.5. Interlineación.
¿Cómo asegura TEX que los renglones de un párrafo estén espaciados uniformemente? Cada
renglón es una caja con una lı́nea de base, una altura y una hondura. Hay un parámetro de
referencia, que es una gota de goma llamada \baselineskip, que en Plain TEX es de 12 pt (sin más
ni menos) pero que puede modificarse en otros estilos. Entonces, si la altura del renglón actual,
más la hondura del renglón anterior, resulta menor que \baselineskip, TEX inserta una gota de
goma vertical entre estos dos renglones para ajustar la distancia entre sus lı́neas de base al valor de
\baselineskip. Esta separación canónica entre lı́neas de base se llama interlineación (“leading”,
en inglés); anteriormente se colocaban pequeñas regletas de plomo en la plancha de impresión. Si
la altura más la hondura mide más que \baselineskip, no hay que insertar nada, y el segundo
30
renglón queda empujado hacia abajo: tal es el caso si, por ejemplo, uno de los dos renglones contiene
una fracción grande en el estilo \displaystyle.
[[ Puede darse el caso, bajo este régimen, de dos renglones muy cercanos (separados por un
décimo de milı́metro, digamos). Para prevenir ese caso, TEX proporciona otros dos parámetros,
\lineskiplimit y \lineskip. Si la separación calculada por el procedimiento anterior es menor que
\lineskiplimit, se desecha el cálculo y se coloca un brinco de \lineskip entre los dos renglones.
Plain TEX establece \lineskip = 1pt. ]]
Es posible quitar la goma vertical extra de entre dos cajas en una lista vertical, al decir
\nointerlineskip entre estas dos cajas. Este recurso es muy valioso en la confección de tablas
regladas.
6.5 Modos
Internamente, TEX puede trabajar en 6 modos diferentes, dependiendo de su función. La lista
de estos modos es:
1a) Modo Vertical: cuando arma la lista vertical de cajas que componen una página.
1b) Modo Vertical Interno: al armar una lista vertical dentro de algún \vbox.
2a) Modo Horizontal: cuando arma la lista de caracteres y espacios que constituyen un párrafo.
2b) Modo Horizontal Restringido: al armar una lista horizontal dentro de un \hbox.
3a) Modo Matemático: cuando arma una fórmula en texto.
3b) Modo Matemático de Despliegue: cuando arma una fórmula que se desplegará en un
renglón aparte.
Figura 6.5. Los modos de TEX
Al inicio de un trabajo, TEX está en el “modo vertical”, listo para construir páginas. En este
modo, TEX acepta comandos para brincos verticales como \vskip, \smallskip, \bigskip, y reglas
horizontales como \hrule. Cuando está en su modo vertical, TEX ignora las lı́neas en blanco (o
comandos \par). Por lo tanto, dos o tres lı́neas en blanco valen igual que una lı́nea, para efectos de
terminar un párrafo de texto.
Al encontrar texto (una letra, por ejemplo), TEX cambia a su “modo horizontal” y empieza a
acumular el contenido de un párrafo. Al encontrar ←← o el comando explı́cito \par,* TEX termina
el párrafo, lo arma rápidamente en renglones (justificados) y regresa a su modo vertical para seguir
confeccionando la página. (Si un comando propio del modo vertical, como un \smallskip por
ejemplo, ocurre dentro del texto de un párrafo, se termina el párrafo automáticamente en ese lugar.)
Cuando TEX encuentra un signo de dólar $, hace un cambio a su “modo matemático” para
montar la fórmula que debe seguir este signo, y sigue construyendo esta fórmula hasta encontrar
otro $, en cuyo caso vuelve al modo horizontal. Ası́, el carácter $ funciona como un conmutador
(o “switch”) que enciende y apaga el modo matemático.
Si dentro de un párrafo TEX ve dos signos de dólar seguidos: $$, el párrafo se interrumpe y se
lee una fórmula que debe terminar con otro $$; TEX monta esta fórmula y la coloca en un renglón
aparte en forma centrada, y luego regresa al párrafo interrumpido.
7 Formatos de texto
7.1 Párrafos
TEX inicia sus trabajos en el modo vertical, y permanece allı́ mientras coloca reglas, saltos
verticales y crenajes verticales en la página. Al encontrar un carácter que puede imprimir, pasa
a “modo horizontal” y empieza un párrafo. Más precisamente, se inicia un párrafo al encontrar
cualquiera de estos objetos en modo vertical:
un carácter visible;
un signo de dólar simple $ que empieza una fórmula;
* La unidad lectora de TEX convierte ←← en \par; internamente, todos los párrafos de texto
terminan con \par.
31
uno de los macros \indent, \noindent, \leavevmode;
cualquier comando que requiere modo horizontal para su acción apropiada: \hskip, \vrule,
\quad, etc.
Se termina un párrafo al encontrar cualquiera de estos comandos:
dos retornos de carro ←← consecutivos;
el comando explı́cito \par;
un salto vertical: \vskip, \smallskip, \medskip, \bigskip;
cualquier otro comando que requiere modo vertical para su acción apropiada: \bigbreak,
\hrule, \vfill, etc.
Se interrumpe un párrafo al encontrar un dólar doble $$ en su contenido; lo que sigue de
ahı́ al siguiente $$ se coloca, como fórmula centrada, en uno o más renglones aparte. Después
del segundo $$, se reinicia el párrafo interrumpido en un nuevo renglón sin sangrı́a. Si el párrafo
termine antes de que aparezca el segundo $$ (si, por ejemplo, la fórmula tuviera una lı́nea en blanco
en su interior), TEX protestará por manejo indebido.
7.2 Sangrı́a
El primer renglón de un párrafo siempre lleva sangrı́a, la cual TEX coloca en forma automática.
Lo que hace TEX es colocar al margen izquierdo del primer renglón una caja vacı́a de anchura
\parindent. Este parámetro es definido por el formato: Plain TEX usa \parindent = 20pt, LaTEX
usa \parindent = 1.5em, AMS-TEX usa \parindent = 1em (un artı́culo de revista lleva menos
sangrı́a que un libro de texto). Para suprimir la sangrı́a del todo, coloque \parindent = 0pt al
inicio de su archivo.
La sangrı́a se suprime por una sola vez con \noindent. Se usa \noindent al inicio de un capı́tulo
o sección en algunos formatos.
La sangrı́a puede ser negativa, en cuyo caso el primer renglón del párrafo proyectará en el margen
izquierdo. Basta asignar \parindent = -2em antes del párrafo. (No olvide reasignar a \parindent
su valor original después del párrafo o párrafos que deben llevar sangrı́a negativa, o encerrar la
asignación y el párrafo entre llaves.)
{\smallskip
\leftskip = \parindent \rightskip = \parindent
htexto de la citai
\smallskip}
y los márgenes se contraerán por el monto de una sangrı́a en ambos lados. La separación vertical
entre la cita y los párrafos ambientes es el resultado de los \smallskip. Obsérvese que el segundo
\smallskip termina el párrafo; esto es necesario porque los márgenes no se calculan hasta que TEX
haya leı́do el párrafo entero. Las llaves localizan el efecto de modificar los márgenes. El párrafo que
sigue usará los márgenes anteriores.
Para mayor comodidad, Plain TEX proporciona el macro \narrower que tiene el mismo efecto
que \leftskip=\parindent \rightskip=\parindent. El macro \narrower es acumulativo: al
teclear \narrower\narrower, los dos márgenes se contraen por un monto de 2\parindent cada
uno.
32
7.4 Sangrı́a colgante
Algunos párrafos llevan sangrı́a, no en el primer renglón sino en todos los renglones subsigu-
ientes: esto se llama “sangrı́a colgante”. Es particularmente útil para formatear listas de varios
párrafos que deben llevar una señal “flotando” a la izquierda.
Para listas, tenemos 2 macros, \item e \itemitem. Ambos toman un argumento que se coloca
a la izquierda del primer renglón, en la caja de sangrı́a. Cada \item o \itemitem empieza un
párrafo nuevo, con sangrı́a colgante de \parindent o 2\parindent respectivamente; este efecto se
apaga al final del párrafo. Ejemplo:
Las letras A, B, C se usan comúnmente para denotar los vértices de un triángulo. Otras letras
del abecedario denotan otros puntos especiales del triángulo 4ABC.
D, E, F denotan los pies de las alturas.
K, L, M denotan los puntos medios de los lados.
X, Y , Z denotan los puntos de contacto del incı́rculo con los lados.
Las letras G, H, I, N , O, S se reservan para otros puntos especiales:
– G = AK ∩ BL ∩ CM es el centroide.
– H = AD ∩ BE ∩ CF es el ortocentro.
– O es el circuncentro.
– I es el incentro.
– N es el centro del cı́rculo que pasa por K, L, M , D, E, F .
– S = AX ∩ BY ∩ CZ es el punto de Gergonne.
Figura 7.1. Un ejemplo del uso de \item e \itemitem
Veamos dos renglones del archivo fuente que produjo esta lista:
Se obtienen listas enumeradas con \item{1.}, \item{2.}, etc., y sublistas con \itemitem{a)},
\itemitem{b)}, etc. El argumento de \item o \itemitem es lo que flota a la izquierda del renglón
inicial.
La sangrı́a colgante se controla con dos parámetros, \hangindent (el monto de la sangrı́a) y
\hangafterhenteroi, donde henteroi es el número de renglones normales que se colocan antes de
sangrar. En un \item, se usa \hangindent = \parindent y \hangafter = 1. (La sangrı́a en el
primer renglón es la de siempre.)
33
fuente producirá un renglón impreso. Ejemplo: †
{\obeylines\smallskip
Recuerde el alma dormida, Recuerde el alma dormida,
abive el seso y despierte abive el seso y despierte
\quad contemplando contemplando
c\’omo se passa la vida, cómo se passa la vida,
c\’omo se viene la muerte cómo se viene la muerte
\quad tan callando; tan callando;
cu\’an presto se va el plazer, cuán presto se va el plazer,
c\’omo despu\’es de acordado cómo después de acordado
\quad da dolor, da dolor,
c\’omo a nuestro parescer, cómo a nuestro parescer,
cualquiera tiempo passado cualquiera tiempo passado
\quad fu\’e mejor. fué mejor.
\smallskip}
establece la división silábica de las palabras ‘cerrado’, ‘cualquier’, ‘general’ de una vez por todas.
(En estas hpalabrasi, no debe haber acentos, ya que \hyphenation no los acepta.)
34
7.6.3. Ligas.
He aquı́ la lista de lugares donde el TEXbook recomienda colocar ligas:
Para referirse a partes nombradas de un documento:
En frases matemáticas:
35
7.7 Notas al pie de página
Las notas al pie de página se colocan con el comando \footnote (por supuesto).* Aquı́ se
tecleó:
El comando \footnote debe seguirse por una seña de referencia, como *, {**}, \dag, \ddag, que
también podrı́a ser un número elevado, como {$^1$}, {$^2$}, etcétera; y luego por el texto de la
nota, entre llaves. La seña de referencia** se pone en el párrafo y también en la nota al pie; aquı́ se
tecleó:
La se\~na de referencia%
%
\footnote{**}{Como este par de asteriscos.}
%
se pone en ...
para producir la segunda nota abajo.3 (Obsérvese el papel de los % que permiten destacar el comando
\footnote en un renglón aparte del archivo fuente, para verlo más fácilmente a la hora de revisar
este archivo para hacer correcciones.)
\topinsert
\vskip 5cm \smallskip
\centerline{\bf Figura 8}
\endinsert
\midinsert
hinsercióni
\endinsert
en el lugar donde se la quiere colocar: será insertada allı́ si queda sitio; y si no, será puesto al inicio
de la página actual (o si eso fuera también imposible, al inicio de la página siguiente). Para una
inserción que llena una página entera, diga \pageinsert hinsercióni \endinsert: por supuesto,
esta inserción se colocará en la página siguiente al lugar en donde aparece la instrucción.
36
8 Tabulación y Tablas
8.1 Tabulación
Normalmente se usa la tecla →de tabulación, en procesadores de palabras, para sangrar y para
efectuar ciertas separaciones visuales en pantalla. Pero TEX coloca la sangrı́a al inicio de cada
párrafo en forma automática y la tabulación se reserva para textos que deben alinearse.
Cada renglón con tabulación debe teclearse en la forma
\+ htexto1 i & htexto2 i & htexto3 i & ... & htexton i\cr
donde el htexto1 i comienza al margen izquierdo, el htexto2 i empieza en la segunda columna, etcétera.
El renglón debe empezar con \+ y debe terminar con \cr; cada & funciona como un tabulador. Las
diversas columnas de texto forman “grupos” aunque no llevan llaves explı́citamente: un cambio de
tipografı́a en una columna no afecta a la columna siguiente.
Lo que queda por ver es cómo se establecen las posiciones de los tabuladores. Hay tres maneras
de hacerlo. La primera, que es la más sencilla, es que la primera instancia de \+...\cr establezca las
posiciones de los tabuladores, de acuerdo con las anchuras naturales de sus columnas. Las instancias
subsiguientes de \+ usarán las columnas ya establecidas. Ejemplo:
37
8.2 Colocación de tabuladores
8.2.1. Tabulación centrada.
Para centrar una tabulación, se puede usar un despliegue matemático, pues el contenido de un
despliegue queda centrado y con cierta separación vertical arriba y abajo (podemos, en este caso,
prescindir de los \smallskip). Como se quiere centrar texto en vez de sı́mbolos matemáticos, hay
que colocar el contenido dentro de un \vbox y desplegar éste. Consideramos, por ejemplo:
$$
\vbox{
\+ 1\quad &1\cr
\+ 1 & 2\quad &1 \cr
\+ 1 & 3 & 3\quad &1 \cr
\+ 1 & 4 & 6 & 4\quad &1\cr
}$$
y su resultado:
1 1
1 2 1
1 3 3 1
1 4 6 4 1
Figura 8.2. Tabulación en un \vbox centrado
La regla exacta para colocar tabuladores es la siguiente: si se teclea una & a la derecha de
todas las posiciones de tabulación existentes, se establece una nueva posición de tabulación tal que
la columna recién completada tenga su anchura natural. Los \quad en el último ejemplo establecen
sucesivas columnas de la anchura de un dı́gito más 1 em, dando el efecto visual de columnas con
separación uniforme de 1 em.
8.2.2. Uso de renglones modelos.
Los tabuladores establecidos por la primera instancia de \+...\cr son apropiados solamente si
el documento contiene un solo bloque de tabulación, o varios bloques de estructura idéntica. Para
redefinir las posiciones de los tabuladores, TEX proporciona una segunda manera de colocarlos, con
el comando \settabs.
Se teclea \settabs\+hrenglón modeloi\cr para establecer las posiciones de los tabuladores
como antes; pero el “renglón modelo” no se imprime. Esto es muy útil si no se sabe de antemano
las anchuras apropiadas de las columnas: se determina la entrada más ancha en cada columna y con
ellas se construya el renglón modelo. Luego las columnas que siguen serán alineadas apropiadamente.
Ejemplo:
\settabs\+\indent&21--06\quad&Productos de papel e impresos\qquad&
17.325,00&\quad&\cr
\+& 21--06& Productos de papel e impresos&\hfill\co 800,00&\cr
\+& 21--09& Materiales de oficina&\hfill 1.108,00&& (gastado)\cr
\+& 22--10& Adquisici\’on de libros& 17.325,00&& (en tr\’amite)\cr
que produce:
21–06 Productos de papel e impresos /c800,00
21–09 Materiales de oficina 1.108,00 (gastado)
22–10 Adquisición de libros 17.325,00 (en trámite)
Figura 8.3. Tabulación con un renglón modelo
donde la primera columna es una sangrı́a (por \indent). La segunda columna del renglón modelo
termina con \quad y la tercera con \qquad; ası́ se garantiza la deseada separación mı́nima entre
columnas. En la cuarta columna, se ajustan las cifras a la derecha usando el resorte \hfill—se
supone que \co es un macro que produce el signo /c de colones. La quinta columna es un \quad de
espacio, simplemente. La lı́nea modelo termina con &\cr, pues no hace falta establecer la anchura
de la sexta columna.
38
8.2.3. Columnas de igual anchura.
La tercera manera de colocar tabuladores es dividir la página en varias columna de igual an-
chura. Si se teclea \settabs n \columns, se producen renglones partidos en n columnas iguales.
(Aquı́ no se requiere una lı́nea modelo). Ejemplo:
\settabs 7 \columns
\+\it Presente& soy& eres& es& somos& sois& son \cr
\+\it Imperfecto& era& eras& era& \’eramos& erais& eran \cr
\+\it Pret\’erito& fui& fuiste& fue& fuimos& fuisteis& fueron \cr
\+\it Futuro& ser\’e& ser\’as& ser\’a& seremos& ser\’eis& ser\’an \cr
Este código produce:
Presente soy eres es somos sois son
Imperfecto era eras era éramos erais eran
Pretérito fui fuiste fue fuimos fuisteis fueron
Futuro seré serás será seremos seréis serán
Figura 8.4. Tabulación con columnas de igual anchura
8.2.4. Anulación de tabuladores.
Se puede quitar algunas tabuladores sin necesidad de redefinir todos, con \cleartabs. Este
comando borra todos los tabuladores cuando ocurre fuera de un ambiente \+...\cr. Si se teclea
\cleartabs dentro de una lı́nea que empieza con \+, se borran solamente los tabuladores a la
derecha de la columna que incluye \cleartabs. Esto es útil para alineamientos con tabulación
variable, como son algunas programas de computación:
$$
\vbox{\cleartabs
\+\bf if $n < r$ &\bf then $n := n+1$\cr
\+ &\bf else &{\bf begin} {\it print\_totals\/}; $n := 0$;\cr
\+ && {\bf end};\cr
\+\bf while $p > 0$ do\cr
\+\quad\cleartabs &\bf begin & $q := {\it link}(p)$;\cr
\+ && {\it free\_node}$(p)$;\cr
\+ && $p := q$;\cr
\+ & {\bf end};\cr
}$$
cuyo resultado es:
if n < r then n := n + 1
else begin print totals; n := 0;
end;
while p > 0 do
begin q := link (p);
free node(p);
p := q;
end;
Figura 8.5. Tabuladores redefinidos con \cleartabs
Aquı́, el primer \cleartabs elimina las posiciones previas de tabuladores, si existen; es una
buena idea empezar una tabulación centrada con ‘\vbox{\cleartabs...’ para eliminar las posi-
ciones anteriores. Las primeras dos lı́neas tabuladas establecen nuevas posiciones para dos tabu-
ladores. La cuarta lı́nea usa solamente la primera columna; por ser más ancha que la columna
establecida, proyecta a la derecha (sin generar mensajes de error). La quinta lı́nea, que contiene
\cleartabs &, borra los tabuladores y vuelve a establecer posiciones nuevas, de modo que la primera
columna es un simple \quad. (Este ejemplo de fragmento de programa fue tomado del TEXbook,
p. 234.)
39
8.3 Alineamiento con plantillas
Una alternativa más poderosa y flexible para alinear texto es el uso de plantillas. Se considera el
alineamiento como una sucesión de columnas, donde las columnas individuales tienen caracterı́sticas
propias: algunas son centradas, otras justificadas a la izquierda o derecha; algunas usan letra negrilla,
otras contienen fórmulas matemáticas solamente, etcétera. En vez de un “renglón modelo”, este
alineamiento debe tener un “preámbulo” en donde se establecen los formatos de cada columna y las
separaciones entre ellas. Esta alternativa se obtiene con \halign, cuya sintaxis es:
y las hfilais se imprimen según el formato establecido en el hpreámbuloi que precede el primer \cr.
Las filas en un \halign no usan la \+, que es más bien un recurso para activar tabuladores; pero sus
columnas son demarcadas por signos & y cada fila debe terminar con \cr. El preámbulo se divide
en columnas por el carácter & también; el contenido que cada columna se representa por la diesis #
(sola, sin dı́gito), y además se colocan goma, resortes, cambios de estilo y otras cosas a su alrededor
para establecer la “plantilla” de esa columna.
Por ejemplo, reconsideremos el segundo alineamiento de § 8.2:
$$\vbox{
\def\co{\rlap/c}
\halign{#\quad\hfil&#\quad\hfil&\hfil#\quad&#\hfil\cr
21--06& Productos de papel, cart\’on e impresos& \co 800,00\cr
21--09& Utiles y materiales de oficina& 1.108,00& (gastado)\cr
22--10& Adquisici\’on de libros& 17.325,00& (en tr\’amite)\cr
}}$$
* Ch. Zelaya et. al., “Costa Rica Contemporánea”, Editorial Costa Rica, San José, 1979.
40
Lo importante aquı́ es alinear los puntos decimales, y esto se hace insertándolos en las plantillas
de las columnas en el preámbulo. En vez de tres columnas, hay cinco: la tercera y la quinta empiezan
con ‘.’ y no hay espacio para separarlas de las columnas anteriores. Se tecleó el alineamiento ası́:
\halign{\indent#\hfil\quad&\hfil#&.#\hfil\quad&\hfil#&.#\hfil\cr
\sl Producto Interno Bruto& 230&2 & 100&0\cr
a) Tradicionales& 195&5 & 84&9\cr
b) Materias Primas& 14&6 & 6&3\cr
c) Metal Mec\’anico& 9&9 & 4&3\cr
d) Residual& 10&2 & 4&5\cr}
sin cambiar el tecleo de las otras filas. El punto desaparece al omitirlo de la plantilla; también hay
que teclear \hfil para justificar la columna, porque ese resorte también fue omitido. Solamente
la columna con \omit está afectada: en la quinta columna 9 produce .9, pues se usa la plantilla
original ‘.#\hfil’.
\noalign{\hrule}
entre las dos filas, i.e., después del \cr que termina la primera fila. Por ejemplo:
Fı́jese que la regla queda pegada a los renglones anterior y posterior: la interlineación usual en
una pila de cajas no opera con reglas como \hrule. Hay dos salidas a este problema.
La primera solución usa el hecho de que el argumento de \halign, en cuanto contribución
a una lista vertical de filas, obra en el modo vertical : \noalign{\hrule} es correcto, pero no se
acepta \noalign{\vrule}. Los posibles argumentos de \noalign son reglas horizontales, cajas
(horizontales o verticales), goma o resortes verticales, o penalties.
Entonces se puede colocar
a b c
\noalign{\smallskip\hrule\smallskip} u v w
x y z
entre dos filas de un \halign.
La segunda solución es más usada. Plain TEX define el macro \strut (“puntal”) como una caja
con altura de 8.5 pt (algo más alto que una letra mayúscula), una hondura de 3.5 pt (más bajo que
41
caracteres como p, q, y) y una anchura de 0 pt: luego ¡es invisible! Colocamos un \strut en cada
fila al insertar uno en el preámbulo:
\vbox{\hrule\halign{...}\hrule}
Esto funciona porque un \hrule tiene la extensión horizontal de su caja vertical ambiente, que en
este caso es la anchura total del \halign{...}.
8.4.2. Reglas verticales en tablas.
Para colocar reglas verticales entre dos columnas de una tabla, debemos considerar cada regla
vertical como una nueva columna cuyo contenido es solamente esa regla. Por ejemplo:
\halign{\strut#\quad&\vrule#&\quad#&\quad#\cr
a&& b& c\cr a b c
u&& v& w\cr u v w
x&& y& z\cr} x y z
Ahora tenemos cuatro columnas. Cada ‘&&’ significa que la segunda columna no tiene texto de
sustitución; luego su plantilla \vrule# es reemplazado por \vrule simplemente. (Cada plantilla
del preámbulo debe tener un #; el código ‘&\vrule&’ en el preámbulo generarı́a mensajes de error.)
Esta regla tiene la altura del \hbox ambiente, el cual es la fila del alineamiento, cuya extensión
vertical es determinado por \strut; luego \vrule da un puntal visible.
Obsérvese los pequeños quiebres entre los puntales sucesivos en este ejemplo: estos se deben a
la goma \lineskip colocada automáticamente entre filas que están muy cercanas. Como los \strut
separan sus contenidos, el \lineskip es en esta instancia un estorbo que debe suprimirse. Esto se
logra con
\vbox{\offinterlineskip \halign{...}}
pues \offinterlineskip suprime el \lineskip dentro del \vbox ambiente. Ası́ obtenemos
\vbox{\offinterlineskip
\halign{\strut#\quad&\vrule#&\quad#\quad& a b c
\vrule#&\quad#\cr u v w
a&& b&& c\cr x y z
u&& v&& w\cr
x&& y&& z\cr}}
donde las reglas verticales se juntan para formar trazos verticales sin interrupción.
42
8.5 Diversos recursos para hacer tablas
se obtiene
a bbb c
u v w
x y z
Obsérvese los \hfil, dos resortes cuya función es centrar ‘bbb’, ya que la plantilla \quad#\quad fue
cambiado a # por el \omit: hay que centrar esta entrada en forma explı́cita.
8.5.2. Fusión de columnas.
Es común que las tablas contengan filas excepcionales cuyas columnas desbordan los lı́mites de
las columnas de otras filas. Por ejemplo, un encabezado puede cruzar dos o tres columnas. Para
fusionar n columnas de una sola fila, se teclea \multispan n al inicio de la primera y se omite los
separadores &. Ejemplo: el código
\def\cc#1{\hfil\quad #1\quad\hfil}
\halign{\strut\hfil#\quad&\cc{#}&\cc{#}&\cc{#}&\cc{#}\cr
\#&\multispan3\hfil\sl Identificadores\hfil&\sl Nota\cr
1.& AA& BB& CC& 82\cr
2.& DD& EE& FF& 95\cr
3.& KK& LL& MM& 76\cr}
produce:
# Identificadores Nota
1. AA BB CC 82
2. DD EE FF 95
3. KK LL MM 76
\halign{\strut\hfil#\quad&&\hfil\quad#\quad\hfil\cr
se repite la hparte2 i cuantas veces sean necesarias para llenar el número deseado de columnas. Es
decir, el preámbulo es equivalente a:
43
Si un preámbulo comienza con &, se repite todo el preámbulo periódicamente:
$$\vbox{\offinterlineskip
\def\a{\alpha}\def\cc#1{\hfil\quad#1\quad\hfil}
\hrule
\halign{&\vrule#&\strut\cc{$\displaystyle#$}\cr
height2pt&\omit&&\omit&&\omit&\cr
&\omit\cc{\sl Funci\’on}&&\omit\cc{\sl Derivada}&&
\omit\cc{\sl Primitiva}&\cr
height2pt&\omit&&\omit&&\omit&\cr
\noalign{\hrule}
height2pt&\omit&&\omit&&\omit&\cr
& x^n && nx^{n-1} && {x^{n+1} \over n+1} &\cr
& \sin x && \cos x && -\cos x &\cr
& \tan x && \sec^2x && \ln|\sec x| &\cr
& {1 \over 1+x^2} && {-2x \over (1+x^2)^2} &&\arctan x &\cr
& x^\a L_n^\a(x) && (\a+n) x^{\a-1} L_n^{\a-1}(x) &&
{1 \over \a+n+1} x^{\a+1} L_n^{\a+1}(x) &\cr
height2pt&\omit&&\omit&&\omit&\cr
}\hrule}$$
Los \omit\cc{...} en la fila del encabezado sirven para suprimir el modo matemático de las
columnas pares. Las filas terminan con &\cr y no sólo con \cr: esto genera una séptima columna,
el trazo vertical del borde derecho de la tabla. Las lı́neas height2pt&\omit&&\omit&&\omit&\cr
generan una separación textual de 2 pt para destacar el encabezado. En estas lı́neas los \omit
suprimen los puntales \strut; la altura de la fila es 2 pt, ya que en la primera columna la plantilla
\vrule# es reemplazado por \vrule height 2pt; en las demás columnas impares, el contenido vacı́o
expande \vrule# en \vrule, lo cual genera una regla de la altura de la fila, que ya está establecida
en 2 pt. Luego, los trazos verticales entre las fórmulas no se interrumpen.
44
Se obtiene una tabla de una anchura predeterminada, como 10 cm, con \halign to 10cm{...}.
Los resortes en las columnas se estirarán para justificar columnas individuales; pero, si las anchuras
de éstas suman menos de 10 cm, los resortes dentro de cada columna no podrán estirarse para cubrir
la anchura faltante. Por eso, TEX coloca una goma especial llamado \tabskip entre las columnas
de una tabla, y también antes de la primera columna y después de la última. Su valor usual es de
0 pt, pero \tabskip = hnuevo valor i lo cambiará a gusto. Ejemplo:
\vbox{\tabskip=20pt
a b c d
\halign{#&#&#&#\cr
xx yyy zzzz w
a & b & c & d\cr
xx & yyy & zzzz & w\cr}}
TEX decide el monto de goma que coloca entre las columnas al notar el valor de \tabskip
(i) cuando lee la llave { que comienza el preámbulo; (ii) cuando lee cada & del preámbulo que separa
dos columnas; (iii) cuando lee el \cr que termina el preámbulo. Por ende, el código:
\tabskip = 1em
\halign{#\hfil\tabskip=3em&#&\tabskip=4em\bf#&#\tabskip=0em\cr
establece una tabla con goma de 1 em antes de la primera columna, goma de 3 em entre las columnas
1 y 2 y también entre las columnas 2 y 3, goma de 4 em entre las columnas 3 y 4, y ninguna goma
después de la última columna. Las reasignaciones de \tabskip no forman parte de las plantillas de
las columnas, que son ‘#\hfil’, ‘#’, ‘\bf#’, ‘#’ respectivamente.
9 Rutinas de Salida
Cuando TEX decide que el texto acumulado es suficiente para formar una página, interrumpe
la lectura de texto, confecciona la página en su forma final y la envı́a a disco. En la terminal (en
el archivo ‘TeX log’) aparece un corchete [ seguido por el número de página; cuando la página está
completa, aparece otro corchete ] y el programa vuelve a leer materia para la página siguiente.
La página ası́ confeccionada es parte de la Lista Vertical Principal, que consta de los renglones
de párrafos ya levantadas, las gotas de goma y los resortes que separan estos renglones, y algunos
otras cosas como reglas o cajas colocadas explı́citamente entre párrafos. Si el último párrafo leı́do
de la página actual desborda esta página, TEX guarda una parte para la página siguiente, y luego
decide cómo “secar” la goma vertical en la página actual; hecho ésto, envı́a esta página a disco y
procede con la página que sigue.
Si una página consta de texto solamente, la única flexibilidad vertical está en la goma que
se coloca entre los renglones y los párrafos. Pero si hay secciones divididos por \smallskip o
\medskip o \bigskip, o si hay despliegues matemáticos, estos incorporan goma vertical contractible
y estirable: en este caso, los cortes de página son usualmente satisfactorias.
Si una página se cortara en un lugar inconveniente en un primer intento, hay dos opciones para
volver a cortar la página en un lugar predeterminado. El comando \eject (“expulse”) significa
“corte la página aquı́ y envı́ela a disco”. Al cortar de esta forma, la goma vertical en la página
se estira de tal manera que el último renglón quede al fondo de la página; y si se estira mucho, se
genera una protesta sobre un ‘Underfull \vbox while output is active’. La segunda opción,
más común, es la de rellenar el remanente de la página con espacio en blanco: ésto se hace con
\vfill\eject.
A la hora de enviar la página a disco, se colocan los números de página, los encabezados, las
notas al pie y las inserciones. Este proceso de agregar las añadiduras de oficio se llama la rutina de
salida.
45
es de 6.5 in × 9 in). Esta área se modifica al cambiar los dos parámetros \hsize y \vsize. En
Plain TEX, se usan \hsize=6.5in y \vsize=8.9in. Si se cambian estos parámetros (por ejemplo,
podrı́amos pedir \hsize=34pc y \vsize=48pc), el margen superior y el margen izquierdo seguirán
siendo de 1 in, mientras los márgenes derecho e inferior cambiarán.
Para cambiar los márgenes superior e izquierdo, se puede mover todo el texto de la página hacia
la derecha con \hoffset y hacia abajo con \voffset. Por ejemplo, \hoffset=1pc \voffset=-3pt
mueve el texto 1 pica hacia la derecha y 3 puntos hacia arriba (−3 pt hacia abajo es +3 pt en la
dirección contraria). Estos cambios a \hsize, \vsize, \hoffset, \voffset, deben hacerse al inicio
de un documento.
Para quitar los números de página que automáticamente aparecen centrados al pie, se puede
teclear \nopagenumbers al inicio del documento.
La rutina de salida de Plain TEX funciona del siguiente modo. Cuando TEX decide cortar una
página, envı́a el contenido de la página, en una caja, a una salita de espera especial. Luego busca una
lista de instrucciones de salida llamado \output, el cual es un parámetro especial de TEX cuyo valor
es una lista de fichas. En Plain TEX, se pone \output = {\plainoutput}, donde \plainoutput es
un macro que se expande en:
\shipout\vbox{\makeheadline\pagebody\makefootline}
\advancepageno
\ifnum\outputpenalty>-20000 \else\dosupereject\fi
Aquı́, \shipout es el comando que envı́a una caja (en este caso, la página completa) a disco, y la
borra de la memoria activa para que TEX pueda continuar con la página que sigue. (Posteriormente,
el programa que confecciona la imagen en pantalla —esta función viene integrada en Textures, pero
en otras implementaciones se trata de un programa externo— la buscará en el disco). Luego, se
incrementa el número de página con \advancepageno; y la instrucción condicional se invoca si esta
página es la última y si quedan inserciones que todavı́a no hayan salido.
Una página consta entonces de cabeza, cuerpo y pie, los cuales se ordenan con la separación
correcta usando \makeheadline, que coloca una caja con la \headline al inicio; \pagebody, que
confecciona la página del material en la salita de espera con inserciones y notas al pie incluidas;
y \makefootline, que coloca una caja con la \footline al final.
\def\makeheadline{\vbox to 0pt{\vskip-22.5pt
\line{\vbox to 8.5pt{}\the\headline}\vss}\nointerlineskip}
y la de \makefootline:
\def\makefootline{\baselineskip=24pt \line{\the\footline}}
Los parámetros \headline y \footline son también listas de fichas. El comando \the es un
comando primitivo de TEX que convierte la forma interna de una lista de fichas en una cadena
de caracteres (es decir, “desempaca” la representación interna del parámetro que sigue). La caja
vacı́a de altura 8.5 pt es un puntal para uniformar las alturas de los diversos encabezados posibles.
El \baselineskip=24pt es un artificio para separar el pie del cuerpo de la página, creando el
equivalente de una lı́nea en blanco (pues el valor usual de \baselineskip es 12 pt); las instrucciones
de la rutina de salida se efectúan localmente y la interlineación de la página siguiente no sufre
modificación.
¿Por qué \vskip-22.5pt? Resulta que TEX coloca una interlineación especial \topskip al
inicio de cada página, para establecer una distancia uniforme entre el techo de la página y la base
46
del primer renglón. En Plain TEX, se tiene \topskip=10pt. Para que el encabezado esté separado
por una lı́nea en blanco del primer renglón de la página, hay que retroceder (con un \vskip de una
longitud negativa) por un monto de
\nopagenumbers
\headline={\ifodd\pageno\dercabeza\else\izqcabeza\fi}
\def\dercabeza{\hfil\sevenrm\titulito\hfil\tenrm\folio}
\del\izqcabeza{\tenrm\folio\hfil\sevenrm\autorcito\hfil}
\voffset=2\baselineskip
\def\folio{\ifnum\pageno<0 \romannumeral-\pageno
\else \number\pageno \fi}
(Aquı́, \romannumeral imprime un número† con letras romanas; mientras \number lo imprime con
dı́gitos arábigos. Este año, por ejemplo, \number\year imprime ‘2008’, pero \romannumeral\year
produce ‘mmviii’; \year es la representación del año que mantiene el sistema operativo.) Al terminar
la página, el comando \advancepageno suma 1 a \pageno si éste es positivo, pero resta 1 si \pageno
es negativo: lo que sigue a la página viii es la página ix, no la página vii. Al llegar a la parte principal
del libro, se dice \pageno = 1 para empezar el conteo con números arábigos.
† Mejor dicho, la representación interna de un número; aquı́ conviene distinguir entre un número
representado por una configuración de un registro de memoria de la computadora, y su presentación
convencional mediante caracteres del teclado.
47
9.3 Formato de doble columna
Hay varias maneras de obtener un formato de dos columnas. La manera más simple es de
considerar las dos columnas como páginas independientes, que no se imprimen por separado sino
juntos. Para poder juntarlos, hay que guardar la columna izquierda en reserva hasta que la columna
derecha esté lista. Se aprovecha la metodologı́a de TEX para poder hacer esta manipulación. Lo
que hay que recordar es que (i) cuando TEX tiene suficiente materia para una página, lo que hace
es leer la lista de fichas \output; (ii) solamente el comando \shipout es capaz de enviar materia
a disco. Cuando se desea formato de dos columnas, asignamos \output = {\doblecolumna} (¡no
olvide las llaves!); podemos regresar al formato usual con \output = {\plainoutput} más tarde.
[[ Para definir \doblecolumna, hay que anticipar algunos convenios de asignación que discu-
tiremos más adelante. Se puede reservar una de las cajas internas accesibles en TEX con el macro
\newboxhcajai, y llenarla con el código
Aquı́ hcajai es una palabra de control que identifica la caja reservada. También se puede asignar
una nueva condicional con \newif\ifalgo donde \ifalgo es en general una palabra de control
que comienza con ‘\if’; sus valores de verdadero y falso se denotan \algotrue y \algofalse.
Finalmente, una dimensión nueva recibe un nombre reservado con \newdimen. ]]
Preparamos el formato de dos columnas con
\newbox\colizqda
\newdimen\anchurareal \anchurareal=\hsize
\hsize=0.47\hsize
\newif\ifderecha \derechafalse
\def\doblecolumna{\ifderecha
\shipout\vbox{\makelongheadline
\hbox to \anchurareal{%
\box\colizqda \hfil
\leftline{\pagebody}}
\makelongfootline}
\global\derechafalse
\advancepageno
\else
\global\setbox\colizqda=\leftline{\pagebody}
\global\derechatrue
\fi
\ifnum\outputpenalty>-20000 \else\dosupereject\fi}
48
columna, ya preparada en \pagebody como página delgada, a la caja \colizqda. La función
de \leftline#1 (cuya definición es \hbox to \hsize{#1\hss}) es de empacar la “caja vertical”
\pagebody en una “caja horizontal”. Luego se cambia la señal de columna al decir \derechatrue,
se ejecuta la última lı́nea y se regresa a leer más texto. La columna izquierda ha sido confeccionada
y guardada, pero no ha sido enviada a disco.
Después de un rato, habrá suficiente materia nueva como para exceder \vsize otra vez. De
nuevo se lee \doblecolumna, pero ahora vale \derechatrue y se usa la primera parte del macro
condicional \ifderecha...\else...\fi. Ahora se ejecuta un \shipout, enviando a disco una
caja vertical que contiene tres cajas empiladas. El \makelongheadline y \makelongfootline son
análogas a \makeheadline y \makefootline, pero deben crear cajas de anchura \anchurareal. En
el medio hay una caja horizontal con dos cajas adentro: la \colizqda, que contiene materia para
la columna izquierda, y el nuevo \pagebody, que será la columna derecha. Entre ellos se coloca un
resorte \hfil, para llenar el 6% residual de \anchurareal y ası́ separar las columnas. Enseguida se
cambia la señal a \derechafalse para empezar de nuevo en la columna izquierda y se incrementa
el número de la página. Ahora se puede repetir el ciclo y confeccionar las dos columnas de la página
siguiente.
10 Registros
Aquı́ n toma los valores 0, 1, 2, . . . , 255. Es decir, los registros numéricos están enumerados de
\count0 a \count255; los registros de dimensión van de \dimen0 a \dimen255; los registros de
goma ordinaria y matemática de \skip0 a \skip255 y de \muskip0 a \muskip255; los registros
para fichas de \toks0 a \toks255; y los registros de cajas de \box0 a \box255.
La “mugoma” es una especie de goma especial que se usa en el modo matemático solamente, y
se mide en mu (“math unit”) en vez de pt: el tamaño del mu depende del tamaño de letra ambiente;
de hecho, 18 mu = 1 em. El “medio espacio” \, es en realidad \mskip 3mu. El comando \mskip
coloca “mugoma” en el modo matemático, por analogı́a con \hskip y \vskip en los otros modos.
La sintaxis de las asignaciones se resume en la tabla que sigue; una barra vertical separa dos
formas alternativas de sustituir el lado izquierdo, y las paréntesis rodean cosas opcionales.
* Los que quieren saber la historia completa deben consultar el libro TEX: The Program, que
contiene la fuente Pascal del programa, completamente documentado.
49
henteroi 7−→ un número entero
hdimensióni 7−→ hnúmeroi hunidad i
hgomai 7−→ hgotai (plus hgotai) (minus hgotai)
hmugotai 7−→ hnúmeroi mu
hfichasi 7−→ una lista de caracteres y comandos
hcajai 7−→ hpedido de cajai{hfichasi}
hnúmeroi 7−→ un número entero o decimal
hunidad i 7−→ pt | pc | in | bp | cm | mm | dd | cc | sp | em | ex
hgotai 7−→ hdimensióni | hnúmeroi fil
| hnúmeroi fill | hnúmeroi filll
hmugomai 7−→ hmugotai (plus hmugotai) (minus hmugotai)
hpedido de cajai 7−→ hnombre de cajai | hnombre de cajai to hdimensióni
| hnombre de cajai spread hdimensióni
hnombre de cajai 7−→ \hbox | \vbox | \vtop | \vcenter
Figura 10.2. Convenios para los contenidos de los registros de TEX
Por ejemplo, las siguientes asignaciones son legales:
\count14 = -4096
\dimen100 = 13,5 pc
\skip7 = 10pt plus 1 fil minus 0.5fil
\muskip222 = 4 mu plus 2mu minus 4mu
\toks30 = {Una frase \hfil\ partida en 2}
\setbox0 = \hbox to 0pt{$\Rightarrow$\hss}
Algunos registros son usados por TEX para sus propias operaciones. Por ejemplo, el número
de la página es el contenido del registro \count0. Plain TEX define el sinónimo \pageno para este
registro. Ası́, si un trabajo debe comenzar con las páginas numeradas de 85 en adelante, se declara
\pageno = 85 o equivalentemente \count0 = 85
al inicio del archivo fuente.
Los registros \count1, . . . , \count9 son registros reservados; en Plain TEX normalmente valen 0.
El registro de cajas \box255 es muy especial: este es el lugar (la “salita de espera”) donde se guarda
el contenido de la página actual: ¡no modifique esta caja sin estar absolutamente seguro de lo que
usted hace! Si hay notas al pie, se guardan en \box254, y otras inserciones usan \box253, \box252,
etc. Para manejo temporal de cajas, se recomienda usar \box0, \box1, . . . , \box9 solamente.
50
10.3 Operaciones aritméticas con registros
TEX tiene cierta capacidad de efectuar operaciones aritméticas con los registros numéricos.
Puede sumar a un registro un valor del tipo apropiado, y puede multiplicar (o dividir) el valor de
un registro por un número entero. Los comandos apropiados son:
\advance\count n by henteroi
\advance\dimen n by hdimensióni
\advance\skip n by hgomai
\advance\muskip n by hmugomai
\multiplyhregistroi by henteroi
\dividehregistroi by henteroi
\advance\pageno by 1
\advance\hsize by 1pc
\advance\dimen40 by \count28pc
\smallskipamount = 3pt plus 1pt minus 1pt
\advance\parskip by \smallskipamount
El parámetro \smallskipamount ha sido creado por Plain TEX (usando \newskip) y la asignación
aquı́ dada es lo que Plain TEX hace. (El comando \smallskip es un macro cuya expansión es
\vskip\smallskipamount). La operación con \parskip tiene el efecto de colocar un \smallskip
después de cada párrafo en forma automática.
La instrucción \divide hace división entera, sin guardar residuos. Ası́,
\count2 = 17 \divide\count2 by 3
es equivalente a \count2 = 5.
10.3.1. Aritmética con dimensiones de cajas.
Si una caja está guardada en el registro \box n, su altura, hondura y anchura se guardan como
\ht n, \dp n y \wd n respectivamente. Para hacer una operación aritmética con estas dimensiones,
hay que usar un registro \dimen disponible. Los registros \dimen0, . . . , \dimen9 se mantienen libres
para este tipo de cálculos. Ası́, el código
\newbox\micaja \newdimen\arriba
\setbox\micaja = \hbox{$\displaystyle\sum_0^\infty$}
\dimen0 = \ht\micaja
\advance\dimen0 by \dp\micaja
\divide\dimen0 by 2
\arriba = \dimen0
calcula la proyección de una fórmula por encima de su eje central. (TEX hace un cálculo análogo
internamente cada vez que emplea \left...\right). Si h es la altura de la fórmula y d su hondura,
es cuestión de calcular (h + d)/2, y archivar el resultado en el registro \arriba.
51
Consideremos algunos ejemplos:
En un registro de tipo \dimen, \the produce el valor en puntos pt. (Luego 1 pc ≡ 12.0 pt =⇒
34 pc ≡ 408.0 pt). El comando \everypar es un registro interno de tipo \toks, que TEX lee al inicio
de cada párrafo. Normalmente está vacı́o, pero siempre está disponible para formatear una serie
de párrafos de manera uniforme. La expansión de \the\everypar es una copia de la lista de fichas
que TEX procesa como si los hubiera recién leı́do en el archivo fuente.
El contenido de un registro se despliega en la terminal (en el archivo TeX log) si el código
\showthehregistroi
El \overfullrule es la anchura de la caja negra que aparece a la derecha de una caja horizontal
desbordada; en Plain TEX, su valor es de 5 pt (para que el autor vea su error y lo corrija!)†
10.4.1. Conversión de caja de letra.
Siguiendo una tradición establecida en el taller de Gutenberg en Mainz, desde 1450, las letras
de una fuente son unas piezas metálicas guardadas en una caja abierta que tenı́a dos partes: en la
“caja alta” se guardan las letras mayúsculas y en la “caja baja” las minúsculas. En el último medio
siglo, con el auge de las tecnologı́as de fotocomposición y levantamiento digital de texto, las piezas
metálicas han caı́do en desuso. TEX tiene dos comandos que cambian minúsculas a mayúsculas y
viceversa, y actúan sobre listas de fichas. El comando
\uppercase{hlista de fichasi}
convierte cada carácter de letra en la lista en su equivalente mayúscula, sin cambiar otros caracteres
ni macros. También,
\lowercase{hlista de fichasi}
† En LaTEX, \overfullrule vale 0 pt; esta mala práctica puede remediarse al usar la opción
‘draft’ con el \documentclass.
52
11 Manejo de cajas
T\kern-.1667em\lower.5ex\hbox{E}\kern.125em X
.
Ahora, .1667 = 61 y .125 = 18 ; un \kern-.1667em es un movimiento de 16 em hacia atrás: un
pequeño retroceso. La letra E se envuelve en una caja, y esta caja se desplaza 12 ex hacia abajo
con \lower.5ex\hbox{E}. Luego la receta para el logo es: “una letra T, un retroceso de 61 em, una
letra E desplazada hacia abajo por 12 ex, un retroceso de 81 em y una letra X”.
11.1.3. Listas verticales y horizontales.
Es hora de hacer un inventario completo de los ingredientes que pueden forman parte de una
lista vertical. En una pila podemos colocar:
una caja (vertical u horizontal);
una regla (\hrule);
una gota de goma o un resorte;
un crenaje (\kernhdimensióni);
una inserción (como \footnote o \midinsert o \topinsert);
un penalty (\penaltyhenteroi);
una marca (con \mark);
un quéeseso (“whatsit”: con \write o \special).
53
Los últimos dos ı́temes son cosas especiales que veremos luego. Un “penalty” en la lista vertical
principal baja (o, si es negativo, sube) la probabilidad de un corte de página; no tiene efecto notable
dentro de una caja vertical. En una caja vertical, un crenaje ejecuta un movimiento hacia abajo del
monto especificado (o hacia arriba, si este monto es una longitud negativa); en una caja horizontal,
un crenaje produce un desplazamiento hacia la derecha o la izquierda.
Hay reglas precisas para los posibles ingredientes de una “lista horizontal”, es decir, un párrafo
o el interior de un \hbox, y también para una “lista matemática” formado por una fórmula en el
modo matemático: vea el TEXbook, pp. 95 y 157. En general, las listas contienen una sucesión de
cajas separadas a veces por goma, resortes y crenajes, con algunos adornos como reglas, penalties,
marcas, etc., intercalados de vez en cuando.
Ahora el texto será justificado en renglones de anchura 10 pc, sin sangrı́a y con más “tolerancia”
para renglones con espacios estirados entre palabras. (Plain TEX coloca \pretolerance=100 y
\tolerance=200; hay que ser menos exigente con la justificación de párrafos cortos.)
La última asignación es un tanto complicada, porque \vcenter solo opera en el modo matemático;
un $ debe ocurrir en el modo horizontal, ası́ que el $\vcenter{...}$ debe empacarse en un \hbox,
que luego se guarda en el registro \box7.
Los comandos \box n y \copy n escriben el contenido del registro de caja n. El comando
\box deja vacı́o el registro después de extraer su contenido; \copy extrae el contenido sin cambiar
el registro, es decir, escribe una copia de su contenido. Si este registro ha sido designado mediante
\newbox\micaja, y luego se asigna \setbox\micaja=\hbox{aquella}, entonces \copy\micaja o
\box\micaja imprimirá la palabra ‘aquella’ en la fuente que estaba en uso a la hora de empacarla
con \setbox.
54
11.4 Uso de resortes en cajas
Si el contenido de una caja pedida con to (o con spread) mide menos que las dimensiones
establecidas de la caja, habrá un “underfull box” si no se justifica el contenido con resortes. Compare
En el primer caso, se usa la longitud natural del contenido; como \hfil es un sinónimo de
\hskip 0pt plus 1fil, su longitud natural es 0 pt y no se nota su presencia. En la segunda caja,
se usa la estirabilidad de los resortes \hfil para justificar el ancho de la caja a 10 pc.
Los comandos \dotfill y \hrulefill son resortes visibles; producen una lı́nea de puntos y
una regla horizontal cuya “longitud natural” es de 0 pt (por lo tanto, invisible) pero que pueden
estirarse como \hfil para rellenar un espacio disponible. Hay otros dos resortes visibles, llamados
\rightarrowfill y \leftarrowfill, que producen flechas como \to y \gets (pero en modo
horizontal) cuyas aristas se estiran como resortes.
Hay que tener cierto cuidado en usar resortes fuera de cajas, porque TEX desecha goma y
resortes en algunas ocasiones cuando está confeccionando la lista vertical principal para la página
actual. En particular, TEX desecha goma (y resortes) y penalties al inicio de una página, para que
todas las páginas empiecen en una posición uniforme. Ası́, el código
\def\newpage{\vfill\eject}
htextoi
\newpage\newpage
htextoi
no genera una página en blanco entre los dos bloques de texto. El primer \newpage corta la página.
La siguiente página empieza con el resorte \vfill, que se desecha, y el \eject, cuya expansión es
\par\penalty-10000 (TEXbook, p. 353). Un \par es ignorado en el modo vertical, y el penalty al
inicio de la hoja también queda desechado. En resumen, el segundo \newpage no tiene efecto. Para
obtener una página en blanco, hay que teclear
\newpage\hbox{}\newpage
ya que la caja horizontal, aunque sea vacı́a, convierte el modo de vertical en horizontal y el segundo
\newpage tiene su efecto esperado. Para hacer más cómodo el trabajo, Plain TEX define el macro
\null como sinónimo de \hbox{} para situaciones como ésta.
En caso de duda, se puede prevenir la pérdida de resortes en esta forma al delimitarlos por
\null. Por ejemplo, el párrafo
alcanza el mismo objetivo con una caja larga, usando resortes para rellenar su contenido.
11.4.1. Traslapos de texto.
Para ilustrar las posibilidades de obtener efectos tipográficos con cajas y goma, consideremos
los macros \rlap y \llap de Plain TEX, que colocan texto a la derecha [respectivamente, a la
izquierda] de la posición actual sin avanzar. Con \rlap{halgoi} se puede colocar halgoi hasta en el
margen derecho; \llap{halgoi} lo coloca a la izquierda, quizás en el margen izquierdo, o en la caja
de sangrı́a al inicio del párrafo. Un carácter sobreescrito como /c puede obtenerse con \rlap/c o
55
bien con /\llap{c} (\rlap/ escribe una / y retrocede para poder colocar la ‘c’; \llap{c} retrocede
por la anchura de ‘c’ y luego escribe esta letra, en cima de la / ya puesto).
La definición \rlap{halgoi} es \hbox to0pt{halgoi\hss}. Esta caja vierte su contenido a la
derecha de su posición actual y el punto de impresión no avanza, ya que la caja tiene una anchura
de 0 pt. La goma \hss se contrae por la anchura natural de halgoi, y esto evita una protesta sobre
un “Overfull \hbox”: recuerde que TEX permite que el contenido de una caja salga del recinto de
la caja misma. Por lo tanto, el \hss funciona en la práctica como un retroceso no destructivo que
no borra el halgoi impreso.
\setbox0 = \hbox{payaso}
\dp0 = 0pt
$\underline{\box0}$ payaso
Este código engaña a TEX para que “no vea” las partes de las letras p, y que desciendan por
debajo de la lı́nea de base; luego la barra queda sobreescrita a estas letras.
[[ Si se requiere desplazar el punto de referencia, se disponen de \raisehdimensiónihcajai y
\lowerhdimensiónihcajai en el modo horizontal; análogamente, hay \moverighthdimensiónihcajai
y \movelefthdimensiónihcajai que funcionan en el modo vertical. Por ejemplo,
\def\Mc{M\raise.5ex\hbox{c}}
es un macro útil para bibliografı́as que citan libros publicados por McGraw-Hill. ]]
El macro de manipulación más útil que tiene Plain TEX es \smash, que en el modo horizontal
hace lo siguiente:
\setbox 0 =\hbox{#1}
\ht0 = 0pt \dp0 = 0pt \box0
que agarra el argumento de \smash, lo pone momentáneamente en una caja, aplasta la extensión
vertical de la caja y luego suelta el contenido de la caja aplastada. El macro \smash también
funciona en el modo matemático. Por ejemplo:
a b
$\smash{\pmatrix{a & b \cr c & d \cr}}$. .
c d
También hay un macro \phantom, que imprime una caja en blanco del tamaño de su contenido.
Funciona en los modos horizontal y matemático. Por ejemplo:
AB\phantom{CD}E AB E
$x - 2y + \phantom{3}z.$ x − 2y + z.
56
12 Macros avanzados
12.1 Definición con \def y \let
Los macros se definen normalmente con \def\nuevomacro{...}. Con este código, TEX crea
una nueva ficha \nuevomacro y la reconoce como sinónimo de su “texto sustituto”. Si este texto
cambia de sentido, el significado de \nuevomacro cambiará también. Ejemplo:
\def\a{aaa}
\def\bb{\a\a}\bb b
\def\a{cc}\bb
imprimirá ‘aaaaaab cccc’ por las dos instancias del macro \bb. Ası́, el mismo macro puede tener
variar expansiones distintas en diferentes oportunidades.
Esto puede resultar útil, pero también peligroso, por razones que deben de ser obvias. Para
prevenir contra lapsos de memoria (humana), TEX proporciona un mecanismo de definir un macro
que no está sujeto a cambios posteriores. El código
\let\algo = hfichai
asigna a la palabra de control \algo el significado de hfichai (que puede ser un carácter u otro macro)
en el momento de la asignación. Si la hfichai es un macro cuyo sentido es alterado posteriormente
con \def, la palabra de control \algo conserva el sentido original. Esto es útil para abreviaturas:
\let\del = \partial
\let\mete = \hookrightarrow
\let\to = \rightarrow
\let\dotunder = \d
\def\d{\delta}
que es apropiado para manuscritos con muchos δ. Como \d ya significa un acento poco usado (punto
debajo de la letra que sigue), se conserva la definición original en \dotunder.
El lado derecho de una asignación \let puede ser un carácter. En Plain TEX se establece =10pc
\let\bgroup={ \let\egroup=}
que definen \bgroup y \egroup cómo sinónimos de los caracteres que abren y cierran grupos. Por
lo tanto, \bgroup y \egroup abren y cierran grupos también. Sin embargo, estos agrupadores no
son reconocidos como tales dentro del texto sustituto de un macro. Luego, se puede definir
\def\abrircajita{\vbox to 0pt\bgroup\hsize=10pc}
\def\cerrarcajita{\vss\egroup}
que permite empacar unos párrafos delgados de texto (que, por tener una altura total de 0 pt,
traslaparán lo que sigue) con \abrircajita ... \cerrarcajita. El texto intermedio no debe ser
muy extenso, porque TEX no puede cortar una página hasta que la cajita esté cerrada con el \egroup
final.
Para quitar la definición de un macro (como \>, quizás) sin redefinirlo, se puede teclear
\let\> = \undefined
ya que el macro \undefined no ha sido definido por Plain TEX. El uso posterior de \> causa una
protesta sobre un Undefined control sequence, hasta que el macro \> sea redefinido explı́cita-
mente. (Esta anulación del macro \> está incorporado al formato AMS-TEX.)
57
12.2 Macros locales y globales
Un macro definido con \def o \let es “local”: si la definición ocurre dentro de un grupo, esta
definición desaparece al final del grupo. Por ejemplo, una fórmula larga con muchas δ y podrı́a
teclearse con abreviaturas temporales:
$$
\def\d{\delta} \def\e{\epsilon}
hfórmulai
$$
usando \d, \e dentro de la hfórmulai. Los $$ encierran un grupo; al terminar la fórmula, \d recupera
su definición original (un acento) y \e pierde la suya, pues antes de la fórmula no estaba definido.
Para conservar una definición hecha dentro de un grupo, hay que establecerla con \global\def
o \global\let; TEX tiene un sinónimo corto \gdef para \global\def. Veamos la definición de
\obeylines (TEXbook, p. 352):
{\catcode‘\^^M=\active%
\gdef\obeylines{\catcode‘\^^M=\active \let^^M=\par}%
\global\let^^M=\par}
Este código hace lo siguiente. El sı́mbolo ^^M es un convenio para denotar el carácter 13 de ASCII
(vea el TEXbook, p. 47), que es el retorno de carro ← ; el código \catcode‘\hcarácter i=\active
cambia la categorı́a de cualquier carácter a “activo” (categorı́a 13); ^^M funciona como macro dentro
del grupo encerrado por las llaves inicial y final, y es por eso que se colocan los % en las lı́neas internas
para suprimir los ← a su derecha. El \global\let define ^^M como sinónimo de \par, toda vez que
el retorno ← sea activo (normalmente es inactivo, con categorı́a 5); y \obeylines provee un macro
que establece estos convenios en forma temporal. Como \obeylines recibe su definición dentro de
un grupo, se usa \gdef para que esta definición no desaparezca en seguida.
Cualquier asignación de parámetro dentro de un grupo es también local; pero si la asignación es
precedida por \global, persiste fuera del grupo ambiente. Veamos la definición de \advancepageno
(TEXbook, p. 362):
\def\advancepageno{\ifnum\pageno<0 \global\advance\pageno by -1
\else \global\advance\pageno by 1 \fi}
que incrementa el registro \pageno por ±1.
58
12.4 Expansión de macros
Cuando TEX lee un macro, lo que hace normalmente es reemplazarlo por su “texto sustituto”;
si este texto contiene macros, serán leı́dos y reemplazados por sus propios textos sustitutos, etc.
Este proceso es lo que llamamos “expansión del macro”. A veces la expansión es inapropiada: por
ejemplo, en \def\nuevomacro{...}, no se expande \nuevomacro de una vez, porque aún no tiene
texto sustituto hasta que TEX haya leı́do el grupo {...}. Por ende, se suprime la expansión de
macros inmediatamente después de \def (y después de \let y \gdef y \font). También se suprime
la expansión cuando TEX está leyendo argumentos de un macro, el texto sustituto de una definición,
el preámbulo de un \halign y en algunas otras ocasiones (para la lista completa, vea el TEXbook,
p. 215).
Es posible suprimir la expansión de un macro \delicado al precedirlo con \noexpand: TEX
convierte \noexpand\delicado en la ficha ‘\delicado’ sin más expansión.
Por otro lado, a veces se requiere reactivar una expansión normalmente suprimida. Por ejemplo,
una lista de fichas en \uppercase{hfichasi} no se expande a la hora de su lectura inicial. Entonces
no cambia los caracteres a mayúsculas, pues \uppercase sólo afecta caracteres pero ignora macros,
y no expande el macro \clave. Si hubiera un comando \expand para hacer una expansión in-
mediata de lo que sigue, tampoco servirı́a, pues en \uppercase{\expand\clave} los dos macros
\expand\clave serı́an engullidas por \uppercase sin expansión. Pero TEX sı́ tiene un comando
\expandafter, que hace lo siguiente:
\expandafterhficha1 ihficha2 i
expande la hficha2 i (y otras fichas, si este posee un argumento) y luego coloca hficha1 i antes de la
expansión. Ası́, podemos decir
\def\CLAVE{\expandafter\uppercase{\clave}}
para obtener los caracteres de \clave en mayúsculas. Obsérvese que la segunda ficha después
de \expandafter es el abre-grupo { que es incompleto en sı́; luego se expande el texto equilibrado
{\clave} en {Alguna Cosa}, y el texto sustituto de \CLAVE deviene en \uppercase{Alguna Cosa},
que produce ALGUNA COSA.
colocado después de una ecuación de dudosa validez, produce los caracteres ‘Ojo: Revise la
ecuacion 4.6!’ en el archivo TeX log.
Un archivo fuente puede pedir una lı́nea de texto de la terminal, que luego se convertirá en el
texto sustituto de un macro. Por ejemplo,
\read16 to \nombre
59
12.5.2. Lectura de lı́neas de archivos externos.
El comando \read también puede usarse con archivos externos (aparte de los que se leen con
\input), hasta un máximo de 16 archivos, numerados de 0 a 15. (Por convenio, 16 significa la
terminal.) Primero se abre un canal de lectura con
\openinhenteroi = harchivoi
donde henteroi ∈ {0, 1, . . . , 15} y harchivoi es el nombre de un archivo en disco. (Se puede omitir la
extensión ‘.tex’ si el nombre del archivo termina con esta extensión.) El número henteroi puede ser
designado por el comando \newread de Plain TEX, que es análogo a \newcount y reparte canales
de lectura.
Por ejemplo, una lista de nombres (uno por lı́nea del archivo) confeccionada con una base de
datos en el archivo nomlista.tex puede ser leı́do y procesado por:
\newread\losnombres
\openin\losnombres = nomlista
\ifeof\else\read\losnombres to\nombre \procesar\nombre\fi
...
\closein\losnombres
\writehenteroi{hfichasi}
enviará la lista de fichas (con sus macros expandidos) al archivo correspondiente. Si henteroi es 16,
estas fichas serán enviadas a la terminal.
El formato LaTEX mantiene un sistema de referencias e ı́ndices mediante un conjunto de archivos
auxiliares. Podemos emular este sistema con el código:
\newwrite\ayuda
\openout\ayuda = \jobname.aux
El comando \jobname es el nombre del archivo que se está levantando (sin extensión ‘.tex’); si este
archivo es asco o bien asco.tex, el canal \ayuda conducirá a un nuevo archivo asco.aux.
Podemos dividir el archivo fuente en secciones, enumeradas con un contador \secno, con un
macro como el siguiente:
\def\seccion#1\par{\advance\secno by 1
\bigbreak\noindent{\bf\the\secno.\enskip #1}%
\write\ayuda{Parte \the\secno: hoja \the\pageno}%
\par\nobreak\medskip}
el cual, entre otras cosas, escribe algo como ‘Parte 3: hoja 17’ en el archivo asco.aux (si la tercera
sección empieza en la página 17).
[[ Para controlar la numeración de páginas en \write\ayuda{...\the\pageno...}, la expan-
sión de la lista de fichas en un \write queda diferido hasta el momento de la ejecución del \shipout
correspondiente en la rutina de salida. Si se desea una expansión inmediata de estas fichas, se puede
decir \immediate\write. El comando \typeout de LaTEX usa un \immediate\write16 para enviar
60
lı́neas a la terminal; en contraste con \message, un \write16 siempre comienza una lı́nea nueva en
el archivo TeX log. ]]
Si se requiere escribir un macro en un archivo auxiliar con \write, hay que inhibir su expansión
en el argumento de \write. Por ejemplo, podemos modificar la tercera lı́nea de la definición de
\seccion ası́:
\write\ayuda{\noexpand\secdeindice\the\secno:\the\pageno;}%
y ahora se enviará algo como ‘\secdeindice 3:17;’ al archivo asco.aux. Ahora se puede formatear
el ı́ndice apropiadamente con \def\secdeindice#1:#2;{...}.
12.5.4. Comunicación con la rutina de salida.
Un mecanismo análogo puede usarse para pasar listas de fichas a la rutina de salida. Por
ejemplo, si el encabezado de la página depende del tı́tulo de la sección actual, se requiere establecer
una lista de fichas (el tı́tulo mismo o una versión corta de él) que luego se incluirán en el \headline.
Esto se hace mediante un sistema de “marcas” en el texto, establecidas con el comando \mark. Si
el archivo fuente contiene
\mark{hfichasi}
TEX coloca una “marca” en la lista vertical principal en el sitio donde encontró el comando \mark;
no se imprime hfichasi en este lugar sino que la marca los expande y mantiene en reserva la lista
expandida de fichas.
Se obtiene acceso al contenido de una marca mediante los comandos \botmark, \firstmark
y \topmark, que denotan la última marca en la página actual, la primera marca en la página actual y
la última marca en la página anterior, respectivamente. Si no hay marca alguna en la página actual,
estos tres comandos usan el \botmark anterior; inicialmente son listas de fichas vacı́as. Luego, el
código
\headline={\tenrm\hfil\firstmark\hfil\folio}
\def\seccion#1\par{...\mark{#1}...}
\special{hfichasi}
crea un “quéeseso” (“whatsit”), sobre el cual TEX sabe únicamente su posición de referencia en la
página. Para incluir un archivo de PostScript, por ejemplo, el programa reconoce una instruccion
como \special{ps: harchivoi} o quizás \special{postscript harchivoi}, donde harchivoi es el
nombre de un archivo .ps o bien .eps, con código PostScript.
No hay garantı́a alguna de que el efecto del \special sea la misma en dos sistemas diferentes;
en ese sentido, el uso de este recurso arriesga perder la caracterı́stica sobresaliente del TEX: su
61
portabilidad. Para minimizar ese riesgo, Tom Rocicki, el creador del interfase dvips, ha escrito un
archivo auxiliar epsf.tex (con una versión epsf.sty para LaTEX), que proporciona una manera
estándar de incorporar archivos .eps en un documento levantado con TEX. Este archivo es muy
recomendable para los que quieren incorporar gráficos hechas con PostScript en documentos hechas
en Plain TEX.
Otra clase de extensión al TEX es la que permite usar texto en colores (o en escalas de gris).
Esto requiere una implementación que incluye un comando \special{color htintai}, donde htintai
puede ser un color primario: red, green o blue, o bien alguna combinación de ellos. Todavı́a no hay
acuerdo universal sobre los convenios que deben usarse, ya que el uso de colores depende fuertemente
de las tecnologı́as de impresión, aun en plano desarrollo.
13 Archivos de Formato
Todos los macros de Plain TEX están definidos en el Apéndice B del TEXbook. Por ejemplo,
\centerline y \line son macros de Plain TEX. Los ingredientes de sus expansiones finales, como
\hbox, \hsize y \hss, no son macros sino que son comandos “primitivos” de TEX. Hay 325 coman-
dos primitivos inede TEX y 554 macros de Plain TEX en total: todos están en el ı́ndice del TEXbook.
(Algunas implementaciones, como Textures, tienen el formato Plain TEX incorporado; pero todas
poseen un preformato, llamado IniTEX o VirTEX, que incluye solamente los comandos primitivos,
para poder instalar otros formatos.) El formato alternativo de mayor uso es LaTEX, un formateador
de documentos; también hay un formato AMS-TEX, patrocinado por la AMS (American Mathe-
matical Society); y una versión extendida de Plain TEX llamado EPlain, de Karl Berry, entre otros.
Hay varios formatos que extienden el Plain TEX o el LaTEX para permitir la inclusión de dibujos
con comandos de TEX (sin recurrir a interfases con archivos externos); entre ellos, se destacan el
PICTEX de Michael Wichura, el DraTEX de Eitan Gurari, y especialmente el XY-pic de Kristoffer
Rose y Ross Moore.
El Apéndice E del TEXbook incluye muestras de colecciones de macros para diversos propósitos:
cartas, afiches musicales y el propio TEXbook. Estos archivos de macros pueden convertirse en una
forma compacta, llamado formato, para uso eficiente con TEX. Se prepara un archivo de macros,
y en vez de terminarla con \bye o \end, se coloca \dump como última instrucción. El resultado
de levantar este archivo es un archivo binario que TEX puede leer a alta velocidad, para mayor
rapidez en el levantamiento de otros documentos con este formato. En particular, LaTEX requiere
este preprocesamiento, para poder interpretar el comando \documentclass que aparece al inicio de
cada uno de sus documentos.
\catcode‘\hcarácter i = henteroi
asigna al hcarácter i la categorı́a henteroi (entre 0 y 15). Cuando TEX se inicializa por primera vez,
las letras (del abecedario inglés) ya tienen categorı́a 11 y \ tiene categorı́a 0. Luego se establece
\catcode‘\{=1, etc., en conformidad con la tabla de § 6.1.
62
Se asignan luego otros códigos que identifican caracteres como sı́mbolos matemáticos y como
delimitadores en fórmulas. Por ejemplo, se incluye
\mathcode‘\- = "2200
que indica que en el modo matemático, un guión debe interpretarse como el carácter "00 (numeración
hexadecimal) de la familia matemática 2 (una fuente de sı́mbolos cmsy), el cual es el signo menos,
y le asigna la clase 2 (una operación binaria). A los delimitadores (paréntesis, corchetes, etc.) que
son caracteres del teclado, se asigna un \delcode con una codificación aún más compleja.
Algunos macros de Plain TEX deben ser inaccesibles al usuario para que no los modifique sin
intención. Para hacer eso, se asigna ahora \catcode‘\@=11 y se reasigna \catcode‘\@=12 al final
del archivo plain.tex. La idea es que el carácter @ sea reconocido temporalmente como “letra”
dentro del archivo del formato. Entonces \m@th es una palabra de control dentro de plain.tex
pero en un documento normal se lee como un juego de 4 fichas \m, @, t, h. Si este comando
fuera denominado \math o \moth o \myth, un usuario podrı́a —con la mejor intención— redefinirlo
con \def, produciendo un caos impresionante a la hora de levantar el documento.*
13.1.2. Designación de registros.
Plain TEX define repartidores de registros: \newcount, \newdimen, \newskip, \newmuskip,
\newbox, \newhelp (para mensajes de ayuda a la terminal), \newtoks, \newread, \newwrite,
\newfam (para familias de sı́mbolos matemáticos), \newinsert (para inserciones flotantes) y final-
mente \newlanguage (para patrones de división silábica).
[[ Estos macros se definen con \outer\def: si \macromio es definido con
\outer\def\macromio{...}
\pretolerance=100 \tolerance=200
(un \jot es una unidad para estirar el espacio entre renglones de un despliegue multilineal).
63
13.1.4. Fuentes.
El próximo paso es cargar las fuentes. Con \font\tenrm = cmr10 se lee los parámetros métricos
de la fuente cmr10 y se le designa con la palabra de control \tenrm. Plain TEX usa 16 fuentes de la
familia Computer Modern:
que hace que \rm signifique \tenrm en el modo horizontal, pero \fam0 en el modo matemático. La
familia 0 usa \tenrm en los tamaños \textstyle y \displaystyle, usa \sevenrm en el tamaño
\scriptstyle y usa \fiverm en el tamaño \scriptscriptstyle. Por ende, se puede usar \rm por
doquier y TEX se encargará de interpretarlo.
Se establecen convenios análogos para que \it, \sl, \bf, \tt puedan usarse dentro y fuera de
modo matemático. También se definen
\def\mit{\fam1} \def\cal{\fam2}
que permite el uso de los cambios de fuente \mit y \cal en el modo matemático solamente.
13.1.5. Macros para texto.
Sigue una larga lista de macros para formatear párrafos de texto. Aquı́ se definen \obeylines;
\quad y \qquad; \smallskip, \medskip, \bigskip; \break, \nobreak, \eject; \line, \leftline,
\rightline y \centerline; \strut; \item, \itemitem y \narrower; \proclaim (para formatear
enunciados de teoremas) y \beginsection (para formatear tı́tulos de secciones); \raggedright;
\dots; acentos de texto; resortes visibles como \dotfill y \hrulefill; y \bye. También se
establecen aquı́ los macros para tabulación \+, \settabs y \cleartabs, que usan una compleja
manipulación de cajas vacı́as para establecer las posiciones de los tabuladores.
13.1.6. Macros para matemáticas.
La parte más larga de plain.tex se dedica a macros para fórmulas matemáticas. La mayorı́a
de los sı́mbolos se declaran con \mathchardef. Por ejemplo, \mathchardef\alpha="010B asigna el
nombre \alpha a la posición "0B de la familia 1, que es el sı́mbolo α, con clase 0 (sı́mbolo ordinario).
Los delimitadores \langle, etc., son declarados de modo similar com \delimiter. Los acentos
matemáticos \acute, etc., se definen con el comando primitivo \mathaccent para distinguirlos de
los acentos de texto, que usan \accent.
64
Las flechas largas como \longrightarrow −→ y \Longrightarrow =⇒ se forman de combi-
naciones −→ y =⇒ con un retroceso intermedio (\mkern-3mu) para eliminar la separación. En la
confección de los tipos Computer Modern, se previó que los caracteres − y = estuvieran a la altura
exacta para pegarse justamente con las barras horizontales de las flechas. Las definiciones precisa
de −→ y =⇒ son:
\def\relbar{\mathrel{\smash-}} \def\Relbar{\mathrel=}
\def\joinrel{\mathrel{\mkern-3mu}}
\def\longrightarrow{\relbar\joinrel\rightarrow}
\def\Longrightarrow{\Relbar\joinrel\Rightarrow}
y el usuario podrı́a definir flechas aun más largas con:
\def\Verylongrightarrow{\Relbar\joinrel\Longrightarrow} ==⇒
si tuviera la necesidad de emplearlas.
Algunos operadores son declarados usando \mathop. Tenemos, por ejemplo,
\def\cos{\mathop{\rm cos}\nolimits}
\def\det{\mathop{\rm det}}
que define \cos y \det como palabras con letra romana con un espaciamiento alrededor que es
apropiado para operadores grandes. El \nolimits indica que los subı́ndices y exponentes se colocan
a la derecha — como en cos2 θ — y no arriba y abajo, en fórmulas desplegadas. El mismo mecanismo
puede emplearse para definir \sen, \sech, \tg y otros “operadores de palabra” que Plain TEX omite.
Vale la pena mencionar algunos macros que dan efectos especiales. Aquı́ se definen \smash, que
imprime su argumento, pero esconde su extensión vertical; y \phantom, que mantiene las dimensiones
de su argumento pero no lo imprime. Tanto \smash como \phantom funcionan en modo horizontal
y en modo matemático. Además, hay un macro \buildrel que construya relaciones compuestas
(en modo matemático):
α
$\buildrel\alpha\over\longrightarrow$ −→
def
$\buildrel\rm def\over=$ =
En general, $\buildrel #1\over #2$ coloca #1 en cima de #2 y, usando \mathrel{...}, declara
que es resultado es una relación.
Plain TEX provee dos clases de alineamientos matemáticos: matrices como \matrix y \pmatrix
y fórmulas con \eqalign se montan con un \halign dentro de un \vcenter. Para otras fórmulas
multilineales, se definen \eqalignno, \leqalignno y \displaylines como macros que emplean un
\halign to \displaywidth{...}. Luego un despliegue multilineal puede tener varios \eqalign
pero solo uno de cualquiera de los otros.
13.1.7. Macros para la rutina de salida.
Aquı́ Plain TEX define los macros \folio, \nopagenumbers, etc., ya discutidas en la § 9.1. Un
macro complejo es \footnote, que usa una inserción flotante (designado con \newinsert\footins)
para guardar el contenido de la nota. Con \newinsert\topins se abren registros para guardar otras
inserciones flotantes creados con los macros \topinsert, \midinsert o \pageinsert. Estos abren
una caja vertical con \vbox\bgroup, que debe cerrarse con \endinsert (cuya definición incluye
el \egroup correspondiente). Los macros para \plainoutput discutidas en la § 9.1 reciben sus
definiciones aquı́. Luego Plain TEX establece su rutina de salida con \output={\plainoutput}.
13.1.8. Otros macros.
Ahora plain.tex contiene \input hyphen, para leer el archivo auxiliar hyphen.tex que con-
tiene padrones para división silábica (en inglés).
Después, Plain TEX define \magnification y declara \normalbaselines (interlineación de
12 pt), \rm (letra romana) y \nonfrenchspacing (espaciamiento extra después de signos de pun-
tuación) para inicializar el trabajo que sigue. Finalmente, esconde sus macros privados con la
declaración \catcode‘\@=12.
65
13.2 Introducción al AMS-TEX
AMS-TEX es un formato para levantar artı́culos matemáticos en una forma que aproxima el
estilo de una revista especializada. Está patrocinada por la AMS (American Mathematical Society);
las revistas de la AMS y algunas otras aceptan manuscritos — de calidad y originalidad suficientes
— hechos con AMS-TEX.
AMS-TEX no rehace el trabajo de Plain TEX, sino que agrega varios macros más a los que
Plain TEX ya define. Los aspectos en donde extiende Plain TEX de modo significativo son: organi-
zación del documento, formateo de fórmulas, uso de fuentes especiales y chequeo de sintaxis. Alguién
que ya conoce bien al Plain TEX será capaz de aprender AMS-TEX en una tarde.
13.2.1. Organización del documento.
Se da por un hecho que el usuario de AMS-TEX quiere escribir un artı́culo o algo muy parecido.
Se preve un tı́tulo destacado al inicio, una sección de referencias al final, y una organización del
texto principal en secciones y subsecciones.
La parte titular se incluye entre los comandos \topmatter y \endtopmatter. Allı́ se colo-
can el tı́tulo, el o los autores, su o sus direcciones, etc., dentro de bloques \title...\endtitle,
\author...\endauthor, \address...\endaddress, etc. Un resumen del artı́culo va dentro de un
bloque \abstract...\endabstract. El formato AMS-TEX se encarga de eligir estilos, tamaños,
justificaciones, etc., para estos bloques de texto.
Al final del artı́culo hay una sección \Refs...\endRefs, en donde aparecen referencias indi-
viduales en bloques \ref...\endref. La presentación de una lista de referencias debe seguir una
normativa especial establecida por las revistas de matemáticas; AMS-TEX se encarga de interpretar
esta normativa y traducirla en un texto levantado: vea el Apéndice B del Joy of TEX.
La rutina de salida de AMS-TEX coloca el contenido de los bloques \title y \author en los
encabezados derecha e izquierda de las hojas del artı́culo. Los tı́tulos de secciones deben incluirse
en bloques como \head...\endhead y \subhead...\endsubhead.
Al inicio del documento, deben colocarse los macros especı́ficos de ese trabajo, definidos con
\define\mimacro{...}. (El \define es una versión de \def, disponible solamente en AMS-TEX,
con ciertas protecciones incorporadas para que no se cambie un macro ya definido: para poder
cambiar un macro viejo, hay que teclear \redefine\viejomacro{...}.) Luego sigue el bloque
\topmatter...\endtopmatter. Después viene el texto principal del documento, que debe empezar
con \document y terminar con\enddocument (que es esencialmente un sinónimo de \bye).
13.2.2. Formateo de fórmulas.
Se levantan fórmulas como en Plain TEX. Lo que contribuya AMS-TEX es una versión muy
pulida del formateo de despliegues multilineales. Una matriz se levanta con:
En cada caso, AMS-TEX mide la anchura del alineamiento total antes de colocar etiquetas a sus
ecuaciones, y ası́ previene contra traslapos de ecuación y etiqueta que a veces ocurren con Plain TEX.
AMS-TEX además posee una facilidad \CD...\endCD para formatear los temibles “diagramas con-
mutativos” de un modo “amistoso”.
13.2.3. Fuentes de la AMS.
Otra particularidad de AMS-TEX es el uso (opcional) de fuentes especiales de sı́mbolos, hechos
con METAFONT, a pedido de la AMS; también están disponibles, sin costo alguno, en formato
66
PostScript. Estos pertenecen a las series msam y msbm de la propia AMS, y eufm (Euler Fraktur
Medium) del Proyecto Euler.† Estos fuentes se cargan con las instrucciones:
Los primeros son de “fuente abierta” o “blackboard boldface”; los otros son de estilo “fraktur”, a
veces mal llamada “letra gótica”. (AMS-TEX permite usar \goth como sinónimo de \frak, para
no confundir éste con el \frac de fracciones.)
Se dispone también de dos fuentes de “negrilla matemática” en Computer Modern, cmmib
y cmbsy. No son cargadas por Plain TEX, pero AMS-TEX los carga con \loadbold. Es una
peculiaridad de AMS-TEX que no permite usar \rm, \bf, \it, \sl, \tt en el modo matemático
(en eso difiere de Plain TEX), pero permite el acceso a caracteres solitarios en modo matemático
con $\roman x$, $\bold y$, etc.
13.2.4. Chequeo de sintaxis.
AMS-TEX incorpora una rutina para revisión sintáctica de un archivo fuente, sin levantamiento
de páginas ni impresión de caracteres. Si al inicio de un archivo se coloca \syntax, se hace una
rápida revisión del archivo y se generan los mensajes de error apropiadas en el TeX log; pero no hay
aviso sobre “overfull boxes” ni hay emisión de páginas. Esto se logra al reemplazar todas las fuentes
activas con una fuente especial dummy cuyos parámetros de tamaño son todos cero. Al no tener que
calcular el espacio para las cajas de letra, el procesamiento es notablemente más rápido; una vez
que se hayan eliminado los errores sintácticos, se puede suprimir el comando \syntax para ver el
texto (con todos sus “overfull boxes”).
13.2.5. Archivos de estilo.
El formato AMS-TEX establece comandos genéricos; un estilo especı́fico, para “preprints”, está
determinado por el archivo auxiliar amsppt.sty, que se carga con la instrucción
\documentstyle{amsppt}
al inicio del archivo. Otros estilos (para la producción final de revistas de la AMS) existen pero no
han sido distribuidos al público. El archivo amsppt.sty establece el formateo exacto del “topmatter”
y carga automáticamente las fuentes especiales de la AMS. También abre otro archivo auxiliar
amssym.tex que contiene los \mathchardef de los sı́mbolos nuevos de la AMS. Para el catálogo de
estos sı́mbolos, vea el AMS Fonts User’s Guide. Este archivo puede abrirse también con el comando
\UseAMSsymbols.
Para usar AMS-TEX, debe haber en disco una copia del archivo de formato (hecho con \input
amstex y \dump) en un directorio de formatos, y los archivos amsppt.sty y amssym.tex en un
directorio de “inputs” (archivos auxiliares).
† Un proyecto tipográfico de la Universidad de Stanford, que diseñó los tipos para libros como
Concrete Mathematics de Graham et al.
67
A modo de ejemplo, un libro se divide en capı́tulos, un capı́tulo en secciones, una sección en
subsecciones, etc.; el autor debe poner el tı́tulo de cada subdivisión, pero los detalles secretariales
— numeración, referencias al ı́ndice, selección de estilos de letra, confección de encabezados, etc. —
pueden dejarse al programa. LaTEX es ese secretario que enumera, organiza y formatea el documento
(usando TEX) con la información mı́nima necesaria. Por ejemplo, el usuario puede teclear
en su archivo fuente noticias.tex, y LaTEX recordará que el capı́tulo actual es el tercero, la sección
actual es la 5, que han habido 8 subsecciones anteriores en esta sección; luego colocará
en una lı́nea aparte, con separación vertical apropiada antes y después, colocará una marca para
pasar el tı́tulo de la subsección a la rutina de salida y ası́ modificar los encabezados de páginas, y
escribirá información en un archivo noticias.toc para luego incluirla en el ı́ndice de contenidos.
En otras palabras, LaTEX asume la responsabilidad del formateo del documento, y permite que
el autor se concentre en los detalles lógicos o “de alto nivel” de su documento. Las ventajas de este
diseño son claras; pero hay una notable desventaja: la sintaxis adoptada por LaTEX para “esconder”
las operaciones rutinarias de Plain TEX es tan compleja, o quizás más compleja aún, que la sintaxis
de Plain TEX. Este desventaja está compensada por la gran cantidad de buenas manuales, para
usuarios de todo tipo, que el mercado ofrece hoy en dı́a. (En la bibliografı́a se mencionan algunas
de estos manuales.)
La versión original de LaTEX, escrito entre 1985 y 1989 por Leslie Lamport, llegó hasta su
versión 2.09. Desde 1994, ha sido reemplazado por una nueva versión estándar, a veces llamado
LaTEX 2ε (hay planes para desarrollar, en el futuro remoto, una versión definitiva que será el LaTEX 3).
Aunque hay usuarios que todavı́a se obstinan en emplear la ya muy obsoleta LaTEX 2.09, la versión
estándar es mucho más flexible.
Muchos otros formatos han sido modificados para hacerlos compatibles con LaTEX. En par-
ticular, debemos mencionar el AMS-LaTEX, que es un paquete de archivos, confeccionados por la
AMS, que agrega al LaTEX toda la funcionalidad de AMS-TEX y que ya ha desplazado a éste en
las preferencias de los autores.
Sin pretender, entonces, entrar en detalle respecto de las rutinas de LaTEX, pasaremos revista
a sus rasgos más importantes de diseño documental.
13.3.1. Archivos de estilo.
Cada instalación de LaTEX coloca en un directorio apropiado, donde el programa TEX los puede
leer, un gran número de archivos de estilo. Estos archivos, generalmente con una extensión .cls,
determinan las caracterı́sticas de la “clase de documentos” preferida. El más usado es la clase
article.cls, para escribir artı́culos. También hay clases report.cls, book.cls y letter.cls,
apropiados para informes más largos, libros de bolsillo y cartas, respectivamente. Para escribir
un artı́culo en tamaño de letra de 12 pt, en papel europeo, hay que iniciar el documento con la
instrucción
\documentclass[12pt,a4paper]{article}
que asigna los parámetros apropiados para ese documento, con las “opciones” (entre corchetes,
separados por comas) elegidas. (Por defecto, un simple \documentclass{article} usará un tamaño
de letra de 10 pt y papel americano (8.5 in × 11 in.)
Para elegir opciones suplementarias, disponibles en “paquetes” de archivos auxiliares, general-
mente con una extensión .sty, la segunda instrucción debe ser \usepackage{...}. Por ejemplo,
\usepackage{amssymb,amsthm}
68
prepara para el uso de las fuentes de la AMS (descritas en la sección 13.2), definiendo los nombres
usuales de esos sı́mbolos; además, define la sintaxis apropiada para los enunciados de teoremas y
proposiciones al estilo de AMS-LaTEX.
Hay una disposición para aquellas ocasiones, lamentablemente frecuentes, en donde uno recibe
un documento levantado con la versión obsoleta de LaTEX. Estos archivos anacrónicos se detectan
por la presencia de la instrucción \documentstyle, el antecesor de \documentclass. LaTEX puede
procesar ese archivo, mediante su “modo de compatibilidad”, pero con una notable lentitud. Es
preferible reemplazar una instrucción como
\documentstyle[11pt]{article}
\documentclass[11pt]{article}
\usepackage{latexsym}
que además lee el archivo latexsym.sty que define unos sı́mbolos que formaban parte del viejo
LaTEX (notablemente el cuadrado abierto \Box), pero que hoy en dı́a son opcionales.
13.3.2. Archivos auxiliares.
Cada documento genera uno o más archivos ‘.aux’ en donde se guarda información que registra
contrarreferencias a otras partes del texto. Si se requiere un ı́ndice de contenidos, se crea un
archivo ‘.toc’ en donde los comandos de secciones escriben (con \write) información y macros
para formatear dicho ı́ndice. Lo que hay que notar es que esta información no puede usarse hasta
la próxima vez que se intenta levantar el documento. Luego, una de las primeras cosas que hace
LaTEX es abrir y leer los archivos ‘.aux’ y ‘.toc’ generadas por “corridas” anteriores del mismo
documento. Si han habido cambios en el archivo fuente, estos modificarán los archivos auxiliares y
a veces se requieren varios ciclos para obtener un documento estable.
13.3.3. Ambientes.
El elemento de diseño más importante de LaTEX es el concepto de ambiente. Un ambiente es
una parte del documento que debe formatearse de modo diferente del texto principal. Por ejemplo,
una cita textual debe tener margenes encogidos; LaTEX establece un ambiente quote que coloca un
brinco vertical antes y después de la cita, modifica \leftskip y \rightskip en forma simétrica, y
quizás cambia el estilo de letra. El usuario debe teclear
\begin{quote}
htexto de la citai
\end{quote}
y nada más; las instrucciones de formateo están metidos en los archivos ‘.cls’ y por ende difieren
de una \documentclass a otra.
Cada ambiente de LaTEX tiene un nombre ambiente (sin vara) y forma un bloque que debe
empezar con \begin{ambiente} y terminar con \end{ambiente}. Hay ambientes para formatear
texto (quote, quotation, verse, center, flushleft, flushright); para despliegues matemáticos (displaymath,
equation, array, eqnarray); para figuras y tablas (figure, table); para referencias (thebibliography); para
alineamientos (tabbing, tabular); para listas de ı́temes (itemize, enumerate, description); en fin, para
cualquier propósito que requiere un formateo fuera de lo común. (Hay un ambiente especial picture
que tiene una limitada capacidad de graficación, usando algunas fuentes especiales de LaTEX; pero
no es de fácil manejo.) Finalmente, hay una facilidad \newenvironment que permite al usuario
definir nuevos ambientes o modificar ambientes existentes.
Diversos ambientes tienen una forma variante, indicado con un asterisco después del nom-
bre. Por ejemplo, eqnarray genera una ecuación desplegada multilineal (parecida a \eqalignno)
numerado automáticamente con un contador; su forma variante eqnarray* suprime el número de la
ecuación.
69
Los ambientes para listas usan el comando \item para formatear las entradas de las listas. En
el ambiente itemize, cada \item genera una seña flotante al inicio de un párrafo con sangrı́a colgante
(que podrı́a ser •, –, , o algo parecido). En el ambiente enumerate, el \item genera un número
flotante a la izquierda; los ı́temes consecutivos son numeradas 1, 2, 3, etc., en forma automática
(usando un registro \count). Para una lista secundaria, es cuestión de encajar un ambiente dentro
de otro:
\begin{itemize} ... \begin{itemize} ...
\end{itemize} ... \end{itemize}
\lamacro[hopcionesi]{hargumentosi}
donde hopcionesi son “argumentos opcionales”, separados por comas; si no hay argumentos op-
cionales, los corchetes se omiten. Por ejemplo, \newcommand tiene un argumento opcional que debe
ser un entero n ∈ {1, 2, . . . , 9}, que indica su número de parámetros.
Bibliografı́a
[1] Paul W. Abrahams, TEX for the Impatient, Addison–Wesley, Reading, MA, 1990.
[2] AMS Fonts User’s Guide, versión 2.2, American Mathematical Society, Providence, RI, 1995.
[3] Malcolm Clark, A Plain TEX Primer, Oxford University Press, Oxford, 1992.
[4] Victor Eijkhout, TEX by Topic, Addison–Wesley, Reading, MA, 1992.
[5] Michel Goossens, Frank Mittelbach & Alexander Samarin, The LaTEX Companion,
Addison–Wesley, Reading, MA, 1994.
[6] Ronald L. Graham, Donald E. Knuth & Oren Patashnik, Concrete Mathematics,
Addison–Wesley, Reading, MA, 1989.
[7] Eitan M. Gurari, TEX and LaTEX: Drawing and Literate Programming, McGraw-Hill, New
York, 1994.
[8] Donald E. Knuth, The TEXbook, Addison–Wesley, Reading, MA, 1986.
[9] Donald E. Knuth, TEX: The Program, Addison–Wesley, Reading, MA, 1986.
[10] Leslie Lamport, LaTEX: A Document Preparation System, segunda edición, Addison–Wesley,
Reading, MA, 1994.
[11] Raymond Seroul, Le petit Livre de TEX, InterEditions, Paris, 1989.
[12] Michael Spivak, The Joy of TEX, segunda edición, Addison–Wesley, Reading, MA, 1990.
[13] TUGboat: Communications of the TEX User’s Group, TEX User’s Group, Portland, Oregon;
publicado cuatro veces al año.
70
Epı́logo
Este documento fue concebido originalmente para un curso de entrenamiento en el uso de TEX,
tanto a nivel básico como a nivel intermedio, que ofrecı́ en la Universidad de Costa Rica entre agosto
y noviembre de 1990. En aquél tiempo, se componı́an los textos cientı́ficos con una gran variedad
de procesadores de palabras, todos mas o menos decentes para la tarea cotidiana de escribir cartas,
informes y artı́culos de periódicos. Los que apostamos a la emergencia de TEX como software
universal para textos cientı́ficos debido, ante todo, a su portabilidad entre diversos sistemas de
operación, eramos aún una minorı́a.
Decidı́ escribir, no un manual de fácil entrada para uso del usuario casual (hoy dı́a abundan
excelentes manuales de ese tipo), sino un breviario de referencia para quienes necesitaban el siguiente
paso: acceso al lenguaje de programación de TEX. Por supuesto, el TEXbook ya cumple esa función,
de una forma bastante definitiva, pero se rumoreaba que era de difı́cil lectura (fue un rumor que
nunca logré confirmar). El curso presupone que su usuario quiere ahondar en el formato Plain TEX,
descrito en el TEXbook.
Varios años después, TEX ahora es indispensable para cualquier comunicación a distancia en la
ciencias fı́sicas o en las matemáticas; con el crecimiento de la red Internet, ha logrado dominar el
mercado de preprints cientı́ficos en forma absoluta. Basta echar una mirada al sitio xxx.lanl.gov
o alguno de sus “espejos” nacionales. Con el crecimiento del CTAN (Comprehensive TEX Archive
Network), se dispone de una enorme cantidad de información, de fácil acceso, sobre el buen uso
de TEX, ası́ que este curso ya no hace tanta falta. Para esta versión, modifiqué solamente aquéllos
párrafos que presuponı́an el uso de una Macintosh con el programa Textures (que sigue siendo la
mejor implementación integrada de TEX).
Algo ya previsible en 1990 era la emergencia del formato LaTEX como sistema viable y flexible
para quienes no deseen dedicar su escaso tiempo a detalles de presentación visual de sus ideas.
Con el advenimiento de LaTEX 2ε , que ha logrado estandarizar y extender la variedad de estilos de
documento disponibles, el Plain TEX ha pasado a segundo plano. Espero, sin embargo, que estas
notas sean de alguna utilidad para quienes desean “levantar la tapa” para ver como funciona la
maquinaria por dentro.
Joseph C. Várilly
[email protected]
San José, Diciembre de 1998
71
Indice Alfabético
→, 2, 26, 37. ^, 13, 26. amssym.tex, 67.
\→ ( ), 4. ^^M, 58. amssymb.sty, 68.
← , 2, 26, 32, 33, 58, 59. \^ ( ˆ ), 3. AMS-TEX, 4, 32, 57, 62, 66.
\← ( ), 4. _, 13, 26. amsthm.sty, 68.
, 26. \_ ( ), 39. Anchura, 28, 41, 51, 66.
\ ( ), 4. ‘ ( ‘ ), 2. \angle ( 6 ), 10.
!‘ ( ¡ ), 3. ‘‘ ( “ ), 2. Anulación de tabuladores, 39.
\" ( ¨ ), 3. \‘ ( ` ), 3. Anulación de un macro, 57.
#, 26, 40, 43. {, 26, 57, 59. Apóstrofe, 2, 14.
\# ( # ), 1. \{ ( { ), 12. \approx ( ≈ ), 10, 11.
$, 9, 13, 26, 31, 32. | ( | ), 10, 12. \arccos ( arccos ), 17.
$$, 9, 31, 32. \| ( k ), 10, 12. \arcsin ( arcsin ), 17.
\$ ( $ ), 1, 5. }, 26, 57. \arctan ( arctan ), 17, 44.
%, 26, 36. \} ( } ), 12. Archivo auxiliar, 60, 65, 67,
\% ( % ), 1. ~, 20, 26, 30. 69, 70.
&, 18, 26, 37, 40, 43. \~ ( ˜ ), 3. Archivo de estilo, 67, 68.
&&, 42, 43. Archivo de formato, 67.
\& ( & ), 1. \AA ( Å ), 3.
Archivo externo, 60.
’ ( ’ ), 2. \aa ( å ), 3.
Archivo fuente, 7, 25, 52, 59,
’’ ( ” ), 2. Abrahams, Paul W., 70.
61, 67–70.
\’ ( ´ ), 3. Abreviatura, 20, 30, 57.
\arg ( arg ), 17.
\’{\i} ( ı́ ), 20. \abstract (AmSTeX), 66.
Argumento de un macro, 5, 22,
(, 12. \accent, 64.
58, 59, 63.
\( (LaTeX), 4. Acento, 1, 3, 14, 57, 58, 64.
Argumento opcional, 70.
), 12. \active, 58.
Arroba, 26.
\) (LaTeX), 4. \acute (´), 14, 64.
article.cls, 68.
*, 36. \address (AmSTeX), 66.
Artı́culos matemáticos, 66.
\+, 37, 38. Admiración, 8.
ASCII, 25, 51, 58.
\,, 49. \advance, 51, 52, 58, 60.
Asignación, 11, 48, 49, 54, 57,
- ( - ), 2. \advancepageno, 46–48, 58.
58, 70.
-- ( – ), 2. \AE ( Æ ), 3.
Asignación global, 58.
--- ( — ), 2. \ae ( æ ), 3.
\ast ( ∗ ), 11.
\-, 34. \aleph ( ℵ ), 10.
Asterisco, 26.
\. ( ˙ ), 3. Alfabeto griego, 10.
\asymp ( ), 11.
/, 12, 56. \aligned (AmSTeX), 66.
at, 6.
\/, 8. Alineamiento de ecuaciones,
\atop, 16.
\1, 20. 18, 65.
\author (AmSTeX), 66.
:= ( := ), 11. Alineamiento bilateral, 19, 66.
.aux, 69.
\: (AmSTeX), 4. \alpha ( α ), 10, 24, 44, 64,
\= ( ¯ ), 3, 4. 65. \b ( ), 3.
¯
\>, 4, 20, 57. Altura, 28, 30, 42, 51, 53. \backslash ( \ ), 10, 12.
?‘ ( ¿ ), 3. \amalg ( q ), 11, 13. \bar (¯), 14.
@, 63. Ambiente, 58, 69. Barra corta, 2.
[, 12. American Mathematical Soci- Barra larga, 2, 28.
\[ (LaTeX), 4. ety, 1, 62, 62. Barra vertical, 49.
\, 1, 4, 26, 62. AMS Fonts User’s Guide, 67, Base de datos, 60.
\\ (AmSTeX), 4, 66. 70. \baselineskip, 30, 46.
], 12. AMS-LaTEX, 68. \Bbb (AmSTeX), 67.
\] (LaTeX), 4. amsppt.sty, 67. \begin (LaTeX), 69, 70.
72
\beginsection, 63, 64. Caja vertical, 49, 53, 54, 65. Coeficiente Clebsch–Gordan,
\beta ( β ), 10. Cajas empiladas, 49. 23.
\bf, 6–8, 24, 36, 39, 60, 64, 67. \cal, 64. \colon ( : ), 12.
\bgroup, 57, 65. Cambio matemático, 26. Columna, 37, 40, 42.
Big point, 26. Canal de lectura, 60. Columna derecha, 48, 49.
\bigbreak,T32, 35, 60. Canal de salida, 60. Columna izquierda, 48, 49.
\bigcap ( ), 13. Caos, 63. Columna justificada, 40.
\bigcirc (S
), 11. \cap ( ∩ ), 11, 33. \columns, 39.
\bigcup ( ), 13. Carácter, 51, 54, 57, 58, 63, 67. Coma, 8, 30.
\Biggl, 17. Carácter activo, 20, 26, 58. Coma decimal, 27.
\biggl, 17. Carácter compuesto, 3. Comando, 1.
\Biggr, 17. Carácter de escape, 4, 26. Comando primitivo, 62.
\biggr, 17. Carácter especial, 1. Comentario, 1, 7, 26.
\Bigl, 17. Carácter ignorado, 26. Comillas, 2.
\bigl, 17. J Carácter inválido, 26. Computer Modern, 8, 27, 64–
\bigodot ( L), 13. Carácter invisible, 2. 67.
\bigoplus ( N), 13. Carácter sobreescrito, 56. Computer Modern Roman, 8.
\bigotimes ( ), 13. Carácter visible, 1, 31. Comunicación con la terminal,
\Bigr, 17. \catcode, 58, 62, 65. 59.
\bigr, 17. Categorı́a, 26, 58, 62. Concrete Mathematics, 67, 70.
\bigskip, 7, F 29–32, 36, 45, 64. cc, 6, 26, 50. \cong ( ∼= ), 11.
\bigsqcup ( ), 13. \CD (AmSTeX), 66. Contador, 58, 69.
\bigtriangledown ( 5 ), 11. \cdot ( · ), 11. Contenido de un registro, 52.
\bigtriangleup U ( 4 ), 11. \centerline, 6, 22, 30, 33, 36, Contenido de una caja, 56.
\biguplusW ( ), 13. 62, 64. Contenido de una marca, 61.
\bigvee ( V ), 13. Centı́metro, 26. Contenido de una página, 50.
\bigwedge ( ), 13. Centrar fórmulas, 53. Contractibilidad de goma, 29.
Blackboard boldface, 67. Centroide, 33. Contrarreferencia, 69.
blue, 62. \check (ˇ), 14. “Coplas por la muerte de su
Bodoni, Giambattista, 8. Chequear sintaxis, 66. padre”, 33.
`
\bold (AmSTeX), 67. \chi ( χ ), 10. \coprod ( ), 13.
book.cls, 68. \choose, 16. \copy, 54.
\bot ( ⊥ ), 10. Cicero, 26. Corchete, 6, 12, 45, 63, 70.
\botmark, 61. \circ ( ◦ ), 11. Corrección itálica, 8.
\bowtie ( ./ ), 11. Circuncentro, 33. Corte de página, 54, 57.
\Box (LaTeX), 69. Cita textual, 32, 69. Corte de renglón, 34.
\box, 48–51, 54, 56. \cleartabs, 39, 64. Corte obligado, 34.
bp, 6, 26, 50. \closein, 60. \cos ( cos ), 17, 44, 65.
\break, 34, 35, 64. \closeout, 60. \cosh ( cosh ), 17.
\breve (˘), 14. .cls, 68. \cot ( cot ), 17.
\buildrel, 65. \clubsuit ( ♣ ), 10. \coth ( coth ), 17.
\bullet ( • ), 11. cm, 6, 26, 50. \count, 49–51, 58, 70.
by, 6, 51. cmbsy, 67. \cr, 18, 37, 38, 40, 66.
\bye, 7, 30, 62–64, 66. Crenaje, 37, 53, 54.
cmbx, 64.
Crenaje vertical, 31.
\c ( ¸ ), 3. cmex, 9, 64.
\csc ( csc ), 17.
Cabeza de página, 46. cmmi, 9, 64.
CTAN, 71.
Caja, 22, 28, 41, 48–51, 53. cmmib, 67.
Cuadratı́n, 5, 28.
Caja alta, 52. cmr, 8, 64.
Cuerpo de página, 28, 46.
Caja baja, 52. cmsl, 64.
\cup ( ∪ ), 11.
Caja en blanco, 56. cmsy, 9, 62, 64.
Caja horizontal, 49, 53, 54. cmti, 64. \d ( . ), 3, 57, 58.
Caja invisible, 42. cmtt, 64. \dag ( † ), 36.
Caja vacı́a, 32, 46, 55, 64. Códigos internos, 62. \dagger ( † ), 11.
73
\dashv ( a ), 11. \dotfill, 55, 64. Espaciamiento en fórmula, 9.
\day, 25. \dots ( . . . ), 30, 64. Espacio, 2, 25, 29.
dd, 6, 26, 50. \Downarrow ( ⇓ ), 12. Espacio en blanco, 4.
\ddag ( ‡ ), 36. \downarrow ( ↓ ), 12. Espacio entre párrafos, 29.
\ddagger ( ‡ ), 11. \dp, 51, 56. Espacio entre renglones, 63.
\ddot (¨), 14. DraTEX, 62. Espacio explı́cito, 30.
\def, 7, 20, 48, 57–59, 63, 66, dummy, 67. Estilo de despliegue, 16.
70. \dump, 62, 67. Estilo de ı́ndices, 16.
\define (AmSTeX), 66, 70. dvips, 62. Estilo de letra, 8.
Definición de macros, 20–25, Estilo de texto, 16.
Ecuaciones numeradas, 15, 19.
57–60, 66, 70. Estirabilidad de goma, 29.
Efectos especiales, 65.
Definición local de macros, 40. Eszet ( z ), 3.
\egroup, 57, 65.
\deg ( deg ), 17. Etiqueta, 15, 19, 66.
Eijkhout, Victor, 70.
\delcode, 62. \eta ( η ), 10.
\eject, 45, 55, 64.
Delimitador, 12, 17, 63, 64. eufm, 67.
Elipsis, 30.
\delimiter, 64. Euler Fraktur Medium, 67.
\ell ( ` ), 10.
\Delta ( ∆ ), 10. \everypar, 52.
\else, 24, 46–48, 58, 60.
\delta ( δ ), 10, 57, 58. ex, 6, 28, 50.
em, 6, 28, 50.
Denominador, 15. \exists ( ∃ ), 10.
\emptyset ( ∅ ), 10.
depth, 6. \exp ( exp ), 17.
Encabezado de una página, 45,
Desempacar un registro, 51. \expandafter, 59.
46, 61, 66, 68.
Designar un registro, 50, 63. Expansión de macros, 21, 57,
Encapsulated PostScript, 61.
Despliegue, 14, 38, 45, 63, 69. 59, 60.
\end, 62.
Despliegue multilineal, 18–20, Exponente, 1, 13, 26, 65.
\end (LaTeX), 69, 70.
65, 66, 69. Exponentes dobles, 13.
\endabstract (AmSTeX), 66.
\det ( det ), 17, 65. Expresión matemática, 1.
\endaddress (AmSTeX), 66.
Diagrama conmutativa, 66. \endaligned (AmSTeX), 66. Factor de magnificación, 27.
\diamond ( ), 11, 33. \endauthor (AmSTeX), 66. \fam, 64.
\diamondsuit ( ♦ ), 10. \endCD (AmSTeX), 66. Familia de fuentes, 64.
Didot, Firmin, 8. \enddocument (AmSTeX), 66. Familia de sı́mbolos matemá-
Didot, 26. \endhead (AmSTeX), 66. ticos, 63.
Diesis, 40. \endinsert, 36, 65. Familia tipográfica, 8.
Dı́gitos, 1, 26. \endpmatrix (AmSTeX), 66. Fealdad, 35, 63.
Dı́gitos arábigos, 51. \endref (AmSTeX), 66. \fi, 24, 46, 47, 58, 60.
\dim ( dim ), 17. \endRefs (AmSTeX), 66. Ficha, 22, 57.
\dimen, 49–51. \endsubhead (AmSTeX), 66. fil, 6, 50, 55.
Dimensión, 26, 48. \endtitle (AmSTeX), 66. Fila, 40, 41.
\displaylines, 65. \endtopmatter (AmSTeX), fill, 6, 50.
\displaystyle, 16, 30, 44, 51, 66. filll, 6, 50.
64, 65. \enskip, 29, 60. Fin de grupo, 26.
\div ( ÷ ), 11. \enspace, 24. Fin de lı́nea, 26.
\divide, 51. Enunciado de un teorema, 64. \firstmark, 61.
División silábica, 65. Enviar una página a disco, 45– \fivebf, 64.
\document (AmSTeX), 66. 48. \fivei, 64.
\documentclass (LaTeX), 52, EPlain, 62. \fiverm, 64.
62, 68, 70. .eps, 61. \fivesy, 64.
\documentstyle (AmSTeX), epsf.sty, 62. \flat ( [ ), 10.
67. epsf.tex, 62. Flechas, 12, 13, 55.
\documentstyle (LaTeX), 69. \epsilon ( ), 10, 58. Flecha larga, 65.
Dos puntos, 8, 12, 30. \eqalign, 18, 20, 53, 65, 66. \folio, 47, 61, 65.
\dosupereject, 46. \eqalignno, 19, 65, 69. \font, 59, 64.
\dot ( ˙ ), 14. \eqno, 15, 20. \footins, 65.
.
\doteq ( = ), 11. \equiv ( ≡ ), 11. \footline, 46, 47.
74
\footnote, 36, 53, 58, 65. \head (AmSTeX), 66. Inserción flotante, 37, 46, 51,
\forall ( ∀ ), 10. \headline, 46, 47, 61. 54, 65,
R 67.
Formato, 62. \heartsuit ( ♥ ), 10. \int ( ), 13.
Formato de doble columna, 48. height, 6. Integral, 13.
Fórmulas matemáticas, 9, 64. Helvética, 8. Interlineación, 30, 46, 65.
\frac, 67. \hfil, 30, 34, 40–44, 47, 48, Interrogación, 8.
Fracción, 9, 15, 67. 55, 61. \iota ( ι ), 10.
\frak (AmSTeX), 67. \hfill, 7, 30, 38, 44, 55. \it, 6, 8, 37, 39, 64, 67.
Fraktur, 3, 67. \hoffset, 46. Itálico, 8.
Frases matemáticas, 35. Hoja A4, 26. \item, 33, 58, 64.
\frenchspacing, 30. \hom ( hom ), 17. \item (LaTeX), 70.
\frown ( _ ), 11. Hondura, 28, 30, 41, 51, 53. \itemitem, 33, 64.
Fuente, 8, 64, 66, 67, 69. \hookleftarrow ( ←- ), 12. \jmath ( ), 10, 14.
Fuente abierta, 67. \hookrightarrow ( ,→ ), 12, \jobname, 60.
Fuentes de la AMS, 69. 57. \joinrel, 65.
Fusión de columnas, 43. \hrule, 7, 28, 31, 32, 41–44, \jot, 63.
53. The Joy of TEX, 66, 70.
\Gamma ( Γ ), 10.
\gamma ( γ ), 10. \hrulefill, 55, 64. Justificación de párrafos, 54.
\gcd ( gcd ), 17. \hsize, 5, 22, 27, 30, 32, 45, Justificación de renglones, 30,
\gdef, 58, 59. 48, 51–54, 57, 62, 63. 33, 63.
\ge ( ≥ ), 11. \hskip, 29, 32, 49, 55.
\hss, 22, 30, 47, 48, 56, 62. \kappa ( κ ), 10.
\geq ( ≥ ), 11. \ker ( ker ), 17.
\gets ( ← ), 12, 14, 55. \ht, 51, 56.
hyphen.tex, 65. \kern, 37, 53.
\gg ( ), 11. Knuth, Donald Ervin, 1, 70.
.gif, 61. \hyphenation, 34.
\global, 58. \L ( L ), 3.
\i ( ı ), 20.
Goma, 28, 41, 49, 53. \l ( l ), 3.
ı́, 20.
Goma desechada, 55. l, 62.
\ifcase, 25.
Goma entre columnas de una \Lambda ( Λ ), 10.
\ifdim, 24.
tabla, 45. \lambda ( λ ), 10.
\ifeof, 60.
Goma vertical, 45. Lamport, Leslie, 70.
\iff ( ⇐⇒ ), 12.
\goodbreak, 35. \land ( ∧ ), 11.
\ifhmode, 24. \langle ( h ), 12, 64.
Goossens, Michel, 70. \ifmmode, 24.
\goth (AmSTeX), 67. LaTEX, 32, 58, 60, 62, 67, 71.
\ifnum, 24, 46, 58. LaTEX 2.09, 68.
Graham, Ronald L., 67, 70. \ifodd, 24, 47.
Graphic Interchange Format, LaTEX 2ε , 68, 71.
\ifx, 24. LaTEX 3, 68.
61. \Im ( = ), 10.
\grave (`), 14. latexsym.sty, 69.
\imath ( ı ), 10, 14. \lbrace ( { ), 12.
green, 62. \immediate, 60.
Grupo, 1, 6, 37, 57. \lbrack ( [ ), 12.
in, 6, 26, 50. \lceil ( d ), 12.
Guión, 2, 63. \in ( ∈ ), 10, 11.
Guión escondido, 35. \le ( ≤ ), 11.
Incentro, 33. Leading, 30.
Guión opcional, 34.
\indent, 32, 38. \leavevmode, 32.
Gurari, Eitan, 70.
ı́ndice de contenidos, 68, 69. \left, 17, 51.
\H ( ˝ ), 3. ı́ndices, 60. \Leftarrow ( ⇐ ), 12.
\halign, 40, 42, 44, 59, 65. \inf ( inf ), 17. \leftarrow ( ← ), 12.
\hangafter, 33. \infty ( ∞ ), 10, 51. \leftarrowfill, 55.
\hangindent, 33. Inicio de grupo, 26. \leftharpoondown ( ) ), 12.
\hat (ˆ), 14. IniTEX, 62. \leftharpoonup ( ( ), 12.
\hbar ( h̄ ), 10. \input, 7, 60, 65, 67. \leftline, 33, 48, 64.
\hbox, 22, 28–31, 35, 48, 50, Inserción flotante, 36, 45, 50, \Leftrightarrow ( ⇔ ), 12.
51, 53–56, 62. 53, 63, 65. \leftrightarrow ( ↔ ), 12.
75
\leftskip, 32, 52, 69. \Longleftrightarrow (⇐⇒), Milı́metro, 26.
\leq ( ≤ ), 10, 11. 12. \min ( min ), 17.
\leqalign, 20. \longleftrightarrow (←→), minus, 6, 29, 50.
\leqalignno, 19, 65. 12. \mit, 64.
\leqno, 15. \longmapsto ( 7−→ ), 12. Mittelbach, Frank, 70.
\let, 57, 59. \Longrightarrow ( =⇒ ), 12, \mkern, 65.
Letra caligráfica, 9. 65. mm, 6, 26, 50.
Letra gótica, 67. \longrightarrow ( −→ ), 12, \models ( |= ), 11.
Letra mayúscula, 4, 30, 52. 65. Modo de compatibilidad (La-
Letra minúscula, 4, 52. \lor ( ∨ ), 11. TeX), 69.
Letra romana, 47, 65. \lower, 53, 56. Modo horizontal, 31, 54, 56,
letter.cls, 68. \lowercase, 52. 64, 65.
\lfloor ( b ), 12. Modo horizontal restringido,
\m@th, 63.
\lg ( lg ), 17. 31.
Macintosh, 1, 4, 71.
\lgroup, 12, 17. Modo matemático, 9, 13, 31,
Macro, 20–25, 57, 59, 62.
Liga, 1, 20, 30, 34, 35. 49, 53–56, 63–65, 67.
Macro condicional, 24, 50.
Ligadura, 2. Modo matemático de desplie-
Macro delimitado, 23.
\lim ( lim ), 17. gue, 9, 31.
Macro externo, 63.
\liminf ( lim inf ), 17. Modo vertical, 31, 36, 41, 55,
Macro inaccesible, 63.
\limsup ( lim sup ), 17. 56.
Macro local, 58.
\line, 7, 22, 30, 46, 53, 55, 64. Modo vertical interno, 31.
Macro privado, 65.
Lı́nea de base, 28–30, 53. \month, 25.
Magnificación de tipos, 27.
Lı́nea de puntos, 55. \moveleft, 56.
\magnification, 27, 65.
Lı́nea en blanco, 31, 31, 46. \moveright, 56.
\magstep, 27.
\lineskip, 30, 42, 53. \mp ( ∓ ), 11.
\magstephalf, 27.
\lineskiplimit, 30. msam, 67.
\makefootline, 46.
Lista de ı́temes, 33, 58, 69. msbm, 67.
\makeheadline, 46.
Lista de fichas, 46, 49, 52, 59– \mskip, 49.
Manrique, Jorge, 33.
61. mu, 6, 49, 50.
\mapsto ( 7→ ), 12.
Lista de referencias, 66. \mu ( µ ), 10.
Marca, 53, 61, 68.
Lista horizontal, 28, 31, 53, 54. Mugoma, 49.
Margen, 32, 37, 45, 69.
Lista matemática, 54. \multiply, 51.
\mark, 53, 61.
Lista vertical, 28, 31, 53. \multispan, 43.
\mathaccent, 64.
Lista vertical principal, 45, 54, \muskip, 49.
\mathchardef, 64, 67.
55. \mathcode, 62. \nabla ( ∇ ), 10.
\ll ( ), 11. \mathop, 65. \narrower, 32, 64.
\llap, 56. \mathrel, 65. \natural ( \ ), 10.
Llaves, 6, 13, 48. \mathstrut, 42. \ne ( 6= ), 11.
Llaves en un texto sustituto, Math unit, 49. \nearrow ( % ), 12.
21. Matitálico, 9, 64. \neg ( ¬ ), 11.
Llaves redundantes, 23. \matrix, 18, 65. Negrilla, 6, 8.
Llaves visibles, 12. Matriz, 18, 65, 66. \neq ( 6= ), 11, 20.
\lmoustache, 12, 17. \max ( max ), 17. \newbox, 48–51, 54, 63.
\ln ( ln ), 17, 44. Mayúsculas, 59. \newcommand (LaTeX), 70.
\lnot ( ¬ ), 10. McGraw-Hill, 56. \newcount, 50, 58, 63.
\loadbold (AmSTeX), 67. \medbreak, 24, 35. \newdimen, 48, 50, 51, 63.
\loadeufm (AmSTeX), 67. \medskip, 7, 29, 32, 45, 60, 64. \newenvironment (LaTeX),
\loadmsam (AmSTeX), 67. Mensajes de ayuda, 63. 69.
\loadmsbm (AmSTeX), 67. \message, 59, 60. \newfam, 63.
\log ( log ), 17. METAFONT, 8, 66. \newhelp, 63.
Longitud, 6, 26, 48, 49. Microsoft Word, 26. \newif, 48, 50, 63.
\Longleftarrow ( ⇐= ), 12. \mid ( | ), 11. \newinsert, 63, 65.
\longleftarrow ( ←− ), 12. \midinsert, 36, 53, 65. \newlanguage, 63.
76
\newmuskip, 50, 63. Operación aritmética con reg- Pie de página, 46, 47.
\newread, 60, 63. istros, 51. Pila de cajas, 53.
\newskip, 50, 51, 63. Operador grande, 13, 65. Plain TEX, 4, 7, 20, 28–32, 45,
\newtoks, 50, 63. \oplus ( ⊕ ), 11. 50, 55–58, 62, 66–68, 70, 71.
\newwrite, 60, 63. \or, 25. plain.tex, 63–65.
\ni ( 3 ), 11. Ortocentro, 33. \plainoutput, 46, 48, 65.
\noalign, 41, 44. \oslash ( ), 11. Plantilla, 40, 45.
\nobreak, 35, 60, 64. \otimes ( ⊗ ), 10, 11. plus, 6, 29, 50, 55.
\noexpand, 59, 60. \outer, 63. \pm ( ± ), 11.
\noindent, 24, 32, 60. \output, 46, 48, 65. \pmatrix, 18, 21, 56, 65.
\nointerlineskip, 30, 46. \outputpenalty, 46. \pmatrix (AmSTeX), 66.
\nolimits, 65. \over, 15, 17, 44, 65. Posiciones de tabuladores, 37.
Nombres y apellidos, 35. \overfullrule, 52, 63. PostScript, 8, 26, 27, 67.
←
−
\nonfrenchspacing, 30, 65. \overleftarrow ( ), 13, 14. \Pr ( Pr ), 17.
\nopagenumbers, 46, 47, 65. \overline ( ), 13, 14. Preámbulo, 40, 41, 59, 70.
→
−
\normalbaselines, 65. \overrightarrow ( ), 13, \prec ( ≺ ), 11.
\not ( 6 ), 11. 14. \preceq ( ), 11.
Nota al pie de página, 36, 45, \owns ( 3 ), 11. Preposición, 35.
50, 58, 65. Preprint, 67.
\pagebody, 46, 48.
\notin ( ∈ / ), 11. \pretolerance, 54, 63.
\pageinsert, 36, 65.
\nu ( ν ), 10. Prima, 12, 14.
\pageno, 5, 24, 47, 50–52, 58,
\null, 55. \prime ( 0 ), 10, 12, 14.
60.
\number, 25, 47. Q 23, 63, 64.
\proclaim,
Palabra clave, 6, 26.
Numeración automática, 58. \prod ( ), 13.
Palabra de control, 4, 5, 9, 57,
Numeración hexadecimal, 63. 63. \propto ( ∝ ), 11.
Numerador, 15. \par, 24, 31, 32, 35, 54, 55, 58, Proyecto Euler, 67.
Número arábigo, 47. 60, 62. .ps, 61.
Número de una ecuación, 15, \parallel ( k ), 11. \Psi ( Ψ ), 4, 10.
19, 69. Parámetro, 1, 22, 26, 46, 58, \psi ( ψ ), 4, 10.
Número de página, 45, 47, 50. 63, 67, 70. pt, 6, 26, 49–52, 55.
Número entero, 49–51. Parámetro de formato, 5. Pulgada, 26, 32.
Número romano, 47. Paréntesis, 6, 12, 42, 49, 63. Puntal, 41, 46.
\nwarrow ( - ), 12. \parindent, 28, 32, 52, 54, 63. Punto, 8, 26.
Párrafo, 28, 31, 52, 64. Punto de Gergonne, 33.
n, 5.
~
Párrafo interrumpido, 32. Punto de referencia, 28, 53, 56.
\O ( Ø ), 3. \parskip, 51. Punto decimal, 27, 41.
\o ( ø ), 3. Partes nombradas de un docu- Punto y coma, 8, 30.
\obeylines, 33, 58, 64. mento, 35. Puntos suspensivos, 30.
Oblicuo, 8. \partial ( ∂ ), 10, 57. Puntuación, 8, 10, 12, 26, 30,
\odot ( ), 11. Pascal, 49. 65.
\OE ( Œ ), 3. Patashnik, Oren, 70. \qquad ( ), 38, 64.
\oe ( œ ), 3. pc, 6, 26, 50. \quad ( ), 5, 28, 32, 38, 40,
\of, 13. Penalty, 35, 41, 53, 54. 43, 44, 66.
\offinterlineskip, 42, 44. \penalty, 35, 53, 55, 62.
H Quéeseso, 53, 61.
\oint ( ), 13. Penalty desechado, 55.
\Omega ( Ω ), 11. \perp ( ⊥ ), 11. \raggedright, 33, 64.
\omega ( ω ), 10. \phantom, 56, 65. \raise, 56.
\ominus ( ), 11. \Phi ( Φ ), 10. Raı́z cuadrada, 13.
Omisión de plantilla, 41, 43. \phi ( φ ), 10. Raı́z cúbica, 13.
\omit, 41, 43, 44. \Pi ( Π ), 10, 13. \rangle ( i ), 12.
\openin, 60. \pi ( π ), 10. \rbrace ( } ), 12.
\openout, 60. Pica, 26. \rbrack ( ] ), 12.
Operación binaria, 11, 63. PICTEX, 62. \rceil ( e ), 12.
77
\Re ( < ), 10. Sangrı́a, 28, 32, 37, 56. \smallskipamount, 51, 63.
\read, 59, 60. Sangrı́a colgante, 33, 70. \smash, 56, 65.
red, 62. Sanserif, 8. \smile ( ^ ), 11.
\redefine (AmSTeX), 66. scaled, 6. sp, 6, 26, 50.
\ref (AmSTeX), 66. Scaled point, 26. \spadesuit ( ♠ ), 10.
Referencias, 60, 66, 69. \scriptfont, 64. \special, 53, 61.
\Refs (AmSTeX), 66. \scriptscriptfont, 64. Spivak, Michael David, 70.
Registro, 49, 58, 65. \scriptscriptstyle, 16, 64. spread, 6, 50, 55.
Registro de caja, 54. \scriptstyle, 16, 64. \sqcap ( u ), 11.
Regla, 28, 53. \searrow ( & ), 12. \sqcup (pt ), 11.
Regla horizontal, 28, 41, 55. \sec ( sec ), 17, 44. \sqrt ( ), 13, 42.
Regla vertical, 28, 42. Secar la goma, 29. \sqsubseteq ( v ), 11.
Relación, 11. Sección, 66, 68. \sqsupseteq ( w ), 11.
Relación compuesta, 11, 65. Seña de referencia, 36. \ss ( ß ), 3.
\relax, 29. Seña flotante, 33, 70. Stanford University, 67.
\Relbar ( = ), 65. Serifes, 8. \star ( ? ), 11.
\relbar ( − ), 65. Seroul, Raymond, 70. \strut, 41, 44, 64.
\renewcommand (LaTeX), 70. \setbox, 48, 49, 51, 54, 56. .sty, 68.
Renglón, 28, 29, 45. \setminus ( \ ), 11. \subhead (AmSTeX), 66.
Renglón modelo, 38. \settabs, 38, 39, 64. Subı́ndice, 1, 13, 26, 65.
report.cls, 68. \sevenbf, 64. Subı́ndices dobles, 13.
Resorte, 30, 41, 43, 44, 49, 53, \seveni, 64. Subir o bajar una caja hori-
55. \sevenrm, 47, 64. zontal, 53.
Resorte horizontal, 30. \sevensy, 64. \subsection (LaTeX), 68.
Resorte vertical, 30. \sharp ( ] ), 10. \subset ( ⊂ ), 11.
Resorte visible, 55, 64. \shipout, 46, 48, 60. \subseteq ( ⊆ ), 11.
Retorno de carro, 2, 25, 58. \showthe, 52. \succ ( ), 11.
Retroceso, 65. \Sigma ( Σ ), 10, 13. \succeq P( ), 11.
Retroceso no destructivo, 56. \sigma ( σ ), 10. \sum ( ), 13, 51.
\rfloor ( c ), 12. Signo aritmético, 1. Suma, 13.
\rgroup, 12, 17. Signo de admiración inicial, 3. \sup ( sup ), 17.
\rho ( ρ ), 10. Signo de dólar, 31. Suprimir una expansión, 59.
\right, 17, 51. Signo de interrogación inicial, \supset ( ⊃ ), 11.
\Rightarrow ( ⇒ ), 12, 65. 3. \supseteq√ ( ⊇ ), 11.
\rightarrow ( → ), 12, 57, 65. Signo de puntuación, 1. \surd ( ), 10.
\rightarrowfill, 55. Signo menos, 2, 9, 63. Surdo, 13.
\rightharpoondown ( + ), 12. \sim ( ∼ ), 11. \swarrow ( . ), 12.
\rightharpoonup ( * ), 12. Sı́mbolo aritmético, 26. \syntax (AmSTeX), 67.
\rightleftharpoons ( * ) ), Sı́mbolo de control, 4. \t ( ), 3.
12. Sı́mbolo matemático, 9, 35, 63. Tabla reglada, 41, 44.
\rightline, 33, 64. Sı́mbolo ordinario, 10, 64. \tabskip, 45.
\rightskip, 32, 69. Sı́mbolos en serie, 35. Tabulación, 2, 25, 26, 37, 64.
\rlap, 40, 56.
\simeq ( ' ), 11. Tabulador, 1, 26, 37.
\rm, 8, 10, 64–67.
\sin ( sin ), 17, 44. Tamaño aparente de caja, 56.
\rmoustache, 12, 17.
\sinh ( sinh ), 17. Tamaño natural de goma, 29.
Rocicki, Tom, 62.
Sintaxis, 68, 70. \tan ( tan ), 17, 44.
\roman (AmSTeX), 67.
Sintaxis funcional, 23. \tanh ( tanh ), 17.
\romannumeral, 47.
\skip, 49, 52. \tau ( τ ), 10.
Romano, 8.
\sl, 7, 8, 24, 37, 64, 67. Tecla de escape, 4.
\root, 13.
\smallbreak, 35. Teclado, 1, 25.
Rutina de salida, 45–48, 61,
\smallint ( ∫ ), 13. Tecleo de espacios, 9.
65–68.
\smallskip, 29–33, 35–37, 41, \tenbf, 64.
Samarin, Alexander, 70. 45, 51, 58, 64. \tenex, 64.
78
\teni, 64. \top ( > ), 10. \varrho ( % ), 10.
\tenit, 64. \topins, 65. \varsigma ( ς ), 10.
\tenrm, 47, 61, 64. \topinsert, 36, 53, 65. \vartheta ( ϑ ), 10.
\tensl, 64. \topmark, 61. \vbox, 28–31, 38–40, 42, 44–
\tensy, 64. \topmatter (AmSTeX), 66. 46, 48, 50, 53, 54, 57, 65.
\tentt, 64. \topskip, 47. \vcenter, 50, 53, 54, 65.
Terminal, 52, 60. Traslapo de texto, 47, 56. \vdash ( ` ), 11.
\TeX ( TEX ), 4. Trazo vertical, 42. \vec (~ ), 14.
.tex, 60. \triangle ( 4 ), 10. \vee ( ∨ ), 11.
The TEXbook, 1, 22, 35, 39, \triangleleft ( / ), 11. Versalita, 8.
50, 54, 55, 58–62, 71. \triangleright ( . ), 11. \Vert ( k ), 10, 12.
TeX log, 7, 45, 52, 59, 67. Triángulo, 33. \vert ( | ), 10, 12.
TEX: The Program, 49. true, 6, 27. \vfil, 30.
TEX User’s Group, 70. \tt, 8, 64, 67. \vfill, 30, 32, 45, 55, 62.
\textfont, 64. \typeout (LaTeX), 60. VirTEX, 62.
\textstyle, 16, 64. \voffset, 46, 47.
\u ( ˘ ), 3.
Textures, 1, 4, 27, 46, 62, 71. \vrule, 28, 32, 42, 44.
\undefined, 57.
Texto en colores, 62. \vsize, 5, 45, 63.
\underline ( ), 13, 56.
Texto equilibrado, 21, 59. \vskip, 7, 27, 29, 31, 32, 36,
Unidad lectora, 3.
Texto paramétrico, 23. 46, 49, 51.
Unidades SI, 37.
Texto sustituto, 20, 57, 59, 63, \vss, 30, 46, 57.
\Uparrow ( ⇑ ), 12.
70. \vtop, 50, 53, 54.
\uparrow ( ↑ ), 12.
\the, 46, 51, 58, 60.
\Updownarrow ( m ), 12. \wd, 51, 56.
\Theta ( Θ ), 10.
\updownarrow ( l ), 12. \wedge ( ∧ ), 11.
\theta ( θ ), 10.
\uplus ( ] ), 11. Whatsit, 53.
\tilde (˜), 14.
\uppercase, 52, 59. \widehat ( b ), 14.
Times, 8.
\Upsilon ( Υ ), 10. \widetilde ( e ), 14.
\times ( × ), 11.
\upsilon ( υ ), 10. width, 6.
Tipo de teclado, 8.
\UseAMSsymbols (AmSTeX), \wp ( ℘ ), 10.
\title (AmSTeX), 66.
67. \wr ( o ), 11.
Tı́tulo de artı́culo, 66.
\usepackage (LaTeX), 68. \write, 53, 60, 69.
Tı́tulo de sección, 64, 66.
to, 6, 44, 50, 53, 55, 59. \v ( ˇ ), 3. \Xi ( Ξ ), 10.
\to ( → ), 12, 14, 17, 55, 57. Vara, 4. \xi ( ξ ), 10.
.toc, 69. \varepsilon ( ε ), 10. xxx.lanl.gov, 71.
\today, 25, 33. Variables, 9. XY-pic, 62.
\toks, 49, 51. \varphi ( ϕ ), 10. \year, 25.
\tolerance, 54, 63. \varpi ( $ ), 10. \zeta ( ζ ), 10.
79
Indice de Contenidos
1 Los Caracteres de TEX 1 4.6 Fracciones . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
1.1 Caracteres del teclado . . . . . . . . . . . . . . . . . 1 4.6.1 Tamaños de letras en fórmulas . . . . 16
1.2 Caracteres de texto impreso . . . . . . . . . . . 2 4.7 Funciones matemáticas . . . . . . . . . . . . . . . 16
1.2.1 Comillas . . . . . . . . . . . . . . . . . . . . . . . . . . . 2 4.8 Delimitadores . . . . . . . . . . . . . . . . . . . . . . . . 17
1.2.2 Guiones . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2 4.8.1 Delimitadores \big y \bigg . . . . . . . 17
1.2.3 Ligaduras . . . . . . . . . . . . . . . . . . . . . . . . . . 3 4.8.2 Los comandos \left y \right . . . . 17
1.3 Caracteres compuestos especiales . . . . . . 3 4.9 Matrices. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
1.4 Acentos ortográficos . . . . . . . . . . . . . . . . . . . 3 4.10 Alineamiento de ecuaciones . . . . . . . . . . 18
2 Comandos en TEX 4 4.10.1 Alineamientos no numerados . . . . . 18
2.1 Sı́mbolos de control . . . . . . . . . . . . . . . . . . . . 4 4.10.2 Alineamientos con etiquetas . . . . . . 19
2.2 Palabras de control . . . . . . . . . . . . . . . . . . . . 4 5 Macros 20
2.3 Efectos de los comandos . . . . . . . . . . . . . . . 5 5.1 Abreviaturas simples . . . . . . . . . . . . . . . . . 20
2.3.1 Cambios ambientales . . . . . . . . . . . . . . . 5 5.2 Macros con un parámetro . . . . . . . . . . . . . 22
2.3.2 Comandos que toman argumentos . . 5 5.3 Macros con dos o más parámetros . . . . 22
2.3.3 Comandos autónomos . . . . . . . . . . . . . . 5 5.4 Macros delimitados . . . . . . . . . . . . . . . . . . . 23
2.4 Parámetros de Plain TEX . . . . . . . . . . . . . . 5 5.5 Macros condicionales . . . . . . . . . . . . . . . . . 24
2.5 Palabras claves . . . . . . . . . . . . . . . . . . . . . . . . 6 6 El modo de funcionar de TEX 25
2.6 Agrupamiento . . . . . . . . . . . . . . . . . . . . . . . . . 6 6.1 La unidad lectora de TEX . . . . . . . . . . . . . 25
2.7 Un archivo fuente ejemplar . . . . . . . . . . . . 7 6.2 Dimensiones . . . . . . . . . . . . . . . . . . . . . . . . . . 26
3 Tipos y Tamaños de letra 8 6.2.1 Unidades de longitud . . . . . . . . . . . . . 26
3.1 Tipos Computer Modern. . . . . . . . . . . . . . . 8 6.2.2 Magnificación de tipos . . . . . . . . . . . . 27
3.2 Cambios de Estilo . . . . . . . . . . . . . . . . . . . . . 8 6.2.3 Dimensiones absolutas . . . . . . . . . . . . 27
3.2.1 La corrección itálica . . . . . . . . . . . . . . . . 8 6.2.4 Medidas que dependen del tipo . . . . 28
3.3 Estilos matemáticos . . . . . . . . . . . . . . . . . . . 9 6.3 Cajas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28
4 Fórmulas matemáticas 9 6.4 Goma . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28
4.1 El bestiario de sı́mbolos . . . . . . . . . . . . . . 10 6.4.1 Flexibilidad de la goma . . . . . . . . . . . 29
4.1.1 Caracteres matemáticos . . . . . . . . . . . 10 6.4.2 Brincos verticales entre párrafos . . . 29
4.1.2 Letras griegas . . . . . . . . . . . . . . . . . . . . . 10 6.4.3 Resortes . . . . . . . . . . . . . . . . . . . . . . . . . . 29
4.1.3 Sı́mbolos ordinarios . . . . . . . . . . . . . . . 10 6.4.4 Goma después de puntuación. . . . . . 30
4.1.4 Operaciones binarias . . . . . . . . . . . . . . 11 6.4.5 Interlineación . . . . . . . . . . . . . . . . . . . . . 30
4.1.5 Relaciones . . . . . . . . . . . . . . . . . . . . . . . . 11 6.5 Modos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31
4.1.6 Flechas . . . . . . . . . . . . . . . . . . . . . . . . . . . 12 7 Formatos de texto 31
4.1.7 Puntuación . . . . . . . . . . . . . . . . . . . . . . . 12 7.1 Párrafos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31
4.1.8 Delimitadores . . . . . . . . . . . . . . . . . . . . . 12 7.2 Sangrı́a . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32
4.1.9 Operadores grandes . . . . . . . . . . . . . . . 13 7.3 Los márgenes . . . . . . . . . . . . . . . . . . . . . . . . . 32
4.2 Raı́ces y barras . . . . . . . . . . . . . . . . . . . . . . . 13 7.4 Sangrı́a colgante . . . . . . . . . . . . . . . . . . . . . . 33
4.3 Subı́ndices y exponentes . . . . . . . . . . . . . . 13 7.5 Justificación de renglones . . . . . . . . . . . . . 33
4.4 Acentos en modo matemático . . . . . . . . . 14 7.6 Cortes de renglón. . . . . . . . . . . . . . . . . . . . . 34
4.5 Fórmulas desplegadas. . . . . . . . . . . . . . . . . 14 7.6.1 Cortes obligados . . . . . . . . . . . . . . . . . . 34
80
7.6.2 Guiones opcionales . . . . . . . . . . . . . . . . 34 11.1.2 Cajas horizontales . . . . . . . . . . . . . . . 53
7.6.3 Ligas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35 11.1.3 Listas verticales y horizontales . . . 53
7.6.4 Guiones escondidos en cajas . . . . . . . 35 11.2 Párrafos en cajas verticales . . . . . . . . . . 54
7.6.5 Penalties. . . . . . . . . . . . . . . . . . . . . . . . . . 35 11.3 Cómo guardar y copiar cajas . . . . . . . . 54
7.7 Notas al pie de página . . . . . . . . . . . . . . . . 36 11.4 Uso de resortes en cajas . . . . . . . . . . . . . 55
7.8 Inserciones de bloques flotantes . . . . . . . 36 11.4.1 Traslapos de texto . . . . . . . . . . . . . . . 55
8 Tabulación y Tablas 37 11.5 Manipulación de cajas . . . . . . . . . . . . . . . 56
8.1 Tabulación . . . . . . . . . . . . . . . . . . . . . . . . . . . 37 12 Macros avanzados 57
8.2 Colocación de tabuladores . . . . . . . . . . . . 38 12.1 Definición con \def y \let . . . . . . . . . . 57
8.2.1 Tabulación centrada . . . . . . . . . . . . . . 38 12.2 Macros locales y globales . . . . . . . . . . . . 58
8.2.2 Uso de renglones modelos . . . . . . . . . 38 12.3 Macros con contadores . . . . . . . . . . . . . . 58
8.2.3 Columnas de igual anchura . . . . . . . . 39 12.4 Expansión de macros . . . . . . . . . . . . . . . . 59
8.2.4 Anulación de tabuladores . . . . . . . . . 39 12.5 Comunicación con archivos externos . 59
8.3 Alineamiento con plantillas . . . . . . . . . . . 40 12.5.1 Comunicación con la terminal . . . . 59
8.3.1 Plantillas con caracteres. . . . . . . . . . . 40 12.5.2 Lectura de archivos externos . . . . . 60
8.3.2 Entradas excepcionales . . . . . . . . . . . . 41 12.5.3 Escritura en archivos externos. . . . 60
8.4 Tablas regladas . . . . . . . . . . . . . . . . . . . . . . . 41 12.5.4 Comunicación con rutinas de salida 61
8.4.1 Reglas horizontales en tablas . . . . . . 41 12.6 Incorporación de archivos gráficos . . . 61
8.4.2 Reglas verticales en tablas . . . . . . . . 42 13 Archivos de Formato 62
8.5 Diversos recursos para hacer tablas . . . 43 13.1 Introducción a Plain TEX . . . . . . . . . . . . 62
8.5.1 Omisión de plantillas. . . . . . . . . . . . . . 43 13.1.1 Códigos. . . . . . . . . . . . . . . . . . . . . . . . . . 62
8.5.2 Fusión de columnas . . . . . . . . . . . . . . . 43 13.1.2 Designación de registros. . . . . . . . . . 63
8.5.3 Plantillas repetidas . . . . . . . . . . . . . . . 43 13.1.3 Parámetros . . . . . . . . . . . . . . . . . . . . . . 63
8.5.4 Una tabla reglada completa . . . . . . . 44 13.1.4 Fuentes . . . . . . . . . . . . . . . . . . . . . . . . . . 64
8.6 Resortes en las tablas . . . . . . . . . . . . . . . . . 44 13.1.5 Macros para texto . . . . . . . . . . . . . . . 64
9 Rutinas de Salida 45 13.1.6 Macros para matemáticas . . . . . . . . 64
9.1 La rutina de salida de Plain TEX . . . . . . 45 13.1.7 Macros para la rutina de salida . . 65
9.2 Encabezados y pies . . . . . . . . . . . . . . . . . . . 46 13.1.8 Otros macros . . . . . . . . . . . . . . . . . . . . 65
9.2.1 Colocación de encabezados y pies . 46 13.2 Introducción al AMS-TEX . . . . . . . . . . 66
9.2.2 Modificación de encabezados y pies 47 13.2.1 Organización del documento . . . . . 66
9.2.3 Números arábigos y romanos . . . . . . 47 13.2.2 Formateo de fórmulas . . . . . . . . . . . . 66
9.3 Formato de doble columna . . . . . . . . . . . . 48 13.2.3 Fuentes de la AMS. . . . . . . . . . . . . . . 66
10 Registros 49 13.2.4 Chequeo de sintaxis . . . . . . . . . . . . . . 67
10.1 Los registros de TEX . . . . . . . . . . . . . . . . 49 13.2.5 Archivos de estilo . . . . . . . . . . . . . . . . 67
10.2 Designación de registros . . . . . . . . . . . . . 50 13.3 Introducción a LaTEX . . . . . . . . . . . . . . . . 67
10.3 Aritmética con registros . . . . . . . . . . . . . 51 13.3.1 Archivos de estilo . . . . . . . . . . . . . . . . 68
10.3.1 Aritmética con cajas . . . . . . . . . . . . . 51 13.3.2 Archivos auxiliares . . . . . . . . . . . . . . . 69
10.4 Impresión de contenidos de registros . 51 13.3.3 Ambientes . . . . . . . . . . . . . . . . . . . . . . . 69
10.4.1 Conversión de caja de letra . . . . . . 52 13.3.4 Definición de macros en LaTEX . . . 70
Bibliografı́a . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 70
11 Manejo de cajas 53
Epı́logo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 71
11.1 Cajas empiladas y enfiladas . . . . . . . . . 53
Indice Alfabético . . . . . . . . . . . . . . . . . . . . . . . . . . 72
11.1.1 Cajas verticales . . . . . . . . . . . . . . . . . . 53
81