Fundamentos de LaTeX

En este tema vamos a tratar las nociones fundamentales de LaTeX, agrupadas en tres categorías: Secuencias de control, texto en el fichero fuente y otras nociones fundamentales. Los dos primeros apartados parten de que en un fichero fuente de LaTeX, tal y como se ha dicho ya varias veces, hay instrucciones de formateo (secuencias de control) y texto.

Secuencias de control (comandos)

Ideas básicas

En el fichero fuente LaTeX diferencia entre lo que es texto y lo que son instrucciones de formateo. A esas instrucciones de formateo se las llama de muchas maneras: comandos, órdenes, macros, instrucciones... Usaré indistintamente unas y otras denominaciones, así como también la expresión "secuencias de control" que es la que usa el autor de TeX para referirse a este contenido de un fichero fuente que no es texto propiamente dicho. Aunque, en general usaré preferentemente los términos "comando", "instrucción" o "secuencia de control" para referirme a las incorporadas con el propio LaTeX o con alguno de sus paquetes de ampliación, reservando (más o menos) el término "macro" para las definidas por el propio usuario.

Una secuencia de control es una instrucción dirigida a LaTeX por la que se le pide que haga algo; ese algo pueden ser cosas muy distintas; por ejemplo:

  • Insertar un determinado texto en el lugar en el que se encuentre la secuencia de control.
  • Asignar cierto valor a alguna variable interna de LaTeX de la que depende algún aspecto del documento como, por ejemplo, el interlineado, el tamaño de los márgenes, etc.
  • Activar o desactivar cierta característica de formato.
  • Dibujar una línea o una caja.
  • Insertar un gráfico.
  • etc.

Las secuencias de control empiezan siempre con el carácter "\" (al que se denomina carácter de escape) y son de dos tipos:

  1. Símbolos de control: Constan de un solo carácter que puede ser cualquier carácter que no sea una letra. Por ejemplo son símbolos de control: \', \$, \&, \^, etc.
  2. Palabras de control: Como su propio nombre indica, son palabras es decir constan exclusivamente de caracteres que, a los ojos de LaTeX constituyen "letras". Aquí hay que tener en cuenta que para LaTeX sólo son letras las del alfabeto inglés. El resto de los caracteres posibles son no letras. También es importante tener en cuenta que para LaTeX las letras mayúsculas y las minúsculas son diferentes y, en consecuencia, las palabras de control "\ejemplo", \EJEMPLO" y "\Ejemplo" serían palabras distintas. Esta circunstancia (la distinción entre mayúsculas y minúsculas), propicia bastantes errores entre los novatos. Como regla general, la mayor parte de las instrucciones de LaTeX se escriben con minúsculas.

