Composición del documento: El texto

En este tema, y en los próximos, vamos a tratar de la composición de un documento en LaTeX. En este tema lo vamos a hacer desde el punto de vista del texto. Desde este punto de vista el elemento básico de un documento está constituido por los caracteres, los cuales son, en cierto modo, los átomos del documento. Sus partículas elementales. A partir de los caracteres formamos palabras y párrafos. Estos tres elementos son los que vamos a tratar de momento:

Caracteres

Ya hemos visto que, salvo en el caso de los caracteres reservados, a los que LaTeX da una interpretación especial, en principio cualquier carácter que incluyamos en nuestro documento será considerado "texto" y si bien ciertos caracteres tienen un tratamiento especial (espacios en blanco, comillas, guiones...) la mayoría serán simplemente incluidos en el documento final tal cual se insertaron en el fichero fuente, siempre que en el paquete inputenc hayamos indicado la codificación adecuada.

Hay algunos caracteres que, en ciertos contextos se interpretan de determinada manera, y en otros contextos se toman tal cual. Por ejemplo los corchetes: ubicados inmediatamente después de un comando o entorno que admita un argumento opcional, se interpretarán como delimitadores del argumento opcional, y no como parte del texto propiamente dicho. Pero en cualquier otro lugar en el que escribamos unos corchetes, estos se imprimirán en el documento final.

Símbolos especiales. El problema del euro

Para obtener determinados caracteres que no suelen encontrarse en los teclados, LaTeX incluye ciertos comandos, y así:

Comando Produce Comando Produce
\S § \P
\dag \ddag
\copiright © \pounds £

Curiosamente LaTeX no incorpora ningún procedimiento estándar para generar el símbolo del euro. Ni siquiera aunque nuestra codificación lo soporte. Existen varios paquetes que permiten obtener el euro: textcomp, eurosym, europs, eurosans... Yo suelo usar eurosym que incorpora un comando denominado \euro que imprime el signo del euro en el formato adecuado al contexto en el que se utilice.

Acentos y letras no inglesas

Con los teclados españoles podemos generar vocales acentuadas, y los caracteres "ñ" y "ç". Raramente es posible generar consonantes acentuadas, u otros caracteres que no existen en español. Pero LaTeX está preparado para producir cuálquier carácter con cualquier teclado; y para ello proporciona un completo conjunto de comandos. Así:

Comando Produce Comando Produce Comando Produce Comando Produce
\oe œ \OE Œ \ae æ \AE Æ
\o ø \O Ø \ss ß \L L