Una palabra de control no puede contener ningún carácter que no sea una letra (en el sentido indicado); y esta es la razón de que no podamos generar comandos en cuyo nombre haya vocales acentuadas o eñes o números, porque para LaTeX todos estos caracteres son, a estos efectos, no letras. De hecho cuando LaTeX lee el carácter de escape ("\") comprueba si el siguiente carácter es una letra. Si no lo es, considera que se trata de un símbolo de control, los cuales tienen siempre exactamente un carácter de longitud. Por el contrario si el carácter inmediatamente posterior a "\" es una letra, LaTeX seguirá leyendo hasta que encuentre la primera no letra y cuando lo haga considerará terminado el nombre del comando.

Esto tiene como excepción ciertos comandos cuyo nombre acaba por un asterisco. Estos comandos siempre tienen otra versión del mismo nombre, y sin el asterisco, que funciona de modo ligeramente diferente. De momento olvidemos esas excepciones y asumamos, para lo que sigue, que en el nombre de un comando que no sea un símbolo de control, no puede haber nada más que letras mayúsculas o minúsculas.

El carácter con el que termina una palabra de control puede ser:

  1. Un espacio en blanco.
  2. Cualquier otro carácter que no sea una letra (un signo de puntuación, un número, un paréntesis...).

En el primer caso LaTeX asume que el espacio en blanco se introdujo para indicar que ahí acababa el nombre del comando, pero que no es un espacio en blanco real que haya que imprimir en el documento final. Lo cual tiene a su vez un efecto colateral que también es fuente de errores para los aprendices de LaTeX: si el espacio en blanco posterior a una palabra de control no se imprime, lo normal, salvo que hagamos algo para evitarlo, será que en el documento final el texto generado por el comando aparezca unido a la siguiente palabra.

Por ejemplo: imaginemos las siguientes líneas en un fichero fuente:

l\ae titia es una palabra latina. 
Para escribirla con \LaTeX hay que usar 
el comando \textbackslash ae.

En este ejemplo hay tres comandos. El primero \ae, genera en LaTeX el carácter æ;, el segundo, \LaTeX, ya lo vimos en el tema anterior: genera el logotipo de LaTeX adecuadamente formateada. El tercero, \textbackslash genera en el documento final una barra invertida.

Pues bien, tras compilar este texto obtendríamos el siguiente resultado:

lætitia es una palabra latina. Para escribirla con LaTeXhay que usar la secuencia de control \ae

He señalado con negritas los lugares donde estaban los comandos. Obsérvese que los espacios en blanco que había detrás de cada una de los comandos han desaparecido. Y que si bien en el primer y tercer caso ello es lo que se esperaba, y no hay ningún error, en el segundo caso su desaparición provoca que el texto "LaTeX" aparezca pegado a la siguiente palabra.

Para evitar este error de nada serviría escribir dos espacios en blanco en lugar de uno, porque LaTeX trata a todos los espacios en blanco consecutivos como uno sólo. Por ello, para asegurarnos de que el espacio en blanco se imprime, deberíamos, bien indicárselo expresamente a LaTeX (mediante el símbolo de control "\ " –el carácter de escape seguido de un espacio en blanco–), bien asegurarnos de que el nombre de la macro termine por una no letra distinta de un espacio en blanco. Por ejemplo las siguientes tres frases se formatearán correctamente:

\LaTeX\ fue originariamente diseñado...
\LaTeX{} es un gran sistema de generación de documentos.
\LaTeX, que está basado en \TeX...

En la primera hemos indicado expresamente que el espacio en blanco hay que imprimirlo. En la segunda hemos añadido un grupo vacío tras el nombre del comando. Como el grupo está vacío no se imprime nada, pero conseguimos que el compilador sepa, al leer el carácter "{" que ya se ha terminado el nombre del comando. En el tercer caso hemos procurado redactar la frase de tal modo que tras el comando aparezca una no letra que no consista en un espacio en blanco.

Argumentos de los comandos

Algunos comandos pueden recibir argumentos. Si el argumento es opcional (puede o no incluirse) cuando queramos incluirlo debemos indicarlo entre corchetes. Si el argumento es obligatorio, para incluirlo debemos hacerlo entre llaves; si se trata de un comando que admite ambos tipos de argumentos y queremos incluirlos los dos, hay que escribir siempre el argumento opcional (entre corchetes) antes que el obligatorio (entre llaves).

Como regla los comandos de LaTeX pueden recibir hasta 9 argumentos, de los que sólo el primero puede ser opcional. Por lo tanto el formato general de una palabra de control que admita argumentos es el siguiente:

\NombreMacro[Arg. opcional]{Arg. obl. 1°}{...}{Arg. Obl. 9°}

Por ejemplo, el comando "\emph" enfatiza (pone en cursiva) el texto que reciba como argumento. De modo que para conseguir un texto en cursiva habría que escribir en el documento fuente:

\emph{Este texto va en cursiva}

Macros creadas por el usuario

El comando "\newcommand" nos permite crear nuestras propias macros. Su formato es:

\newcommand{\NombreMacro}[Num Args][Valor arg. 1]{Definición}

Donde:

  • NombreMacro es el nombre de la nueva macro. No puede coincidir con el nombre de ninguna macro que ya se haya definido, ni con el de ningún comando, y debe consistir exclusivamente en letras, las cuales no pueden incluir caracteres inexistentes en el alfabeto inglés (vocales acentuadas, eñes...).
  • Num Args es el número de argumentos de la macro, en el caso de que se trate de una macro con argumentos. Puede tener un valor entre 1 y 9. Si la macro no usará argumentos no hay que indicar este apartado.
  • Valor arg. 1: Este apartado sólo hay que usarlo si la macro admitirá argumentos, y queremos dar un valor por defecto para el primer argumento. En tal caso estaremos creando una macro en la que el primer argumento será opcional: sólo habrá que indicarlo cuando no vaya a coincidir con el valor por defecto; y cuando haya que indicarlo, será entre corchetes (como sucede casi siempre en LaTeX con los argumentos opcionales).
  • Definición: Aquí habría que escribir el texto que queremos que LaTeX escriba siempre que encuentre esta macro. En la definición podemos poner otros comandos de LaTeX, texto, definición de variables... ¡casi cualquier cosa!

Una forma sencilla de usar las macros, que no exige ser un usuario avanzado de LaTeX es el de usarlas para generar abreviaturas. Por ejemplo: si yo tuviera que escribir un manual de Derecho civil en el que continuamente hubiera que citar la frase Código civil francés de 1804 (Código Napoleón), inspirador del código español de 1889, podría simplificar la escritura escribiendo en el preámbulo del documento:

\newcommand{\ccfr}{Código civil francés 
de 1804 (Código Napoleón), inspirador 
del código español de 1889}

El efecto sería que yo debería escribir exclusivamente "\ccfr" cada vez que quisiera obtener la frase en cuestión.

Pero las macros en función de abreviaturas no sólo sirven para simplificar la escritura del fichero fuente. También son muy útiles para asegurarse de que cierta palabra o texto difícil, siempre se escribe igual. Por ejemplo si en nuestro documento tuviéramos que referirnos continuamente a la secuencia binaria "001101001111001", en la que tan fácil es equivocarse al escribirla, podríamos poner en el preámbulo del documento:

\newcommand{\NumBin}{001101001111001}

de modo que, en lugar de escribir decenas o cientos de veces esa secuencia, asumiendo en cada ocasión el riesgo de equivocarse y cambiar un "0" por un "1" sólo habría que escribirla una vez, y cada vez que quisiéramos usar esa secuencia en el documento bastaría con escribir "\NumBin".

Redefinir comandos

Si \newcommand permite definir nuevos comandos, \renewcommand permite redefinir un comando previamente definido. Su formato es similar al de \newcommand:

\renewcommand{\NombreMacro}[Num Args][Valor Arg. 1]{Definición}

con la única diferencia de que si en \newcommand se produce un error en el caso de que elijamos como nombre del nuevo comando uno ya definido, en \renewcommand ocurre exactamente lo contrario: el error se generará si redefinimos un comando que no había sido previamente definido.

Con carácter general no es buena idea redefinir comandos de LaTeX, al menos hasta que sepamos algo más de LaTeX.

El texto en el fichero fuente

En principio todo lo que no sean instrucciones (precedidas por el carácter de escape) o comentarios (indicados por el carácter "%") se considera texto. Hay, no obstante, algunos caracteres que son objeto de un tratamiento especial por parte de LaTeX.

Los caracteres reservados de LaTeX

Los llamados caracteres reservados son aquellos que LaTeX interpreta como no texto y que por lo tanto no pueden usarse directamente en el fichero fuente para representar texto. Estos caracteres son:

\ % { } ~ $ # & ^ _

Aunque ya hemos visto el significado de alguno de ellos vamos a explicarlos todos:

  • \ Es el carácter de escape que indica a LaTeX el inicio de una secuencia de control.
  • % Es el indicador de comentario. Significa que lo que viene a continuación, hasta el final de la línea, es un comentario que debe ser ignorado en la compilación.
  • { y } Son, respectivamente, los caracteres de apertura y cierre de grupos. Sobre ellos véase más adelante.
  • ~ Es la llamada ligadura: inserta en el documento un espacio en blanco que no puede sustituirse por un salto de línea. Se pone entre dos palabras cuando queremos asegurarnos de que en el documento final figurarán ambas en la misma línea. Por ejemplo "Sr.~Ataz", equivale a "Sr. Ataz" salvo en el detalle de que en el segundo caso LaTeX podría formatear el documento de tal modo que "Sr." apareciera al final de una línea y "Ataz" al principio de la siguiente. Usando la ligadura eso no será posible.
  • $ Es el conmutador matemático activa (si estaba desactivado) o desactiva (si estaba activado) el modo matemático de LaTeX.
  • # Este carácter se interpreta siempre como indicador de parámetro y se puede usar exclusivamente en la definición de una macro, para hacer referencia a alguno de sus argumentos. Por ejemplo: si hemos definido la macro "\negcursiva" como una macro capaz de poner en negrita y en cursiva el texto que reciba como argumento, en la definición de la macro (y sólo allí), para referirnos al texto recibido como argumento (suponiendo que sea el primer argumento, o el único) deberíamos escribir "#1". Cualquier uso de este carácter fuera de una definición de macro generará un error. En este curso sólo se ha escrito un ejemplo de macro con argumentos, en donde se puede ver el uso de este carácter. Está en el tema 6°.
  • & Este carácter es para LaTeX el tabulador se usa exclusivamente en el interior de una tabla para indicar un cambio de columna. Cualquier otro uso generará un error. Su uso se explica en el tema 4°.
  • ^ y _ Estos dos caracteres son interpretados por LaTeX como indicadores de, respectivamente, superíndice y subíndice: su efecto es convertir el carácter (o grupo de caracteres) que se encuentre a continuación en superíndice o subíndice. LaTeX, por otra parte, sólo autoriza su uso en el modo matemático; fuera de él su uso generará un error.

Y ¿qué hacer si queremos imprimir en nuestro documento alguno de los caracteres reservados?: Muy fácil: basta con escribir el carácter de escape (\) antes del carácter reservado y así "\$" imprimirá en nuestro documento el símbolo del dólar, mientras que "\%" imprimirá el del tanto por ciento. No obstante hay que hacer las siguientes observaciones:

  • Para imprimir en el documento una barra invertida, no se usa "\\" sino el comando "\textbackslash". Esto es así, según el autor de TeX, para que no fuera fácil imprimir barras invertidas (lo que no explica es por qué no quería que fuera fácil). En látex además el símbolo de control "\\" provoca un salto de línea.
  • Hay dos caracteres reservados que, precedidos del carácter de escape, han sido definidos como símbolos de control cuya función no consiste en imprimir dicho carácter. Se trata de "^" y "~". El símbolo de control "\^" provoca que sobre el carácter inmediatamente a la derecha se imprima un acento circunflejo, y el símbolo de control "\~" coloca una tilde sobre el carácter inmediatamente posterior. Y así, por ejemplo, "\~a" generará el carácter "". En estos casos, para imprimir directamente "^" o "~" hay que insertar, tras el símbolo de control un grupo vacío, para indicar que el carácter siguiente es: ninguno. Así, por ejemplo, "\~{}a" imprimirá "~a".

Espacios en blanco y párrafos

En LaTeX los espacios en blanco, los tabuladores y los saltos de línea (el resultado de pulsar la tecla RETURN o INTRO) en el documento fuente se consideran caracteres equivalentes. Hayamos escrito un espacio en blanco, un salto de tabulador o un salto de línea, en el documento final se insertará, en los tres casos, un espacio en blanco.

En relación con los espacios en blanco hay una regla muy importante: da igual cuantos espacios en blanco (o caracteres equivalentes) consecutivos escribamos en nuestro documento. LaTeX los tratará a todos como si hubiera uno sólo. De modo que si, por ejemplo, escribimos:

En un lugar de la Mancha,      de cuyo nombre 
no me quiero acordar...

obtendremos exactamente el mismo resultado que si hubiéramos escrito:

  En un lugar de la Mancha,
  de cuyo nombre no me quiero
  acordar...

Para indicar un espacio en blanco de inserción obligatoria en la salida final, debemos escribir, antes del espacio en blanco obligatorio el carácter de escape ("\"). De modo que

En un lugar de la Mancha, \ \ de cuyo nombre 
no me quiero acordar

Incluirá detrás de la coma, tres espacios en blanco. Sin embargo hacer esto casi nunca es una buena idea. Hay en LaTeX otros procedimientos más eficaces para conseguir que una palabra se aleje de la que le precede (véase la lección 6ª).

El que el salto de línea se considere equivalente a los espacios en blanco significa que a LaTeX le da igual que al final de las líneas pulsemos o no la tecla RETURN (o INTRO, o RETORNO, o ENTRAR, que de todos esos modos se la conoce).

Y si la tecla RETURN no indica un salto de párrafo ¿Cómo podemos insertar un salto de párrafo? Para ello hay dos procedimientos:

  • Insertar una o varias líneas totalmente en blanco (es decir, una línea en la que no haya nada escrito, o sólo haya espacios en blanco y tabuladores).
  • Escribir expresamente el comando "\par", que inserta un salto de párrafo.

Lo más normal es insertar una línea totalmente en blanco. Una o varias, da igual, porque en materia de saltos de párrafo LaTeX actúa igual que en materia de espacios en blanco: le es absolutamente indiferente cuantas líneas en blanco consecutivas escribamos: Se insertará sólo un salto de párrafo.

Dobles Comillas

En los teclados suele haber un sólo carácter para representar las dobles comillas: ". En los libros, sin embargo, es habitual que se distinga entre dobles comillas de apertura y dobles comillas de cierre. También se distingue entre dobles comillas altas y dobles comillas bajas, también llamadas "comillas tipográficas" que se representan como "‹‹" y "››".

En LaTeX para indicar las dobles comillas se usan:

  • Dobles comillas altas de apertura: `` (dos acentos graves consecutivos).
  • Dobles comillas altas de cierre: ' ' (dos acentos agudos consecutivos, o dos apóstrofes consecutivos).
  • Dobles comillas tipográficas de apertura: < < (sólo con la opción spanish de babel).
  • Dobles comillas tipográficas de cierre: > > (sólo con la opción spanish de babel).
NOTA En los dos párrafos anteriores, para escribir < < y > > se ha insertado un espacio en blanco entre los dos caracteres consecutivos. En LaTeX NO HAY QUE HACERLO, aquí lo hemos hecho porque este texto está escrito en DokuWiki, lenguaje que cuando ve duplicado el carácter < automáticamente lo sustituye por ‹‹, y cuando ve duplicado > lo sustituye con ››.

Y, al mismo tiempo, no se recomienda nunca usar directamente en el fichero fuente el carácter de las dobles comillas ("), porque varios paquetes de LaTeX lo asocian a ciertas macros, y ello puede hacer que se produzcan resultados inesperados. En particular la opción "spanish" de "babel" así lo hace: usa el carácter " (que se supone que nunca es preciso escribir en LaTeX) para varios atajos de teclado. Un atajo de teclado significa asociar una secuencia de letras que sea fácil de escribir a un comando. Por ejemplo spanish asocia la combinación "c con el comando ‹‹\c c››.

Por otra parte, si nuestro teclado es capaz de generar directamente las comillas tipográficas (el mío lo hace) podemos usar ese carácter, en lugar de < < y > >, siempre y cuando carguemos el paquete inputenc con la codificación adecuada. Yo casi diría que es preferible, porque babel define < < no sólo como un equivalente al carácter "‹‹" sino también como el inicio de un grupo... de modo que si en el documento abrimos comillas mediante < < y luego olvidamos cerrarlas, al compilar se generará un error.

Guiones

Los teclados de ordenador sólo tienen un carácter para generar el guión: "-", sin embargo en los libros se usan hasta cuatro tipos de guiones:

  • El guión corto para unir algunas palabras compuestas, como, por ejemplo "pro-americano" o "anti-americano" o "no-muerto".
  • El guión medio, para indicar rangos de números, por ejemplo en la frase "Véanse las páginas 115.
  • El guión largo para abrir y cerrar disgresiones que funcionan de modo similar a los paréntesis: frases que se insertan dentro de otras de tal modo que es posible leer el texto saltándoselas si así se prefiere.
  • El indicador de que un número es negativo.

Pues bien: En LaTeX se distinguen estos cuatro usos y así:

  • Un guión solo en el texto se interpretará como guión corto, salvo que esté activado el modo matemático, en cuyo caso se interpretará como el signo de número negativo.
  • Dos guiones consecutivos se interpretarán como guión medio.
  • Tres guiones consecutivos se interpretarán como guión largo.

Puntos (y otros signos de puntuación)

En realidad decir que los puntos son caracteres especiales de LaTeX es hilar muy fino. Pero realmente lo son, en el sentido de que LaTeX les da un tratamiento especial.

LaTeX asocia ciertos caracteres a la terminación de frases: el punto, por supuesto, pero también "?", o "!". De acuerdo con la tradición tipográfica anglosajona (no sé si también la española) el espacio en blanco después de una frase debe ser algo mayor que el espacio en blanco normal entre palabras, y LaTeX actúa en consecuencia: al encontrar un punto (o cualquier carácter terminador de frases) añade algo de espacio en blanco. El problema está en que hay puntos que no terminan frases. Por ejemplo algunas abreviaturas usuales como, por ejemplo "ej." para ejemplo, o etc. para etcétera. En estos casos podemos advertir expresemante a LaTeX de que no debe añadir el espacio extra, simplemente insertando, en lugar del espacio en blanco normal tras el punto, un espacio en blanco forzado (\ seguido de un espacio en blanco). Por ejemplo:

... y así por ej.\ podríamos...

Obsérvese como tras el punto que no acaba frase, en lugar de un espacio en blanco normal hemos añadido un espacio en blanco forzado... Esto funciona porque LaTeX cuando inserta espacios en blanco forzados siempre inserta la cantidad de espacio en blanco que en el párrafo en cuestión se esté usando para separar palabras.

En el caso de abreviaturas no es preciso hacer lo anterior, si van escritas en mayúsculas, porque cuando LaTeX encuentra una letra mayúscula seguida de un punto, asume que se trata de una abreviatura y que el punto en cuestión no termina ninguna frase. Por ello cuando no sea así, si queremos que se añada el espacio extra, debemos indicarlo mediante el símbolo de control "\@" ubicado justo antes del punto en cuestión.

Lo aquí dicho se aplica también al resto de los signos de puntuación que LaTeX interpreta como terminadores de frases: ?, ! y :.

Un signo de puntuación especial es el de los puntos suspensivos. En la tradición tipográfica anglosajona no se suelen imprimir como tres puntos consecutivos, sino que se acostumbra a reducir el espacio entre ellos, al tiempo que se aumenta el espacio entre el último punto y la siguiente palabra.

En LaTeX se incluyen tres posibilidades de escribir los puntos suspensivos: "...", "\..." y "\dots". La opción "spanish" del paquete "babel" hace que usando los dos primeros procedimientos, los puntos suspensivos se impriman de acuerdo con la tradición española. Usando el comando \dots, por el contrario, siempre se imprimirán según la tradición anglosajona.

Otras nociones fundamentales

Entornos

En LaTeX un entorno es un bloque más o menos amplio de texto, al que se aplican ciertas características globales de formato, normalmente por tratarse de un texto que cumple cierta función dentro del documento; por ejemplo: por ser una cita literal, o un poema, o una ecuación...

Todo lo que se puede conseguir con un entorno se puede también conseguir con un comando; y de hecho hay varias ocasiones en que LaTeX prevé, para una misma misión, un comando o un entorno. Las diferencias básicas entre entornos y comandos, además de en la sintaxis, se encuentran en para qué se suelen usar unos y otros:

  • Cuando hay que aplicar sólo una característica de formato, se suele preferir el comando. Cuando se pretende aplicar simultáneamente varias características de formato a un mismo bloque de texto, se suele preferir el entorno.
  • Cuando el fragmento de texto al que se va a aplicar cierta característica de formato, es de longitud inferior a un párrafo, suele preferirse el comando; pero para aplicar características a bloques de texto de dos o más párrafos de longitud, suele preferirse el entorno.

Desde el punto de vista de la sintaxis, los entornos empiezan siempre con la orden "\begin" seguida del nombre del entorno (entre llaves) y acaban con la orden "\end" seguida del nombre del entorno (también entre llaves). Si el entorno tiene argumentos (opcionales u obligatorios) se introducen igual que en los comandos. Por lo tanto el formato general de un entorno es:

\begin{NombreEntorno}[Arg. opcional]{Arg obligatorio}
 
...
...contenido del entorno
...
 
\end{NombreEntorno}

Aunque hay que decir que en los entornos se suelen usar los argumentos mucho menos que en los comandos.

En LaTeX se utilizan los entornos para:

  • Indicar la alineación del texto (center, flushright, flushleft).
  • Indicar objetos flotantes de distinto tipo (table, figure, image)
  • Indicar que el texto del entorno es una cita literal (quote, quotation)
  • Indicar que el contenido del entorno es matemático (displaymath, math, equation...)
  • Indicar listas de distinto tipo (itemize, enumerate, description, list)
  • Escribir tablas (tabular)
  • etcétera.

Los entornos se pueden, por otra parte, anidar, sin más límite que la memoria del ordenador. Pero es importante, cuando se anidan entornos, que el orden de cierre de los mismos sea el adecuado; o en otro caso se generará un error. Por ejemplo:

\begin{entornoA}
 
...
 
\begin{entornoB}
 
...
 
\end{entornoA}
 
...
 
\end{entornoB}

Esta secuencia de apertura y cierre de entornos generaría un error; porque si el entornoB se abrió dentro del entornoA, debe cerrarse antes de cerrar el entornoA.

Asimismo se producirá un error si algún entorno no llega a cerrarse.

El orden de cierre de los entornos anidados, así como determinar si alguno de ellos realmente se ha cerrado o no, a veces es difícil; sobre todo cuando se han anidados entornos iguales. Por ejemplo: en las enumeraciones anidadas, como la orden de apertura y cierre del entorno es siempre la misma, el documento fuente puede llegar a ser confuso.

Por ejemplo: para conseguir una lista del tipo:

1. ...
  1.1. ....
  1.2. ...
       a. ...
       b. ...
  1.3. ...
2...

deberíamos escribir:

\begin {enumerate}
\item ...
  \begin{enumerate}
  \item ...
  \item ...
    \begin{enumerate}
    \item
    \item
    \end{enumerate}
  \item ...
  \end{enumerate}
\item ...
\end{enumerate}

En el tema 4° se explica este entorno, así como la manera de conseguir que cada enumeración se haga con números de distinto tipo. Lo que ahora me interesa destacar es que en el fichero fuente, las líneas de apertura y cierre de los entornos anidados son bastante parecidas, lo que, si se nos olvida alguna de ellas, puede hacer bastante difícil localizar el punto exacto donde debimos introducir la línea omitida.

Para evitar este error se recomienda que siempre que se vaya a usar un entorno se escriba la línea de cierre inmediatamente después de la línea de apertura, y luego se inserte entre ambas el contenido del entorno. También es buena idea en el documento fuente aplicar un distinto sangrado a cada nivel de anidamiento de entornos (tal y como hemos hecho en el ejemplo anterior), para que visualmente sea más fácil detectar donde empieza y donde acaba cada uno de ellos.

NOTA Respecto a los sangrados que apliquemos en el fichero fuente, téngase en cuenta que el hecho de que LaTeX equipare los saltos de línea a espacios en blanco, y trate todos los espacios en blanco consecutivos como si hubiera uno sólo, facilita que en el fichero fuente incluyamos los sangrados que queramos para mejorar la legibilidad del fichero; pues en el documento final formateado, los sangrados del fichero fuente serán totalmente ignorados. Esto nos ayuda a escribir ficheros fuente más claros.

LaTeX considera que un entorno es un grupo y, por lo tanto, toda característica de formato activada dentro de él, así como todo valor indicado en su interior, desaparece cuando se sale del entorno. Es decir que si dentro de un entorno activamos, por ejemplo, la letra negrita, al salir del entorno no tendremos que desactivarla expresamente, ya que fuera del entorno no se considerará que la negrita haya sido activada.

Por lo demás, al igual que ocurre con las macros, los entornos pueden recibir argumentos (aunque es bastante menos habitual que ello ocurra) opcionales y obligatorios. Asimismo, mediante la instrucción "\newenvironment" podemos crear nuestros propios entornos. El formato de esta instrucción es:

\newenvironment{Nombre}[Num Args.][Arg. 1]{Al entrar}{Al salir}

donde Nombre es el nombre del nuevo entorno (que no puede coincidir con el de ningún entorno ya definido, mientras que Num Args. y Arg. 1 funcionan igual que en la definición de las macros. Pero a diferencia de las macros, donde debemos escribir una sola definición, en los entornos se escriben dos definiciones:

  • Al entrar: El conjunto de instrucciones que hay que ejecutar al entrar en el entorno. Normalmente se usan para activar las características de formato que tendrá el nuevo entorno.
  • Al salir: El conjunto de instrucciones que hay que ejecutar al salir del entorno. Normalmente se usaran para desactivar las características de formato del entorno.

Asimismo podemos redefinir un entorno previamente existente mediante

\renewenvironment{entorno}[Num Args.][Arg.1]{Al entrar}{Al salir}

Grupos

En LaTeX un grupo es un bloque del documento que es tratado como unidad para alguna finalidad, o, si se prefiere, un grupo es una unidad de trabajo, en la que se pueden realizar múltiples asignaciones que serán "olvidadas" al salir.

En todo grupo hay un punto de inicio y un punto de finalización. Se considera que el grupo está compuesto por todo lo que haya entre ambos puntos. Por supuesto dentro de un grupo puede haber otros grupos. En LaTeX el anidamiento de grupos sólo tiene como límite la memoria del ordenador. Es muy importante no obstante, en caso de grupos anidados que se tenga claro que el orden en el que los grupos se deben cerrar es el inverso a aquel en el que se abrieron, es decir: abiertos, por ejemplo, cuatro grupos, el primer carácter de cierre de grupo se asignará al último grupo que se abrió.

Los caracteres generales para indicar el inicio y el fin de un grupo son "{" (para indicar el inicio) y "}" (para indicar el fin). Siempre que queramos indicar un grupo conviene escribir simultáneamente los caracteres de apertura y cierre, porque un grupo sin cerrar provoca en LaTeX un error que a veces, cuando hay un alto nivel de anidamiento, es difícil de localizar.

Como he dicho antes, cualquier alteración o cambio en el valor de variables o en los formatos activos que tenga lugar dentro de un grupo, se pierde cuando el grupo finalice.

Esta característica se suele usar para declarar bloques de texto que se verán afectados por cierta instrucción. Por ejemplo: el comando \bfseries funciona como una especie de conmutador: activa la letra negrita, que quedará activada hasta que se le indique lo contrario (mediante el comando \mdseries), pero si queremos ahorrarnos la necesidad de desactivar expresamente al primero, basta con generar un grupo con el texto que queremos en negrita y escribir dentro de él el comando en cuestión, tal y como se ve en el próximo ejemplo:

{\bfseries esto va en negrita} y esto no
\bfseries vuelve la negrita \mdseries y de nuevo se desactiva

En la primera línea hemos delimitado el campo de acción de "\bfseries" con un grupo, y por lo tanto no es preciso desactivarlo expresamente. En la segunda línea no hay grupo que delimite a \bfseries y, por lo tanto, es preciso desactivar su acción expresamente con \mdseries.

Este comportamiento de los grupos funciona no sólo respecto a los formatos activos, sino también en materia de valores y medidas. Por ejemplo: si en el interior de un grupo alteramos el interlineado, o los márgenes, o el espacio entre párrafos, cuando salgamos del grupo se restaurarán los valores previos.

Otra utilidad de los grupos es la de incluir varios caracteres donde LaTeX espera sólo un carácter. Por ejemplo ya hemos mencionado que el carácter reservado "^" se usa como indicador de superíndice en el modo matemático y se aplica al carácter que se encuentra a su derecha. Si queremos que se aplique a varios caracteres, hay que agruparlos. Así en el siguiente ejemplo:

$3^54$
$3^{54}$

en la primera línea obtendremos 354, y en la segunda 354. Obsérvese, por otra parte, como en ambas líneas, antes de usar el carácter reservado "^" hemos activado el modo matemático.

Asimismo en secciones anteriores hemos visto la utilidad de los grupos vacíos. Un grupo vacío puede servir, por ejemplo, para terminar el nombre de un comando, de tal modo que el espacio en blanco posterior se imprima. También podemos usar un grupo vacío para evitar que LaTeX considere que dos caracteres son consecutivos. Por ejemplo: si quisiéramos escribir dos guiones consecutivos, y no quisiéramos que LaTeX los convierta en un guión medio (que es lo que normalmente haría) deberíamos insertar entre ambos un grupo vacío, escribiendo "-{}-". Que es lo mismo que antes hicimos para conseguir imprimir un acento circunflejo aislado: "\^{}", porque si escribiéramos sólo "\^" ya vimos que LaTeX interpretaría que queremos poner un acento circunflejo sobre el carácter que se encuentre a la derecha.

Aunque los indicadores habituales de apertura y cierre de los grupos son "{" y "}", hay otros:

  • La línea de inicio de un entorno es también la de inicio de un grupo y la de cierre del entorno es también la de cierre de ese grupo. Es decir: los entornos en LaTeX tienen siempre la consideración de grupos, y por lo tanto los valores que alteremos dentro de un entorno, quedarán restaurados al salir de él.
  • Los comandos "\bgroup" y "\egroup", así como los comandos "\begingroup" y "\endgroup". "\bgroup" y \begingroup" abren cada uno de ellos un grupo. "\egroup" y " \endgroup" lo cierran.

Es importante tener en cuenta que cada procedimiento de apertura de grupo se asocia con un procedimiento de cierre; de manera que un grupo abierto con "{" sólo puede cerrarse con "}". Y por lo mismo: un grupo abierto con "\bgroup" sólo podrá cerrarse con "\egroup".

El modo matemático de LaTeX

TeX fue diseñado originariamente para escribir matemáticas; y es en este campo en el que empezó a destacar. Por ello no es de extrañar que en él (y en LaTeX) exista lo que se llama un modo matemático, en el cual el contenido del fichero fuente se interpreta como contenido matemático, lo que implica que será formateado como tal, se usará una fuente distinta y quedará habilitado el uso de ciertos comandos y caracteres reservados que no están habilitados en el modo normal.

Hay varios procedimientos para activar el modo matemático: En particular hay varios entornos que lo activan de los que los entornos básicos son "math" y "displaymath". El primero activa el que podríamos llamar "modo matemático en línea"; en él la expresión o fórmula matemática se imprimirá en la misma línea de texto en la que se encuentre. El segundo, por el contrario, activa el llamado "modo matemático destacado" que hace que la expresión o fórmula matemática se imprima centrada en una sola línea, separada verticalmente del párrafo anterior y del posterior por un espacio ligeramente superior al habitual, para que la fórmula quede destacada visualmente en el texto.

Pero como a fin de cuentas se asume que con LaTeX escribiremos muchas matemáticas, se proporciona un procedimiento más simple para activar y desactivar los modos matemáticos en línea y destacado: el conmutador del modo matemático que es el carácter "$". Este carácter activa el modo matemático (si estaba desactivado) o lo desactiva (si estaba activado).

En LaTeX, por lo tanto es corriente que las expresiones matemáticas se incluyan entre dos signos de dolar. Por ejemplo:

Siendo cierto que $X_n = X_k$ si y solo si $Y_n = Y_k$

hemos insertado dos fragmentos matemáticos en la misma línea.

El conmutador de modo matemático se puede usar de las siguientes dos maneras:

$ expresión matemática $
$$ expresión matemática $$

En el primer caso, que equivale al entorno "math", se activa el "modo matemático en línea": la expresión matemática se insertará en el lugar de la línea que corresponda. Por el contrario, cuando duplicamos el conmutador, se activa el "modo matemático destacado": la expresión matemática se destaca en la página de la manera antes explicada. Esto es lo mismo que se obtiene con el entorno "displaymath".

Otros modos de activar y desactivar el modo matemático son "\(" y "\[". El primero activa el modo matemático en línea (equivale a "$") y el segundo activa el modo matemático resaltado (equivale a "$$"). Para desactivar el modo matemático, entonces, hay que usar los caracteres \) y \].

A modo de resumen la siguiente tabla indica como activar y desactivar los dos modos matemáticos: el modo en línea y el modo resaltado:

Tipo de modo Se activa con y se desactiva con
en línea \begin{math} \end{math}
en línea $ $
en línea \( \)
destacado \begin{displaymath} \end{displaymath}
destacado $$ $$
destacado \[ \]

De la anterior tabla es importante retener que al modo matemático le ocurre como a los grupos: cada forma de activarlo tiene asociada su forma de desactivación, y si no se hace así se generará un error. Es decir: si hemos activado el modo matemático con "$" hay que desactivarlo también con "$", pero si lo hemos activado con "$$", habrá que desactivarlo con "$$". Asimismo un modo matemático activado con el entorno "math" sólo puede desactivarse cerrando el mencionado entorno.

En fin: para terminar diré que aunque el conmutador matemático original es el signo del dólar, en general se considera preferible activar el modo matemático con "\(" o "\[", porque estos procedimientos tienen la ventaja de que en fórmulas medianamente complejas dejan más claro, en el fichero fuente, donde empieza y donde acaba la fórmula, ya que cuando se usa el dólar el signo de apertura y cierre del modo matemático es el mismo, lo que puede a veces resultar confuso.

Longitudes

Muchos parámetros de las páginas se expresan como una longitud. Asimismo son varios los comandos que reciben como argumento alguna longitud.

En LaTeX las longitudes se expresan siempre igual:

Valor UnidadCuenta

El valor es un número entero o decimal y la unidad de cuenta se refiere a la unidad en la que está representada la longitud. El espacio en blanco entre el valor y la unidad suele omitirse.

LaTeX admite las siguientes unidades de medida de longitudes, y para cada una de ellas usa una secuencia identificativa que consta de dos letras. De mayor a menor, las medidas admisibles son las siguientes:

  • in Pulgadas (de inch en inglés). 1in = 2,54cm = 25,4mm = 72,27pt.
  • cm Centímetros. 1cm=28,45pt.
  • cc Cicero. 1cc = 12dd = 4,531mm.
  • pc Picas. 1pc = 12pt = 4,218mm.
  • mm Milímetros. 1mm = 2,845pt.
  • dd Puntos didt. 1157dd = 1328pt; 1dd = 0,376mm.
  • bp Puntos grandes (en inglés big points). 1in = 72bp.
  • pt Puntos. 1in = 72,27pt; 1pt=0,351mm
  • sp La unidad más pequeña: 1pt = 65536sp; 1mm= 186712sp.

Junto con las anteriores unidades, que son absolutas LaTeX también admite dos unidades de medida relativas, dependientes de la concreta fuente que se esté utilizando en cada instante. Se trata de:

  • em Anchura de una "M" mayúscula
  • ex Altura de una "x" minúscula.

Siempre que en LaTeX haya que indicar una medida debemos especificar la unidad. Da igual la que elijamos: LaTeX se ocupa de las conversiones. Pero es importante tener claro que la unidad siempre hay que especificarla, aunque el valor sea 0 (caso en el que, en teoría, la unidad daría lo mismo).

Variables que almacenan longitudes

Las longitudes se almacenan en variables internas de LaTeX. En principio para dar valor a una longitud basta con asignárselo escribiendo el nombre de la variable el signo "=" el nuevo valor y la unidad de medida. Por ejemplo:

\parindent=1.23cm

fijará en 1,23 centímetros el valor de \parindent, el cual controla la cantidad de indentación a la izquierda que debe recibir la primera línea de cada párrafo.

LaTeX proporciona, no obstante, dos comandos para fijar la longitud de una variable, se trata de \setlength{variable}{Valor} y \addtolength{variable}{Cantidad}.

\setlength fija en términos absolutos el valor de una variable de longitud. Por ejemplo: si queremos que el texto de nuestras páginas tenga una anchura exacta de 15 cm. podríamos escribir:

\setlength{\textwidth}{15cm}

lo que sería exactamente igual a haber escrito

\textwidth=15cm

La principal utilidad de \setlength está en la fijación de valores para las variables elásticas (véase más adelante).

Mucho más útil para el novato es el comando \addtolength, que nos permite alterar una longitud cuyo valor exacto no conocemos, añadiéndole o quitándole la cantidad que especifiquemos. Por ejemplo, si nos parece que los márgenes predeterminados por LaTeX son muy amplios, podríamos reducirlos añadiendo 1 centímetro a la variable que controla la anchura del texto, sin necesidad de saber cual es su longitud exacta. Para ello tendríamos que escribir:

\addtolength{\textwidht}{1cm}

\addtolength añade a la longitud especificada como primer argumento el valor especificado como segundo argumento. Si en el segundo argumento se indica una cantidad negativa el resultado será que esa cantidad se restará del valor previo de la longitud.

Longitudes elásticas

En LaTeX algunas longitudes son elásticas, ello significa que admiten un valor natural u óptimo, pero pueden aumentar o reducirse. Por ejemplo: el espacio entre palabras en una línea: en principio hay un valor predeterminado, pero según las necesidades de composición del párrafo, habrá que aumentar o reducir ese valor para conseguir que todas las líneas del párrafo tengan la misma longitud.

Este tipo de longitudes elásticas se definen por tres valores: su valor óptimo o normal, la cantidad en la que pueden aumentar, y la cantidad en la que pueden reducirse. Y esto se puede fijar mediante el comando \setlength. Por ejemplo:

\setlength{\parskip}{1ex plus0.5ex minus 0.2ex}

fijará el valor de parskip como 1 ex, pero advirtiendo que puede aumentar hasta 1,5 ex, o reducirse hasta 0,8 ex.

Contadores

Uso de los contadores

Otra variable interna manejada por LaTeX son los contadores: en ellos se almacena un número entero que es incrementado cuando se produce cierto evento; como, por ejemplo, el contador "page" que se incrementa cada vez que se inserta un salto de página, o el contador "footnote" que se incrementa cuando se inserta una nota a pie de página. Hay asimismo eventos que provocan que un contador se reinicie. Por ejemplo, cada vez que cambiamos de capítulo, se reinicia el contador de secciones. Cada vez que cambiamos de sección, se reinicia el contador de subsecciones... Y por esto la primera sección de cada capítulo es siempre la sección "1", porque al empezar un capítulo nuevo se reinicia el contador de secciones, olvidando su valor previo.

Para alterar el valor de un contador se dispone de dos comandos:

\setcounter{Valor} 
\addtocounter{Valor}

El primero establece el valor en términos absolutos. Por ejemplo, si queremos que en nuestro documento los capítulos empiecen a partir del 101, deberíamos escribir, antes del primer capítulo:

\setcounter{chapter}{100}

Obsérvese que lo ponemos en 100, y no en 101, porque el primer comando \chapter empezará por incrementar el valor del contador.

\addtocounter añade al contador indicado la cantidad especificada que, si es positiva, incrementará el contador, y si es negativa se restará del valor previo. Por ejemplo: \addtocounter{page}{1} hará que la numeración de páginas de nuestro documento se salte una página.

Imprimir el valor de un contador

Para conocer el valor de un contador se dispone del comando \value{contador}. Pero el resultado de este comando no se puede imprimir directamente en el documento, y sólo se usa para programación de macros.

El comando que imprime el valor de cada contador se denomina igual que el propio contador que la sílaba "the" delante, y así, por ejemplo, el comando que imprime el contador "page" se llama "thepage", y el que imprime el contador "subsubsection" se denomina "thesubsubsection".

Redefiniendo estos comandos podemos modificar el formato en el que se imprime un contador concreto. Así, por ejemplo, si queremos que en nuestro documento las páginas se impriman en negrita, deberíamos escribir en el preámbulo:

\renewcommand{\thepage}{\textbf{\arabic{page}}}

Obsérvese bien la instrucción anterior, porque en ella hemos introducido un comando hasta ahora no explicado: \arabic. Este comando se usa con contadores e indica que hay que imprimirlos como números arábigos. Por lo demás el resto de la instrucción es claro: empezamos con \renewcommand y luego indicamos que el comando a redefinir es \thepage. Tras ello escribimos la nueva definición en la que empezamos diciendo que queremos escribir en negrita, y lo que se escribirá en negrita es precisamente el valor en números arábigos del contador "page".

De hecho al redefinir el comando de impresión de un contador siempre hay que indicar si queremos que el valor del contador se imprima como números arábigos (\arabic), alfabéticos en mayúsculas o en minúsculas (\Alpha y \alpha, respectivamente) en números romanos (\roman o \Roman según los queramos en minúsculas o en mayúsculas) o como símbolos (\fnsymbol).

Imprimir un contador como símbolos responde a una tradición tipográfica anglosajona que, en documentos con pocas notas a pie de página, en lugar de con números, numeraba las notas con ciertos símbolos y así la primera se marcaba como un asterisco, la segunda con , la tercera con , etc.

En España nunca ha existido esa tradición, aunque sí es cierto que en determinados impresos para las notas a pie de página en lugar de números se usan asteriscos, de manera que la primera recibe un asterisco, la segunda dos asteriscos, etc. Por esta razón cuando está activa la opción "spanish" de "babel" el comando \fnsymbol produce que el valor del contador se represente exclusivamente con asteriscos. El problema está en que como una larga ristra de asteriscos es muy difícil de leer, "spanish" limita el valor de los contadores que se deban representar con \fnsymbol hasta un máximo de 6.

Lo que nos queda por aprender

De los temas tratados en esta lección hay varios aspectos que no se han tratado en absoluto, o lo han sido de modo insuficiente. Entre otros:

  1. A propósito de los comandos de LaTeX se han dejado de mencionar numerosas cuestiones. En particular no se ha dicho nada sobre la distinción entre comandos robustos y comandos frágiles.
  2. Lo que se ha dicho de las macros definidas por el usuario no es sino un muy pálido reflejo de la potencia y versatilidad de las macros en LaTeX. En particular no se ha mencionado nada de las versiones estrelladas de \newcommand, \newenvironment, \renewcommand, \renewenvironment; tampoco se ha mencionado la macro \providecommand; ni se ha indicado el uso de la potentísima instrucción \let, ni una palabra sobre \def, ni un sólo ejemplo de las posibilidades que ofrecen las macros con parámetros...
  3. Se ha hablado del modo matemático pero en sentido estricto no constituye un modo: los auténticos modos de LaTeX (el horizontal, el vertical y el matemático restringido), no se han mencionado.
  4. A propósito de las longitudes no se ha hablado de la posibilidad de crear nuevas longitudes (mediante \newlength) ni de algunas longitudes elásticas especiales que tienen múltiples usos, en particular \fil y \fill. Tampoco se ha hecho referencia al comando \strech.
  5. En materia de contadores tampoco se han mencionado los contadores definidos por el usuario mediante el comando \newcounter.
  6. En fin: hay una noción fundamental de LaTeX que tampoco se ha mencionado: las cajas, que son esenciales para entender el funcionamiento interno de LaTeX. Considero, no obstante, que su tratamiento aquí introduciría una complejidad excesiva.

Sobre éstas y otras cuestiones podemos profundizar usando los procedimientos y fuentes de conocimiento que se mencionaron en la lección 2ª. Y al igual que entonces dije: ¡que nadie se desanime! no es preciso saber todo eso para escribir magníficos documentos perfectamente estructurados y con una calidad tipográfica comparable a la de las mejores imprentas del planeta.

Todas las Secciones