En cuanto a los acentos

  • \' –> Coloca un acento agudo sobre la próxima letra.
  • \` –> Coloca un acento grave sobre la próxima letra.
  • \^ –> Coloca un acento circunflejo sobre la próxima letra.
  • \" –> Coloca una diéresis sobre la próxima letra.
  • \~ –> Coloca una tilde sobre la próxima letra.
  • \= –> Coloca una línea horizontal sobre la próxima letra.
  • \. –> Coloca un punto sobre la próxima letra.
  • \u –> Coloca un semicírculo sobre la próxima letra.
  • \v –> Coloca una v sobre la próxima letra.
  • \H –> Coloca unas comillas sobre la próxima letra.
  • \r –> Coloca un circulito sobre la próxima letra.
  • \t –> Coloca una ligazón sobre las dos próximas letras.
  • \c –> Coloca una cedilla bajo la próxima letra
  • \d –> coloca un punto bajo la próxima letra.
  • \b –> Coloca una barra bajo la próxima letra

Podríamos pues, mediante estos comandos, escribir un documento completo usando caracteres españoles, pero sin necesidad de usar ninguna codificación distinta del ASCII puro. Lo que ocurre es que sería muy tedioso. Hay, no obstante, editores de texto que permiten que se les introduzcan los caracteres no anglosajones directamente desde el teclado pero que convierten el carácter al comando adecuado en LaTeX para generarlo. Eso nos ahorraría tener que usar el paquete inputenc y puede ser buena idea si tenemos que compartir nuestros ficheros fuente con personas que no sea normal suponer que dispongan de un teclado español, como por ejemplo miembros de universidades extranjeras.

Símbolos matemáticos y letras griegas

LaTeX también incorpora numerosos comandos para representar símbolos matemáticos; entre los cuales LaTeX incluye a gran parte del alfabeto griego, dado lo habitual que es usar caracteres griegos en las fórmulas matemáticas.

OJO: usar caracteres griegos por este procedimiento no es lo mismo que escribir con el alfabeto griego. Para esto último lo que debemos hacer es cargar la opción "greek" del paquete babel. Y si lo que queremos es escribir en griego clásico, hay que usar la opción "polutonikgreek" de babel.

La peculiaridad de estos comandos es que sólo funcionan cuando está activado el modo matemático. Fuera de él generan un error.

Para representar las letras griegas el comando consiste siempre en el nombre (en inglés) de la letra. Según escribamos el nombre en mayúsculas o minúsculas, así obtendremos la letra correspondiente, si bien LaTeX no incorpora comandos que permitan representar en mayúsculas todo el alfabeto griego, sino sólo algunas letras.

Así, por ejemplo, dado que el nombre de TeX procede del griego, para escribirlo tendríamos que teclear:

$\tau\epsilon\chi$

Véase como hemos activado el modo matemático antes de introducir los caracteres griegos.

Además de letras griegas y símbolos matemáticos en sentido estricto, en el modo matemático quedan habilitados numerosos comandos que permiten representar flechas de todo tipo, conectores, símbolos relacionales, operadores matemáticos de distinto tipo, etc.

No recogeré aquí esos comandos, porque en el formato en el que está escrita esta página no se pueden representar los caracteres que producen, y sin ver el resultado, de poco sirve aprender el nombre del comando. Me remito pues, a otro lugar: concretamente al documento de Tomás Bautista Una descripción de LaTeX2e, en cuya sección 3.10 se puede encontrar un listado bastante completo.

El tamaño de los caracteres

Ya hemos visto que una opción de documentclass permite indicar el tamaño base de la fuente a utilizar. A partir de él LaTeX calcula el tamaño de diferentes secciones del texto: Títulos, subtítulos, notas al pie, notas marginales...

LaTeX no es muy amigo de facilitar la indicación directa del tamaño de fuente, y por ello no proporciona ningún comando que permita usar una fuente de cierto tamaño concreto. A cambio proporciona un completo conjunto de comandos que permitern alterar el tamaño de la fuente en relación con el que, en cada caso, LaTeX considera tamaño normal. Se trata pues de comandos relativos que actúan sobre el tamaño de la fuente base del documento

Así disponemos, de mayor a menor, de los siguientes comandos:

  • \Huge
  • \huge
  • \LARGE
  • \Large
  • \large
  • \normalsize
  • \small
  • \footnotesize
  • \scriptsize
  • \tiny

Como se verá, a partir del tamaño normal disponemos de cinco posibilidades de ampliación, y cuatro de reducción. Lo que cubre prácticamente todas las necesidades.

Las características de formato de los caracteres

La siguiente tabla recoge los comandos dirigidos a especificar el formato:

Característica de formato Comando 1 Comando 2 Efecto
Familia \rmfamily \textrm{texto} Letra román
\sffamily \textsf{texto} Letra san-serif
\ttfamily \texttt{texto} Letra mono-tipo
Grosor \bfseries \textbf{texto} Negrita
\mdseries \textmd{texto} Grosor normal
Forma \upshape \textup{texto} Recta (normal
\itshape \textit{texto} Cursiva
\slshape \textsl{texto} Oblicua
\scshape \textsc{texto} Versales
Otros \underline{texto} Subrayado
\emph{texto} Destacar
\textnormal{texto} Texto normal

Se observará que en la mayor parte de los casos hay dos comandos que permiten obtener el tipo de formato que sea. Los comandos recogidos en la primera columna (a los que he denominado Comando 1) no reciben argumentos, y se limitan a activar el formato en cuestión, el cual seguirá en vigor hasta que sea desactivado o hasta que se abandone el grupo en el que el comando se activó. Los comandos de la segunda columna aplican el formato especificado al texto que reciban como argumento. En dicho texto no puede haber saltos de párrafo introducidos mediante lineas en blanco, pero sí puede haber saltos de párrafo introducidos mediante el comando \par. Los comandos del segundo grupo, por otra parte, pueden anidarse unos dentro de otros. Los del primer grupo no necesitan hacerlo, porque cada uno activa su característica de formato, con independencia de las restantes.

Todos los comandos de la primera columna tienen, por otra parte, una versión compuesta exclusivamente por los dos primeros caracteres del comando, que hoy día se considera obsoleta.

Respecto a los comandos obsoletos de LaTeX, véase el documento denominado Some obsolete commands and packages.

Cuando lo que se quiere es aplicar el formato a un fragmento de texto, dentro del párrafo actual (incluso a todo el párrafo) lo normal es usar la versión de la 2ª columna. Por el contrario cuando el formato deberá aplicarse a varios párrafos, se suele preferir la versión de la primera columna, si acaso estableciendo un grupo que delimite el campo de acción del comando.

En cuanto al significado de los distintos formatos:

  • Familia de la fuente: LaTeX admite tres familias: román (la letra por defecto), sanserif (una letra sin adornos, más austera que román) y "ttype" una letra monoespacio que imita a los caracteres típicos de una máquina de escribir. Para que los acostumbrados a las fuentes estándar de los procesadores de textos hagan una idea diré que la letra tipo "Times New Roman", como su nombre indica, es del tipo "román"; "Arial" es del tipo "sanserif" y "Courier" es del tipo "ttype".
  • Grosor del trazo: Con independencia de la familia a la que pertenezca la fuente, el trazo puede ser normal o grueso. En el segundo caso a la letra se la suele denominar "negrita" (en inglés: bold).
  • Forma del dibujo: Las formas pueden ser cuatro. Tres de ellas se diferencian entre sí por la inclinación (real o aparente) del dibujo; la cuarta se diferencia por otros aspectos. Desde el punto de vista de la inclinación se distingue entre letra recta o no inclinada (upshape), es decir, letra normal, letra ligeramente inclinada a la derecha (itálica o cursiva) y letra de inclinación más acentuada (oblicua, en inglés slanted). Desde el punto de vista del diseño de las fuentes, la letra oblicua es igual a la recta, pero ha sido matemáticamente rotada sobre su eje; la letra cursiva, por el contrario, tiene un diseño distinto al de la recta, que hace que parezca inclinada. Por ello la sensación visual es la de que la letra oblicua queda bastante más inclinada que la cursiva.
  • Junto a estas tres formas que se diferencian por la inclinación, existe una cuarta forma, constituida por las letras versales o versalitas. En inglés se las denomina small caps lo que literalmente significa pequeñas mayúsculas. Se trata de letras dibujadas como las mayúsculas, pero con un tamaño que no supera al de las letras minúsculas.

Además de estas características de formato, en la tabla que precede he recogido otras características que no encajan en las anteriores clasificaciones:

  • Subrayado: Este efecto en realidad no afecta al formato de la letra, sino a su decoración. Las reglas de la buena tipografía desaconsejan subrayar el texto, y por ello LaTeX no lo alienta demasiado. Hay incluso tutoriales de LaTeX que ni lo mencionan. El comportamiento del comando \underline{}, por otra parte, es distinto al de los anteriores: \underline dibujará una línea bajo cualquier objeto que recibe como argumento, a diferencia de los comandos de formato propiamente dichos, que sólo afectan a las letras (o caracteres asimilados a estos efectos) en sí mismas consideradas.
  • Enfatización: En la mayor parte de los casos el comando \emph{} produce exactamente el mismo efecto que \textit{}: pone en cursiva el texto que reciba como argumento. Sin embargo entre ambos hay una muy importante diferencia conceptual, porque \textit{} es una instrucción tipográfica: le decimos a LaTeX exactamente el formato que queremos que aplique; pero \emph{} es una instrucción conceptual o, si se prefiere, estructural, lógica o semántica (que de todas estas maneras se llama a este tipo de instrucciones): le decimos a LaTeX que queremos que destaque el texto, y dejamos a su criterio el como hacerlo. En la mayor parte de los casos lo hará poniéndolo en cursiva; pero habrá ocasiones en que no sea así: cuando se trate de destacar un texto que ya estaba en cursiva; entonces la forma de destacarlo es, precisamente, quitar la cursiva. Por tal razón puede decirse que \emph{} se ajusta a la filosofía general de LaTeX mucho mejor que \textit{} y, por ello, suele recomendarse el uso de \emph{} con preferencia al de \textit{}.
  • Texto normal: El comando \textnormal{} produce texto normal. Ahora bien ¿qué significa texto normal? La idea de normalidad es relativa y depende de la característica de formato de que estemos hablando. Para LaTeX lo normal es que la letra sea de la familia román, trazo de grosor medio y forma recta. Esta es la letra que se obtiene mediante este comando.

Características adicionales de formato

Además de los comandos indicados, que internamente afectan al tipo de fuente a seleccionar en cada caso, hay otros rasgos de los caracteres que se suelen considerar características de formato. Así:

  • Color de los caracteres: LaTeX no incluye la posibilidad de colorear el texto, pero con los paquetes "color" y "colorx" es bastante sencillo. Consúltese la documentación de estos paquetes.
  • Texto en superíndice: LaTeX proporciona el comando \textsuperscript{texto} y la opción "spanish" de babel incluye un comando alternativo para el mismo efecto: \sptext{texto}, En ambos casos el texto incluido como argumento se colocará en superíndice, y así, por ejemplo, el comando "1\sptext{er}" producirá 1er.

Obsérvese que no hay un comando para obtener texto normal en como subíndice esto es porque LaTeX considera que los subíndices sólo se usan en expresiones matemáticas. Y en el modo matemático ya sabemos que hay un procedimiento muy sencillo para obtener superíndices y subíndices: usar los caracteres reservados ^ y _.

Palabras

Una palabra es un conjunto de caracteres que representan letras, delimitados por delante y por detrás por dos caracteres que no representan letras.

División silábica de las palabras

Para facilitar la justificación de las líneas por su lado derecho e izquierdo, LaTeX determina los puntos en los que la división silábica de las palabras permite un cambio de línea. Esto es más estético que alterar en cada línea el espacio de separación entre las palabras (que sería la otra alternativa para conseguir texto justificado), pero tiene el inconveniente de que cada idioma posee unas reglas diferentes de segmentación silábica. Por ello es tan importante en LaTeX que esté cargado babel con el idioma adecuado. Porque, dado que LaTeX automáticamente divide las palabras al final de línea (cuando tienen más de dos sílabas, y siempre y cuando en ellas no haya ya un guión y la fuente en la que la palabra se escribe no sea de la familia "ttype"), si no se ha indicado el idioma en el que estamos escribiendo la división se hará con las reglas del inglés.

En el caso (posible aunque poco habitual) de que el algoritmo de división silábica funcione incorrectamente en alguna palabra, o si, por cualquier otra razón, queremos alterar la división silábica que LaTeX automáticamente realiza, disponemos de dos procedimientos.

  • Indicar, mediante el símbolo de control "\-" posibles lugares de segmentación silábica de una palabra. Por ejemplo, para indicar a LaTeX los lugares en los que puede partir la palabra "habanera" podríamos escribir, en lugar de habanera, "ha\-ba\-ne\-ra". O si sólo queremos que la palabra se pueda segmentar en un punto podríamos escribir "haba\-nera". Cuando en una palabra se incluye el símbolo de control "\-" LaTeX no le aplica su algoritmo de división silábica y sólo parte la palabra por el lugar o los lugares que se le hayan indicado.
  • Para el caso de que una determinada palabra se repita mucho en nuestro documento, y LaTeX no la divida a nuestra satisfacción, podemos incluir en el preámbulo el comando \hyphenation. Este comando recibe como argumento varias palabras, separadas por comas, en las que se ha indicado, con un guión, el lugar por donde se pueden separar. Por ejemplo:
\hyphenation{es-can-da-lo-so,es-tu-pi-dí-si-mo}

Se asegurará de que LaTeX siempre sepa por donde dividir las palabras "escandaloso" y "estupidísimo".

En todo caso téngase presente que esto es sólo para el caso de que el algoritmo de división silábica tenga algún fallo. A veces ocurre, pero no es lo más normal. También para palabras "extrañas", como nombres propios extranjeros... que es difícil que LaTeX sepa por donde dividir".

Suprimir la división silábica

En casos límite puede ser conveniente suprimir la división silábica. Por ejemplo, si estamos escribiendo un texto con abundancia de palabras en otros idiomas, y no nos merece la pena indicar en cada caso el idioma de la palabra, o si estamos escribiendo un texto sobre informática y no queremos que el nombre de los comandos se divida, o por cualquier otra razón.

LaTeX proporciona el entorno "sloppypar" dentro del cual se reduce sensiblemente la división silábica de las palabras, pues el efecto de este entorno es el de aumentar la tolerancia de LaTeX en materia de cantidad de espacio entre palabras de una línea: al aumentar esa tolerancia el efecto es que la división silábica tiende a ser menos necesaria.

Un efecto similar al del entorno "sloppypar" se obtiene mediante el comando \sloppy, que "activa" la tolerancia en materia de espacios en blanco en las líneas. Esa tolerancia se mantendrá hasta que se encuentre el comando \fussy, que la desactiva. Por lo tanto, un comando \sloppy en el preámbulo del documento tendrá como efecto que en todo él apenas se producirá división de palabras.

Y si lo que queremos es conseguir que cierta palabra nunca sea dividida, basta con usar el comando \hyphenation con dicha palabra, sin indicar puntos posibles de división. Por ejemplo, si queremos evitar que alguna línea de nuestro documento termine en la palabra "pene", pero en él hemos escrito mucho la palabra "penetrar", podemos escribir en el preámbulo:

\hyphenation{penetrar}

Párrafos

A diferencia de los saltos de línea y de los saltos de página, que normalmente son generados de forma automática por LaTeX, los saltos de párrafo tienen que ser expresamente introducidos por el autor. Ya vimos que hay dos procedimientos para hacerlo: El comando \par y el hecho de dejar en el fichero fuente una o más líneas totalmente en blanco.

Distancia entre párrafos

Con carácter general la distancia entre párrafos está controlada por la variable \parskip que es una medida y por lo tanto se modifica simplemente asignándole un nuevo valor. Por ejemplo

\parskip=5pt

fijará el espacio entre párrafos en cinco puntos.

Ahora bien: la anterior sentencia sólo determina lo que podríamos llamar el espacio natural entre párrafos. Pero \parskip es lo que se llama una medida elástica, en el sentido de que puede aumentar o reducirse. Como regla LaTeX lo aumentará o reducirá según sea necesario para que el aspecto de la página sea el mejor posible. Pero podemos también limitar el margen de maniobra de LaTeX. Y así la siguiente sentencia:

\setlength{\parskip}{2ex plus0.7ex minus0.4ex}

Indicaría a LaTeX que la medida natural de \parskip es de 2ex (es decir dos veces la altura de una "x" con la fuente actual, y que a esa medida se le puede añadir, si es preciso, hasta un máximo de 0,7ex, o reducir hasta 0,4ex.

Eso claro dejaría a LaTeX menos margen para alterar \parskip, lo que, a su vez, podría traducirse en páginas más desiguales en el tamaño de su mancha.

Si queremos alterar manualmente el espacio entre dos párrafos concretos, lo que debemos hacer es utilizar uno de los comandos que insertan espacio vertical (que veremos a propósito de la distancia entre líneas) justo inmediatamente antes del salto de párrafo.

Alineación del texto de los párrafos

Como regla general LaTeX alinea los párrafos por la izquierda y por la derecha, produciendo el efecto que en tipografía suele denominarse justificado de márgenes y que significa que, visualmente, todas las líneas del párrafo, salvo la primera y la última tienen exactamente la misma longitud. La primera línea es algo más corta, porque LaTeX le aplica una pequeña indentación a la izquierda (como en seguida veremos). La última línea no recibe ningún tratamiento para ajustarse al margen derecho, y por ello normalmente será algo más corta que las demás.

Para producir otras alineaciones, se dispone de tres entornos y tres comandos:

Tipo de alineación Entorno Comando
Texto centrado center \centerline{texto}
Texto a la derecha flushright \rightline{texto}
Texto a la izquierda leftright \leftline{texto}

Normalmente se usa el entorno cuando queremos aplicar el efecto a varias líneas consecutivas, siendo asimismo habitual que las diferentes líneas se separen mediante saltos forzados, ya que aplicar estos efectos a todo un párrafo no es corriente y, en algunas ocasiones, serviría de poco; porque como LaTeX procura, al insertar los saltos de línea, que la longitud de las líneas sea lo más aproximada posible, todo un párrafo centrado, por ejemplo, puede verse de modo parecido a como se vería un texto sin justificar... pero podría alguien no darse cuenta de que lo que ocurre es que el párrafo está centrado.

Los entornos "center", "flushright" y "leftright", además de producir cada uno de ellos un tipo concreto de alineación, añaden cierta cantidad de espacio vertical por encima y por debajo del texto, para destacar visualmente mejor en la página su contenido. Por ello si no deseamos que esos espacios extra sean añadidos tendremos que usar la versión de comando.

La versión de comando, por otra parte, aplicada a un fragmento dentro de un párrafo, produce resultados poco ortodoxos (aunque totalmente previsibles). Por ello suelen usarse en líneas aisladas.

Los comandos \centerline{}, rightline{} y leftline{} son una adaptación de tres primitivas de TeX que activaban, cada una de ellas, el tipo de alineación a que se refieren. Se trata de \centering, \raggedright y \raggedleft. Aunque estas primitivas se pueden usar directamente en LaTeX (como cualquier aspecto de TeX) no es corriente verlas usadas, salvo \centering, en el interior de algún entorno (que no sea center, claro está).

Indentación de los párrafos

LaTeX no proporciona directamente comandos para modificar a voluntad los márgenes derechos o izquierdo de los párrafos, lo que es acorde con su filosofía de ocuparse él de estos detalles mientras el autor se concentra en el contenido. En materia de indentación sólo se permite al autor controlar la de la primera línea. También podemos, claro está, incluir entornos que provoquen cierta indentación especial:

Indentación de la primera línea

En LaTeX la primera línea de cada párrafo recibe una pequeña indentación. El tamaño de la misma está controlado por la variable "\parindent". Para modificarlo, por lo tanto, basta con indicar un valor distinto.

\parindent=NuevoValor

Si queremos que el nuevo valor se aplique a todo el documento, debemos incluir el comando anterior en el preámbulo. Si indicamos un valor negativo conseguiremos párrafos en los que la primera línea quedará más a la izquierda que las restantes.

El valor de \parindent es una longitud por lo tanto hay que especificar la unidad de medida.

Para conseguir que en un párrafo concreto no se indente la primera línea, se dispone del comando \noindent, que debe colocarse al principio del párrafo cuya indentación se desea evitar. Pero si lo que queremos es eliminar la indentación de todos los párrafos, deberíamos indicar en el preámbulo del documento un valor de "0pt" para la variable \parindent.

Entornos que provocan una indentación especial

Los entornos "quote" y "quotation" hacen que el texto ubicado en su interior aparezca con los márgenes derecho e izquierdo incrementados ambos en una misma cantidad. Se usan, sobre todo, para reproducir citas y textos entrecomillados, y de ahí su nombre (como se habrá dado cuenta todo lector que sepa inglés).

La diferencia entre "quote" y "quotation" está en que el primero suprime la indentación de la primera línea de los párrafos, mientras que el segundo la mantiene. En ambos casos, además, se añade un espacio vertical adicional por encima y por debajo del contenido del entorno, para destacarlo visualmente dentro de la página.

Entre los entornos que provocan una indentación especial hay que incluir también a las listas, que veremos en seguida.

Escribir poesía en LaTeX

El entorno "verse" está pensado para escribir poesía. Sus características son las siguientes:

  • En este entorno la primera línea del párrafo no resulta indentada.
  • Los versos se deben separar mediante saltos de línea forzados (comando \\).
  • Las estrofas se separan mediante saltos de párrafo. A veces es conveniente, para que éstas destaquen visualmente más, aumentar el tamaño de \parskip al principio del entorno.
  • Si un verso es demasiado largo para una línea, la segunda línea del verso quedará ligeramente indentada a la derecha.

Listas

Las listas son una serie de párrafos en la que se supone que cada uno de ellos constituye un elemento que recibe un identificador de elemento, llamado en ocasiones etiqueta. Los párrafos se formatean para que esas etiquetas de elemento destaquen lo suficiente, para lo que se aplica la llamada sangría francesa en la que la segunda y ulterior línea de párrafo tiene un margen izquierdo superior a la primera línea.

LaTeX admite tres tipos básicos de listas, atendiendo al tipo de etiqueta que se usa en los elementos de la lista:

  • Para las listas en las que cada elemento se resalta con una viñeta se usa el entorno "itemize". Estas listas equivalen a las que en HTML se denominan "listas desordenadas", aunque ese nombre no me parece especialmente afortunado.
  • Para las listas en las que se usan como etiquetas números o letras consecutivos (enumeraciones) se usa el entorno "enumerate".
  • Para las listas en las que se usa como etiqueta una frase o texto distinta para cada elemento, se usa el entorno "description".

Todas las listas tienen varios aspectos comunes:

  • En ellas aumenta la indentación izquierda. Además se añade espacio vertical extra por encima y por debajo.
  • En todos los párrafos de la lista se aplica la llamada "sangría francesa", a efectos de destacar en cada elemento su etiqueta.
  • Los distintos elementos de la lista se introducen mediante el comando "\item" que admite como parámetro opcional el identificador del elemento. Si este no se introduce, el identificador será elegido por LaTeX atendiendo al tipo de lista que sea, y así si se trata de una lista de viñetas, se generará automáticamente la viñeta (cuyo tipo depende del nivel de anidación de la lista), y si se trata de una enumeración, se elegirá automáticamente el número correspondiente al elemento de que se trate (formateado también según el nivel de anidación de la lista).

Aunque esto último requiere una matización cuando se trate del entorno "description" y es que en él, LaTeX no es capaz de inventar el texto que se usará como etiqueta, por lo que automáticamente no se genera nada. El resultado es que, en la práctica, en estas listas el argumento de \item se convierte en obligatorio: Hay que indicar un texto que funcione como etiqueta o identificador de la lista. No obstante, desde el punto de vista de la sintaxis de LaTeX sigue siendo un argumento opcional y, por lo tanto, se introduce entre corchetes y no entre llaves.

Listas anidadas

Las listas pueden anidarse dentro de otras listas: cada anidamiento producirá un aumento de la indentación izquierda.

Tratándose de listas del tipo itemize o enumerate, el anidamiento produce además otro efecto, y es que varía el modo de selección automática de las etiquetas. Así las viñetas de los itemizes anidados dentro de otros itemizes, varían. Asimismo tratándose de listas numéricas, LaTeX detecta para cada lista el nivel de anidamiento, y enumera los elementos de acuerdo con el nivel. Por defecto en el primer nivel se usa numeración simple seguida de un punto, en el segundo nivel se usa numeración alfabética, en el tercero de nuevo numérica, pero ahora seguida de un paréntesis ...

Cambiar la forma de numeración de los elementos de la lista

LaTeX permite cambiar la representación por defecto de los elementos de la lista. Aunque explicar cómo hacerlo exige demasiado espacio y posiblemente no sea adecuado para este documento que es, a fin de cuentas, una simple introducción. Por ello prefiero proporcionar un método más sencillo para conseguir ese efecto: cargar, en el preámbulo del documento, el paquete "enumerate".

Este paquete redefine el entorno enumerate para que admita un argumento opcional representativo del modo de numerar la lista. El argumento opcional consiste en una cadena de texto en la que debe haber un "1", una "a", una "A", una "i" o una "I". Dependiendo de cual de estos valores se encuentre la numeración será arábiga, alfabética en minúsculas, alfabética en mayúsculas, con números romanos en minúsculas o con números romanos en mayúsculas. Cualquier otro texto incluido en el argumento, se reproducirá en el mismo lugar en el que se encuentre en la cadena insertada como argumento; es decir: si detrás del "1" había un punto, la numeración se hará mediante números arábigos seguidos de un punto.

Así para conseguir una lista en la que los elementos se identifiquen con letras rodeadas de llaves, tendríamos que escribir lo siguiente:

\usepackage{enumerate}
...
\begin{enumerate}[\{a\}]
\item Primer elemento
\item Segundo elemento
\end{enumerate}

Obsérvese como lo hemos hecho: el argumento opcional se indica –como todo argumento opcional en LaTeX– usando corchetes. Luego hemos escrito las llaves, pero como estas son caracteres reservados de LaTeX ha habido que precederlas del carácter de escape para conseguir que se interpreten como verdaderos caracteres. Entre las dos llaves hemos incluido una letra "a" que significa que queremos una numeración alfabética.

Otro ejemplo:

\usepackage{enumerate}
...
\begin{enumerate}[(I)]
\item Primer elemento
\item Segundo elemento
\end{enumerate}

Este ejemplo provocará una numeración con números romanos rodeados de paréntesis.

Tablas

Las tablas son un tipo especial de párrafos que reciben una alineación especial.

Quizás sea este aspecto uno de los más deficientes –en mi opinión– de LaTeX: en LaTeX la construcción de tablas es muy poco intuitiva y tediosa. Además LaTeX estándar es bastante limitado en este punto, y por ello hay varios paquetes que extienden las posibilidades en materia de tablas.

El entorno "tabular"

Veamos LaTeX estándar. En él la construcción de tablas se basa en el entorno "tabular" cuyo formato es el siguiente:

\begin{tabular}[Posición]{FormatoColumnas}
Columna 1 & Columna 2 & Columna 3 ...\\ % Fila 1
Columna 1 & Columna 2 & Columna 3 ...\\ % Fila 2
...
\end{tabular}

Como vemos el entorno admite dos argumentos, uno opcional que indica la posición vertical de la tabla. Por defecto tiene el valor "c", que significa "centrada en la página", admite los valores "t" (en la parte superior –top– de la página) y "b" (en el fondo –bottom– de la página).

El argumento obligatorio recoge el formato de las columnas, se trata de una cadena de texto representativa del formato de las columnas. Para cada columna podemos indicar "l", "c" o "r" según queramos que su contenido se alinee, respectivamente, a la izquierda, quede centrado, o se alinee a la derecha. También podemos indicar, si queremos que la columna tenga un ancho fijo "p{anchura}".

Así el texto "llcp{3cm}" generará una tabla de cuatro columnas, las dos primeras con el texto alineado a la izquierda, la tercera con el texto centrado y la última con el texto justificado y una anchura fija de 3 cm.

En la misma cadena de texto también podemos indicar si queremos o no que haya algún efecto especial para separar las columnas. Por ejemplo "|" inserta una barra vertical, y "@{texto}" inserta el texto que se le indique.

Por ejemplo, la siguiente declaración:

\begin{tabular}{|c@{ \& }c|}
...
\end{tabular}

Genera una tabla de dos columnas, ambas con el texto centrado, delimitadas por el borde exterior con una barra vertical y con el carácter "&" (que se ha precedido de \ por ser un carácter reservado) entre ambas columnas.

Introducir el contenido de la tabla

Cuando empezamos a escribir dentro del entorno tabular, se supone que estamos escribiendo en la primera celda, es decir: la celda correspondiente a la primera columna de la primera fila. Y así será hasta que indiquemos expresamente otra cosa. Para indicar un cambio de columna debemos usar el carácter reservado "&". Este es el único uso admitido de este carácter, por lo que aquí no es preciso ponerle delante el carácter de escape (de hecho si se lo ponemos, no cambiaremos de columna).

Para cambiar de línea hay que producir un salto forzado de línea con el comando \\. Si tras ese comando ejecutamos el comando \hline conseguiremos que se dibuje una línea horizontal que separe las dos filas de la tabla.

Por lo tanto para conseguir una tabla encuadrada en un rectángulo, tendremos que:

  • En el argumento del entorno tabular, usar una cadena que empiece y acabe con "|". Por ejemplo: "|ccc|"
  • Justo al empezar el entorno, y antes de introducir la primera línea, ejecutar el comando \hline.
  • Al final de la última línea de la tabla, volver a ejecutar \hline.

Igualmente, para conseguir una tabla totalmente cuadriculada deberemos:

  • Usar el carácter "|" al principio, al final y entre todos los elementos del argumento del entorno. Por ejemplo: "|c|c|c|"
  • Usar hline al principio de la tabla (antes de la primera línea) y tras cada una de las líneas, incluyendo la última.

En fin: si queremos unir en un momento dado dos columnas, debemos usar el comando \multicolumn cuyo formato es:

\multicolumn{Número}{Posición}{Texto}

Donde "número" es el número de columnas que queremos unir. "Posición" debe ser "l", "r" o "c" según la alineación que queramos para el texto; también podemos usar aquí el carácter "|". Texto es el texto con el que se llenarán las columnas.

Los defectos del diseño

Aparte de lo poco intuitivo que es, y lo sorprendente que resulta que no se haya habilitado ningún procedimiento para unir filas, o para distinguir el encabezado, o aplicar formatos idénticos a todos los elementos de una fila o columna... hay también otros inconvenientes en el diseño de las tablas. En particular:

  • Al formatear una tabla, LaTeX asumirá que el contenido de una celda debe ocupar una sola línea, a no ser que se haya indicado que esa columna tiene una anchura fija. Por lo tanto las probabilidades de que se sobrepasen (con mucho) los márgenes de la página son altas. Para evitarlo hay que indicar a mano la anchura de cada columna... lo que exige ir haciendo pruebas con distintas anchuras.
  • LaTeX asume que toda la tabla debe estar en la misma página, por lo tanto si no cabe en la página actual, se trasladará toda ella a la página siguiente y si no cabe en una sola página... ¡tenemos un problema!.

Paquetes para mejorar el rendimiento en materia de tablas

Afortunadamente la comunidad de usuarios de LaTeX ha contribuido a solucionar este defecto en el diseño de LaTeX y, en materia de tablas, abundan los paquetes. A título de ejemplo mencionaré:

  • Hay varios paquetes para conseguir tablas que se puedan fraccionar en varias páginas: bigtable, bigtabular, supertabular... Yo suelo usar longtable, que es bastante sencillo de usar: simplemente en lugar de usar el entorno "tabular" se usa el entorno "longtable"; el resto es igual.
  • Paquetes para añadir color a las tablas: colortab, colortbl, shadbox.
  • Paquetes para formatear columnas decimales: comma, dcolumn, decimal, numprint...

En particular son interesantes los paquetes "multirow" y "tabularx". El primero permite unir varias filas (de modo similar a como el comando \multicolumn permite unir varias columnas). En cuanto a tabularx genera una tabla en la que el ancho de las columnas se calcula automáticamente según su contenido, pero sin sobrepasar nunca los márgenes del texto (lo que es un gran avance sobre "tabular").

Mención aparte merece el paquete "array" que constituye una ampliación en toda regla del entorno tabular.

Todos estos paquetes están disponibles en la CTAN. Recomiendo echar un ojo a su respectiva documentación.

Lo que nos queda por aprender

Son muchas las cuestiones relacionadas con los temas tratados en esta lección que podrían ampliarse bastante. Algunas ni siquiera se han llegado a mencionar. Así, a título de ejemplo:

  1. En materia de comandos que representan símbolos especiales, letras no inglesas, acentos, símbolos matemáticos... No hemos sido nada exhaustivos. En un documento escrito en DokuWiki como este no podíamos serlo, porque no es posible mostrar toda la riqueza de símbolos que LaTeX puede reproducir, si no es usando LaTeX. Afortunadamente sobre este punto hay bastantes ficheros con ejemplos en Internet, muy fáciles de localizar.
  2. Tampoco hemos mencionado las extensiones que introduce el paquete "amsmath", bastante útil -según creo- para escribir matemáticas avanzadas.
  3. En materia de fuentes no hemos mencionado ni el comando \newfont (que permite crear una fuente nueva), ni \magstep (que aplica un factor de magnificación a las fuentes), ni el uso de fuentes adicionales mediante paquetes... En realidad el tratamiento interno de LaTeX de las fuentes, y el tipo de fuentes que puede usar, y las relaciones entre LaTeX y metafont... Todo ello requiere un documento bastante extenso.
  4. Supongo además que podría haber detallado algo más el uso de texto en color. Me he limitado a remitirme a la documentación de los paquetes más estándar para producirlo.
  5. A propósito de la división silábica de palabras, siempre me remito a babel para que elija el patrón adecuado. No se ha dicho nada sobre los ficheros de patrones para la división silábica, donde buscarlos, como instalarlos...
  6. A propósito de los párrafos, no hemos dicho nada sobre cómo se calculan sus márgenes derecho e izquierdo, y de qué manera podemos alterar eso: comandos \leftskip, \rightskip, \parfillskip, \hangindent, \hangafter, \parshape...
  7. A propósito de las listas, tampoco hemos entrado en las variables que controlan sus distintas dimensiones, ni en el procedimiento para personalizarlas, ni el uso del entorno list.
  8. A propósito de las tablas queda casi todo por decir.
  9. Se ha omitido la explicación de bastantes entornos. En particular se ha omitido la de "verbatim" y sus entornos similares.

Para profundizar sobre estas cuestiones, podemos consultar las fuentes de conocimiento mencionadas al final de la lección segunda. Pero tengamos claro que aunque esos conocimientos nos ayudarán a extraer más provecho de LaTeX, aunque no son imprescindibles para generar con él buenos textos.

Todas las Secciones