Primeros pasos con LaTeX

El proceso de trabajo con LaTeX

La generación de un documento en LaTeX implica realizar los siguientes pasos:

  1. En primer lugar debemos escribir con un editor de textos lo que se suele llamar el documento o el fichero fuente. En él escribiremos el contenido de nuestro documento, junto con las instrucciones de formateo del mismo.
  2. Tras ello debemos ejecutar LaTeX sobre dicho fichero. Al respecto téngase en cuenta que LaTeX es un programa de consola (véase más adelante). Si todo va bien se generarán varios ficheros adicionales. Uno de ellos tendrá la extensión DVI: se trata de nuestro documento ya formateado. Al proceso de aplicar LaTeX a nuestro documento se le llama compilación, aunque a veces se habla de “texificar” (palabra que no encontraremos en ningún diccionario, supongo). Durante la compilación LaTeX emitirá varios avisos y advertencias, e incluso es posible que, si encuentra algún error, el proceso se detenga esperando una respuesta del usuario. De momento vamos a suponer que no hay errores. Si los hay véase más adelante.
  3. El fichero ”.DVI” se puede ver en pantalla si se tiene instalado en el sistema algún visor de ficheros ”.DVI”. Hay varios para elegir, y muchas distribuciones de LaTeX instalan visores de este tipo. Pero antes de imprimirlo hay que convertirlo al lenguaje postscript (el lenguaje de las impresoras) mediante la utilidad incluida con LaTeX “dvips”, también se incluye con LaTeX la aplicación ps2pdf, que convierte el fichero postscript al formato PDF, y dvipdfm que convierte directamente el fichero DVI al formato PDF.

Hoy día las distribuciones de LaTeX incluyen junto con el compilador LaTeX un segundo compilador llamado “pdflatex” que a partir del fichero fuente genera directamente un fichero PDF. Entre los ficheros PDF generados así y los obtenidos a partir de un fichero DVI hay diferencias internas, y algunos de los comandos de LaTeX funcionan de modo diferente cuando se usa “pdflatex” en lugar de “latex”. No obstante, como estas diferencias son menores y el presente es un texto introductorio a LaTeX y no un manual de referencia, en general ignoraré dichas diferencias.

El siguiente esquema refleja todo el proceso indicado:

Generación de un documento con latex o pdflatex


¿Parece complicado? No nos asustemos. Es sólo que he querido ser exhaustivo y en el esquema he incluido todas las posibilidades. En este otro esquema podemos ver el camino más rápido para obtener un fichero perfectamente formateado:

Generación de un documento con pdflatex

Es decir: con un editor de textos escribimos nuestro fichero fuente, en el que junto con el contenido que queremos dar a nuestro documento incluimos una serie de instrucciones de LaTeX. Al fichero así generado, llamémosle “Ejemplo.tex”, se le aplica el programa pdflatex y, junto con una serie de ficheros auxiliares (Ejemplo.aux, Ejemplo.log…) se generará, si no hay errores en nuestro fichero original, un fichero llamado Ejemplo.pdf, en el que se encontrará nuestro documento perfectamente formateado.

Ese documento lo podremos enviar a la impresora o verlo por pantalla.

El contenido de un fichero fuente de LaTeX

En un fichero fuente de LaTeX se incluye texto (que será el contenido de nuestro documento), instrucciones de LaTeX (normalmente de formateo, pero no necesariamente), y, tal vez, comentarios. Un comentario es un texto incluido en el documento por el autor, con la advertencia a LaTeX de que no se debe incluir en el documento final. Los comentarios son muy útiles, pues, en documentos complejos, permiten al autor incluir las anotaciones necesarias para recordar el por qué incluyó algo en el documento. También es posible, por supuesto, inmediatamente antes de la compilación marcar cierta parte del documento como comentario de tal modo que podamos conseguir una versión compilada que no incluya dicha parte, sin necesidad de borrarla.

Para indicar que algo es un comentario se usa el carácter ”%”. Cuando LaTeX lee ese carácter asume que desde él hasta el final de la línea, es un comentario, y lo ignora.

Los ficheros fuente de LaTeX tienen la siguiente estructura general:

\documentclass[Opciones]{TipoDocumento}
...
... (instrucciones varias que componen el 
...  llamado "preámbulo" del documento)
... 
 
\begin{document}
 
... 
... Aquí va el texto de nuestro documento, 
... junto con instrucciones de LaTeX
...
 
\end{document}

El contenido del fichero se divide pues en dos partes: El preámbulo y el cuerpo.

El preámbulo

El preámbulo va desde el principio hasta la línea \begin{document}. Se usa para indicar las instrucciones que especifican los aspectos globales del documento: tipo de documento de que se trata (a partir del cual se deciden varias cuestiones que afectan al aspecto final del documento en su totalidad), tamaño del papel, tamaño de la letra base, codificación usada en el fichero fuente, utilidades especiales de LaTeX que deseamos activar, abreviaturas que queremos definir para nuestro documento…

\documentclass

La primera línea del preámbulo es siempre la instrucción “\documentclass”. LaTeX espera que esta sea la primera línea de todo fichero fuente, o mejor: la primera línea procesable, es decir: no se tienen en cuenta, a estos efectos, las líneas vacías (las que sólo contengan espacios en blanco o tabuladores) o aquellas en las que el primer carácter imprimible sea una marca de comentario (el carácter ”%”).

Pero detengámonos un instante en la instrucción, ya que es la primera instrucción de LaTeX con la que nos enfrentamos. El formato es el siguiente:

\documentclass[opción1,opción2,opción3 …]{TipoDocumento}

Es importante escribir el nombre de la instrucción tal y como lo he escrito, en minúsculas, porque LaTeX distingue entre mayúsculas y minúsculas, de modo que para LaTeX las instrucciones “\documentclass” y \Documentclass” son distintas, pues la segunda empieza por mayúsculas. La barra que precede al nombre de la instrucción es el indicador de que lo que viene a continuación es un comando o macro de LaTeX, por ello entre la barra y el nombre de la instrucción no debe haber ningún espacio en blanco.

Tras el nombre de la instrucción, entre corchetes se incluyen las distintas opciones con las que queramos ejecutar la instrucción. separadas entre sí por comas. Que una instrucción admita “opciones” significa que su comportamiento puede variar dependiendo del valor de estas opciones: para todas ellas hay siempre un valor por defecto, que es el que se utiliza si no se indica la opción correspondiente. Por ejemplo: LaTeX asume que el documento final tendrá el tamaño estándar de los folios en norteamérica que es el llamado “letter”; en Europa, por el contrario, el tamaño estándar de los folios es el Din A4. Pues bien: si queremos indicarle a LaTeX que el documento a generar será impreso en folios de tamaño Din A4, habrá que indicar, como opción de “\documentclass” el texto “a4paper”.

Los corchetes se usan para indicar que lo que viene a continuación son opciones. Si no incluimos ninguna opción no hay que poner los corchetes. Si incluimos más de una opción, hay que separarlas por comas.

“\documentclass” admite varias opciones. Las más importantes, y más usadas en la práctica, son:

  • El tamaño del papel: puede ser: “letterpaper” (el valor por defecto; 11 x 8.5 pulgadas), “legalpaper” (14 x 8.5 pulgadas), “executivepaper” (10.5 x 7.25 pulgadas), “a4paper” (21 × 29.7 cm.) “a5paper” (21 x 14.8 cm.), “b5paper” (25 x 17.6 cm).
  • El tamaño base de la letra: LaTeX parte de un tamaño base de letra, el del texto normal y a partir de él determina el tamaño de la letra en otras partes del documento, como las notas a pie de página, o los títulos. El tamaño base de la letra puede ser “10pt” (valor por defecto), “11pt” y “12pt”. Para otros tamaños base hay que usar algún paquete que las proporcione. También podemos nosotros, por supuesto, crear un tamaño base distinto, pero eso es LaTeX avanzado, y no queda cubierto en la presente introducción.

A continuación, entre llaves, se indica el tipo de documento que queremos generar. El uso de las llaves significa que este argumento, a diferencia de los anteriores, es obligatorio; es decir: no hay un valor por defecto que LaTeX pueda usar en el caso de que no lo indiquemos. Hay expresamente que decir qué tipo de documento queremos, y si no lo hacemos se generará un error. Asimismo se generará un error si indicamos un tipo de documento que LaTeX no conozca.

A partir del tipo de documento que indiquemos aquí LaTeX calcula varios aspectos globales como el tipo de unidades estructurales necesarias (los libros, por ejemplo, necesitan “capítulos” mientras que los artículos usan “secciones”), el funcionamiento de algunos comandos, etc.

Como tipo de documento podemos elegir entre los siguientes:

  • Libros: Se trata de documentos tipo “book”. Para LaTeX los libros son los documentos más extensos, y en ellos se activan ciertas características como, por ejemplo, la distinción entre las páginas pares y las impares (pues en las pares el margen izquierdo es el margen exterior, mientras que en las impares sucede al revés), el uso de una página completa para el título del documento, etc.
  • Artículos: Se trata de documentos tipo “article”. Para LaTeX estos documentos son los más generales. No son tan extensos como los libros, pero constan de varias páginas, suelen tener índice…
  • Otros: LaTeX admite también documentos tipo “report” (informes) o “proc” (procedimientos) para ciertos tipos de artículos especiales, o “letter” para simples cartas. En la práctica estos otros tipos de documentos, que son variaciones de “article”, se usan bastante menos que los dos principales: “book” y “article”.

Determinados paquetes añaden otros tipos de documentos no estándar. En la práctica “book” y “article” sirve para la mayoría de los supuestos.

Así por ejemplo, la siguiente declaración:

\documentclass[a4paper,12pt]{article}

indica a LaTeX que queremos escribir un artículo que será impreso en folios de tamaño Din A4, con una fuente base de 12 puntos de tamaño.

Paquetes. La españolización de LaTeX

Lo corriente en los ficheros fuente de LaTeX es que tras “\documentclass” se pase a cargar los paquetes de extensión de LaTeX.

Como ya se dijo en la introducción, el propio diseño de LaTeX se hizo pensando en que fuera fácil incorporar una serie de utilidades adicionales al funcionamiento estándar de LaTeX, o alterar dicho funcionamiento estándar, y ello se hace mediante lo que se denomina paquetes: ficheros que incluyen nuevos comandos de LaTeX, o una redefinición de los mismos, y ayudan a ampliar sus utilidades.

Para cargar un paquete hay que indicarlo expresamente, y ello se hace en el preámbulo. Habitualmente la carga de los paquetes se realiza inmediatamente después de la instrucción “\documentclass”.

La instrucción que carga un paquete es:

\usepackage[Opciones]{NombrePaquete}

Observaremos que, una vez más, las opciones, si las hay, se introducen entre corchetes, y el nombre del paquete entre llaves, lo que significa que es un argumento obligatorio de \usepackage. Las opciones de cada paquete hay que estudiarlas en la documentación del mismo.

\usepackage admite que, en una sola instrucción se carguen dos o más paquetes, simplemente separando por comas sus nombres. Yo, sin embargo, nunca le he encontrado ventajas a esta práctica.

En teoría si queremos usar LaTeX puro, no hay que cargar ningún paquete. Pero en la práctica hay paquetes que siempre cargaremos. En particular para españolizar LaTeX hay que cargar obligatoriamente dos paquetes: inputenc y babel, aunque es también conveniente cargar el paquete fontenc:

inputenc: se usa para indicar la codificación del fichero fuente. Tendremos que usarlo necesariamente si queremos usar en nuestro fichero caracteres que no existen en inglés moderno, como las vocales acentuadas, la “ñ”, los signos de apertura de interrogaciones o de exclamaciones… El formato de “inputenc” es:

\usepackage[Codificación]{inputenc}

Donde codificación es una cadena de texto representativa de la codificación usada en nuestro fichero. Puede ser, por ejemplo: “utf8”, “latin1”, “latin9”, “cp1252”, “ansinew”, “cp850”, “applemac”…

Para quien no sepa qué es la codificación de un documento, y cuales son las codificaciones habituales, véase más adelante en este mismo tema.

fontenc: Este paquete le indica a LaTeX con qué fuentes construir el documento final. Una vez más, si usamos caracteres inexistentes en inglés, conviene cargar este paquete con la opción “T1” para indicarle a LaTeX que, en lugar de generar él estos caracteres a partir de las fuentes del alfabeto anglosajón, use un conjunto de fuentes que ya los incluya. Esto tiene que ver con el hecho de que aunque LaTeX es perfectamente capaz de generar, por ejemplo, el carácter “á” a partir del alfabeto inglés (en donde dicho carácter no existe), el algoritmo que LaTeX utiliza para determinar las sílabas de las palabras, que se usa para saber dónde es posible partir una palabra con un guión (al final de una línea) tiende a no usar nunca las sílabas que contengan este tipo de caracteres. Mientras que si cargamos el paquete fontenc con la opción indicada, no habrá ningún problema para determinar correctamente las sílabas de cualquier palabra. Por razones que sería prolijo de explicar, cuando se carga el paquete “fontenc” es buena idea cargar también un paquete que use una fuente distinta de las estándar de LaTeX como, por ejemplo “times”.

babel: es el paquete para la internacionalización de LaTeX, como opción se indica el o los idiomas que se usarán en el documento. Si se indican varios idiomas hay que separarlos por comas, indicando en último lugar el idioma principal del documento. Por ejemplo:

\usepackage[french,greek,spanish]{babel}

indica a LaTeX que queremos escribir un documento en el que el idioma principal será el español (el último que hemos indicado), pero en el que habrá también fragmentos en francés y en griego.

En estos casos —cuando se ha indicado en babel más de un idioma— LaTeX necesita conocer, en cada instante, cuál es el idioma activo. Se asume que, al principio será idioma activo el último indicado al cargar el paquete. Para cambiar de idioma se usa la orden \selectlanguage{idioma}, aunque si lo que queremos es cambiar de idioma sólo para un texto concreto, podemos usar \foreignlanguage{idioma}{texto}.

Indicar correctamente el idioma del documento ayuda a LaTeX a decidir correctamente aspectos muy variados como, por ejemplo:

  • Las reglas correctas para la división silábica de las palabras, que son diferentes según los idiomas.
  • El alfabeto a utilizar. La mayoría de los idiomas de Europa occidental usan el alfabeto latino, pero el ruso, por ejemplo, usa el alfabeto eslavo y también el griego usa su propio alfabeto. Pues bien: simplemente indicando “\usepackage[greek]{babel}” conseguiremos que a partir de un documento escrito con nuestro alfabeto y teclado latino, LaTeX genere un documento con el alfabeto griego.
  • Determinadas convenciones tales como el formato de impresión de las fechas, el nombre de ciertas secciones del documento, etc.
  • También es habitual que babel cargue varias macros especiales, diseñadas para ajustar LaTeX a las convenciones tipográficas de la cultura correspondiente al idioma de que se trate. Por ejemplo, la opción “spanish” en babel, activa la conversión de los caracteres ”< <” y ”> >” en, respectivamente, “«” y “»”, pues en la tradición tipográfica española está el uso de ese tipo de comillas con preferencia a las comillas altas que son preferidas en la tradición tipográfica anglosajona.

Otro posible contenido del preámbulo

Además de la orden \documentclass y la carga de paquetes, en el preámbulo se incluyen todas las especificaciones que afectarán de modo global al documento a generar. Eso habitualmente significa:

  • Creación de nuestras propias macros (si somos usuarios algo avanzados, aunque no es preciso ser todo un TeXperto para escribir macros.
  • Determinación de ciertas longitudes o medidas, cuando los valores por defecto de LaTeX no nos convenzan. Por ejemplo: la instrucción “\parskip=5pt” fija el espaciado entre párrafos en cinco puntos, y si no queremos que la primera línea de los párrafos aparezca ligeramente sangrada, podemos indicar “\parindent=0pt”.
  • Fijación de los encabezados y pies de página,
  • etcétera.

Un preámbulo estándar para nuestros primeros documentos

A lo largo de esta introducción a LaTeX, para los documentos que vayamos generando, usaremos siempre el siguiente preámbulo:

\documentclass[a4paper,11pt]{article}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage[spanish]{babel}
\usepackage{times}

En los apartados anteriores se ha explicado el significado de todas las líneas de este preámbulo.

De otro lado, se observará que como codificación para el documento he elegido “utf8”, esa es la codificación por defecto en mi sistema. Cada cual deberá adaptar esa línea a sus necesidades. Si somos usuarios de Microsoft Windows posiblemente debamos escribir en la segunda línea “\usepackage[latin1]{inputenc}, o tal vez \usepackage[cp1252]{inputenc}… ¡¡¡Lo siento de veras. No lo se porque cuando yo usaba Windows ni conocía LaTeX ni sabía tampoco lo que era la codificación de los ficheros de texto!!!

En, por ejemplo, “el libro de LaTeX” se usa como preámbulo estándar uno que carga el paquete “latin1” y me consta (porque son amigos) que varios de los autores de ese libro trabajan con Windows, de donde deduzco que “latin1” funciona en ese sistema. En la FAQ de CervanTeX, por otra parte, se recomiendo a los usuarios de Windows usar “cp1252” diciendo que la codificación “ansinew” es obsoleta. Ese mismo documento recomienda a usuarios de Mac-OS usar “applemac” -> Pero el problema sólo se planteará si usamos editores de texto que no nos dejen elegir la codificación del documento (como el notepad de Windows), porque pudiéndola elegir, cualquier codificación funciona en cualquier sistema.

El cuerpo del documento

Una vez terminado el preámbulo empieza el cuerpo del documento propiamente dicho.

El cuerpo del documento empieza siempre con la línea \begin{document} y acaba con la línea \end{document}. Todo lo que escribamos entre ambas líneas será el contenido de nuestro documento. Lo que escribamos antes de \begin{document} será considerado parte del preámbulo, y lo que escribamos tras \end{document} será ignorado por LaTeX.

Ejecutar LaTeX sobre el fichero fuente

LaTeX es un programa de consola, eso significa que hay que ejecutarlo desde una shell. Para los usuarios de Microsoft Windows eso significa que para ejecutar LaTeX hay que abrir lo que ese sistema operativo denomina una “ventana de DOS”, ir al directorio donde se encuentra almacenado el fichero que queremos compilar, y escribir:

C:\> latex mifichero   

Asumiendo que el fichero que queremos compilar se denomina “mifichero.tex”.

OJO La parte “C:\>” no la tenemos que escribir nosotros. La he puesto para representar el prompt más corriente en los sistemas MS-DOS. En sistemas de consola se llama prompt al carácter o conjunto de caracteres que se muestran en la línea de comandos para indicar que está a la espera de órdenes. En los textos que hablan de informática es habitual representar así el prompt de MS-DOS, mientras que el de Unix/Linux suele representarse como “$ >”.
NOTA: Muchos editores específicos para LaTeX contienen alguna utilidad o botón en la barra de herramientas que permite compilar desde el mismo editor, sin necesidad de abrir una shell (o ventana de DOS en Windows). Esto es cómodo, pero para los primeros ejemplos prefiero que no se haga, porque este procedimiento oculta al usuario la información que LaTeX emite cuando se ejecuta. Y además está bien por una vez ejecutar LaTeX tal y como se pensó que fuera ejecutado. Cuando nos aficionemos lo haremos casi siempre desde el editor de textos.

LaTeX asume que los ficheros fuente tendrán la extensión ”.tex” y cuando así sea, no hay que indicar la extensión. Si la extensión es otra, hay que escribir el nombre completo del fichero. En cuanto al nombre del fichero propiamente dicho, en principio puede ser cualquier nombre válido en el sistema operativo de que se trate. No obstante, según he leído en ciertos foros de Internet, hay algunas instalaciones de LaTeX en las que se produce un error al intentar compilar un fichero en cuyo nombre haya espacios en blanco o caracteres no existentes en inglés.

Como la mayor parte de los programas de consola, latex admite algunas opciones en la línea de comandos. Para ver cuáles son, escriba la orden:

$ > latex --help  

Una de las opciones más interesantes (en esta etapa de nuestro aprendizaje) es ”-interaction” que permite indicar una cadena de texto representativa de qué debe hacer LaTeX cuando encuentre un error. Por defecto lo que hace es detenerse, indicando al usuario el error y esperando que éste decida la acción a tomar. Si queremos que se intente compilar el fichero sin detenerse en los errores, deberíamos escribir:

$ > latex --interaction=nonstopmode mifichero  

Nuestro primer documento en LaTeX

La escritura del documento

Ya es hora de escribir nuestro primer documento en LaTeX, así que, abramos nuestro editor de texto favorito, creemos un documento nuevo y escribamos en él, exactamente lo siguiente:

% Mi primer documento en LaTeX
\documentclass[a4paper,12pt]{article}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage[spanish]{babel}
\usepackage{times}
 
\begin{document}
 
\title{Primer documento en \LaTeX}
\author{Yo mismo}
\date{\today}
\maketitle
 
iexcl;iexcl;iexcl;Hola Mundo!!!
 
\end{document

Tras escribirlo, lo guardamos con el nombre “prueba.tex” y salimos.

Sobre la escritura del documento, téngase en cuenta las siguientes consideraciones:

  1. En la tercera línea he escrito como codificación “utf8”, es la que yo uso. Cada cual tendrá que escribir la codificación por defecto de su sistema.
  2. El nombre del documento puede ser el que yo he indicado, o cualquier otro. No es imprescindible que la extensión sea “tex”, aunque es lo habitual y es lo que LaTeX espera.
  3. En algunas instalaciones de LaTeX si en el nombre del documento hay espacios en blanco o caracteres no anglosajones tales como vocales acentuadas, o eñes, se genera un error.

Compilar el documento

Tal y como se acaba de explicar, abramos una shell (si estamos en Linux, BSD o, en general sistemas Unix) o una ventana de DOS (si estamos en Windows) o como quiera que se llame el equivalente en sistemas Mac-OS (nunca he trabajado con ellos y sé muy poco de como funcionan aunque conozco su buena fama). Desplacémonos al directorio donde hemos almacenado nuestro fichero “prueba.tex” y tecleemos:

$ > latex prueba  

Se emitirán varios mensajes de texto, informando del proceso de compilación, y si todo va bien (y no hemos cometido ningún error al escribir el documento), finalmente en el directorio indicado encontraremos que se han generado los ficheros prueba.aux, prueba.dvi y prueba.log. El fichero “aux” como su propio nombre indica, es un fichero “auxiliar” que LaTeX usa para ciertas finalidades en las que ahora no entraré. Como para este ejemplo no lo necesitamos, podemos, si queremos, simplemente borrarlo. El fichero “log” es imprescindible cuando se producen fallos para saber cuáles son, pues en él se almacenan todos los mensajes que LaTeX emite al usuario. Si no ha habido fallos, podemos también borrarlo con tranquilidad. El fichero dvi es la versión compilada de nuestro documento, preparado para ser mostrado en pantalla o para ser enviado a una impresora, previa conversión al formato de la impresora.

Para ver el fichero dvi necesitamos tener instalado algún visor de este tipo de ficheros. Véase, en este sentido, lo que al principio de esta página se dijo. Si no tenemos visor de ficheros DVI, o queremos enviar nuestro fichero a la impresora, podemos convertirlo al formato PostScript o al formato PDF, mediante las utilidades “dvips” (para convertir a PostScript) o “dvipdfm” para convertir a pdf. Estos programas, que al igual que el propio LaTeX son programas de consola, seguro que sí son instalados por cualquier distribución. Así

$ > dvips prueba  
$ > dvipdfm prueba  

El primero genera un fichero prueba.ps a partir de nuestro fichero prueba.dvi. Este fichero podemos enviarlo directamente a la impresora, o verlo en pantalla con algún visor de este tipo de ficheros, como ghostview. El segundo genera un fichero PDF a partir de prueba DVI.

Otra opción es generar directamente el fichero PDF. para ello en lugar de compilar con LaTeX debemos compilar con pdflatex. Así la instrucción

$ > pdflatex prueba  

generará, a partir de nuestro fichero prueba.tex, los ficheros prueba.aux, prueba.log y prueba.pdf. Este último puede ser enviado a la impresora o mostrado en pantalla con cualquier utilidad para ver ficheros de este tipo.

También podemos compilar desde el propio editor de textos; pero para ello hay que usar algún editor de textos específicamente diseñado para trabajar con ficheros LaTeX. En Kile, por ejemplo, hay un botón en la barra de herramientas para compilar a DVI, otro para convertir DVI a PS, otro para convertir DVI a PDF, otro para convertir PS a PDF y otro para compilar directamente como PDF.

Análisis de nuestro primer ejemplo

Aunque aún no sabemos prácticamente nada de LaTeX, merece la pena que nos detengamos en analizar nuestro primer documento. Para ello voy a volver a escribirlo, pero ahora numerando las líneas, para que sea más fácil referirme a ellas. Téngase en cuenta que en el documento NO HAY QUE ESCRIBIR el número de línea.

[1]  % Mi primer documento en LaTeX
[2]  \documentclass[a4paper,12pt]{article}
[3]  \usepackage[utf8]{inputenc}
[4]  \usepackage[T1]{fontenc}
[5]  \usepackage[spanish]{babel}
[6]  \usepackage{times}
[7]  
[8]  \begin{document}
[9]  
[10] \title{Primer documento en \LaTeX}
[11] \author{Yo mismo}
[12] \date{\today}
[13] \maketitle
[14]  
[15] ¡¡¡Hola Mundo!!!
[16]  
[17] \end{document

Vemos que el preámbulo va de las líneas 1 a 8. Es el preámbulo estándar al que antes nos referíamos. En la primera línea, sin embargo, se ha escrito un texto precedido del carácter ”%”. Este carácter indica a LaTeX que estamos ante un comentario, por lo que deja de leer la línea y salta a la siguiente. En ella se indica el tipo de documento (línea 2ª) y, en las siguientes líneas se cargan cuatro paquetes, uno para indicar la codificación de nuestro documento (línea 3ª), otro para indicar el tipo de fuentes a utilizar (línea 4ª), otro para indicar que nuestro documento es en español (línea 5ª) y por último, un paquete para indicar que se debe usar la fuente times (línea 6ª).

En la línea octava empieza el cuerpo del documento propiamente dicho. Las líneas 10 a 13 contienen instrucciones de LaTeX. Estas se distinguen del texto normal porque empiezan siempre con el carácter \ seguido del nombre de la instrucción y, si la instrucción requiere algún argumento adicional, el valor del mismo se introducirá entre corchetes, si se trata de un argumento opcional, o entre llaves si se trata de un argumento obligatorio.

  • La instrucción \tittle{} indica a LaTeX el título del documento.
  • La instrucción \author{} indica a LaTeX el nombre del autor del documento.
  • La instrucción \date{} indica a LaTeX la fecha de composición del documento.

Ninguna de esas instrucciones imprime nada en el documento. Se limitan a almacenar valores. Es la instrucción \maketitle, en la línea 13 la que produce la impresión de la información de portada del documento (el título en sentido amplio), formateada al modo estándar en el que LaTeX formatea esta portada en los documentos de tipo “article”. Si nuestro documento fuera “book” el resultado de esta orden sería ligeramente diferente.

Finalmente en la línea 15 está escrito “¡¡¡Hola Mundo!!!”, como no aparece ninguno de los caracteres reservados de LaTeX, ni ninguna palabra empieza por el carácter \, indicador de que algo es una instrucción, LaTeX interpreta que se trata de puro texto, contenido de nuestro documento.

Por último, obsérvese como en las líneas 10 y 12, en el interior de una instrucción de LaTeX hemos anidado otra instrucción de LaTeX. Esta es una de las peculiaridades de LaTeX que lo convierten en una herramienta tan potente: en cualquier lugar en el que se espere uno o varios caracteres de texto, podemos incluir una instrucción cuyo resultado sea precisamente un fragmento de texto.

Las dos instrucciones concretas son:

  • \LaTeX (en la línea 10). Esta instrucción muestra el nombre de LaTeX escrito según su logotipo oficial, con la “a” ligeramente reducida y desplazada hacia arriba, y la “e” ligeramente desplazada hacia abajo. Existe al respecto una convención según la cual, en documentos formateados, el nombre de LaTeX siempre se escribe así, mientras que en documentos de puro texto se escribe poniendo las consonantes en mayúsculas y las vocales en minúsculas, tal y como venimos haciendo aquí desde el principio.
  • \today (en la línea 12) es una instrucción de LaTeX que arroja como resultado la fecha actual (es decir: la fecha del sistema).

Otras cuestiones de interés

Editores de texto para LaTeX

El fichero fuente debe ser un fichero de texto. Podemos escribirlo con cualquier editor de textos, aunque hay algunos editores especializados en la escritura de ficheros LaTeX que cuentan con ciertas utilidades de ayuda para estos ficheros. Así pueden citarse:

  • En sistemas Linux/Unix: Hay varios editores específicamente diseñados para LaTeX. Quizás el más conocido sea Kile (que forma parte del escritorio KDE), aunque también puede citarse a TeXMaker, que tiene también versión -según he leído- para Windows y para Mac-OS. Entre los editores generales merece la pena destacar GNU emacs que cuenta con varios paquetes de ampliación dirigidos a la generación de ficheros LaTeX que le convierten en una de las herramientas más potentes. Respecto de las posibilidades de emacs, recomiendo la lectura de un documento escrito por mí mismo: Creación de ficheros LaTeX con GNU emacs. No obstante, dado que emacs, como editor, es ligeramente complicado, si no queremos aprender su uso, recomiendo el uso de Kile.
  • En Mac-OS: Hay muchos editores que se entienden bien con TeX. Suele citarse (yo no los he probado) TeXShop (al que la FAQ de CervanTeX califica como "muy majo") e iTeXMac que, según la misma FAQ de CervanTeX, incorpora más utilidades, pero es más lento.
  • En Win32: Se oye hablar bastante de winedt y TeXnic Center.

En este punto no me explayo más, porque yo sólo he probado Kile, GNU Emacs y Vim; y el que en general uso es GNU Emacs, que a mucha gente asusta por lo poco intuitivo que es, en general, Emacs.

La codificación del documento

En realidad cualquier fichero de ordenador almacena en su interior exclusivamente dígitos en formato hexadecimal. Lo que ocurre es que en los ficheros de texto cada uno de esos dígitos está asociado a un carácter. Cuando originariamente se empezó a desarrollar la informática en Estados Unidos, se generó un Código Estadounidense Estándar para el Intercambio de la Información (llamado ASCII por sus siglas en inglés), que es la base de todos los ficheros de texto. El problema está en que como ese Código se generó en Estados Unidos, está basado en los caracteres del inglés moderno, que no conoce las vocales acentuadas, ni la letra “ñ”, ni los signos de apertura de interrogación o de exclamación, ni el carácter “Ç”…

Pues bien: pronto se diseñaron tablas de caracteres adicionales que permitieran representar esos caracteres que no existen en inglés, pero sí en otras lenguas (y aquí el problema no lo tiene sólo el español: también hay tildes en francés, catalán, portugués, italiano, alemán, danés… ). El problema está en que no se diseñó una sola tabla de códigos que permitiera representar esos caracteres, sino que hay varias tablas de códigos.

Se llama “codificación de un fichero de texto” a la tabla de códigos a la que dicho fichero de texto está asociado. Cuando trabajamos en LaTeX, si queremos introducir en el fichero caracteres que no existan en inglés moderno, es imprescindible que conozcamos la codificación en que se graba nuestro fichero.

En sistemas Unix/Linux (y creo que también en Mac-OS), la mayor parte de los editores de texto permiten al usuario elegir la codificación del fichero. En Win32, por el contrario, lo normal es que los ficheros se graben directamente en una codificación específicamente diseñada para ese sistema operativo, lo que es acorde con su filosofía general consistente en ocultarle al usuario la complejidad interna, aunque ello le impida elegir

En otras palabras -y esto es una opinión del autor de este texto- los sistemas Windows son realmente más fáciles de usar (casi siempre) porque con ellos se puede hacer menos cosas, y se pueden hacer menos cosas porque el propio sistema limita las opciones del usuario. Un usuario de Windows hará menos cosas porque: 1º, no sabe que se pueden hacer más cosas de las que él hace; 2º el sistema no le ayuda a hacer las cosas que no está previsto que haga. Eso sí, aunque pueda hacer menos cosas… ¡es más fácil!

Para escribir en castellano, las codificaciones que podemos elegir son las siguientes:

  • Latin 1: También llamada ISO-8889-1. Era, hasta hace poco, la codificación estándar para los idiomas de la Europa Occidental. Tiene la ventaja de que prácticamente todas las aplicaciones informáticas la conocen.
  • Latin 9: Casi idéntica a la anterior. La principal diferencia es que en ésta última está soportado el carácter del euro. Aunque en LaTeX eso da igual, porque es el mismo LaTeX el que no conoce dicho símbolo. Véase la lección 4ª.
  • cp1252: Es la codificación estándar en sistemas Windows. Casi idéntica a Latin 1.
  • cp850: Es la codificación estándar para sistemas MS-Dos españolizados.
  • ansinew: Otra codificación diseñada para sistemas Windows, según la FAQ de CervanTeX está obsoleta.
  • applemac: Es, como su nombre indica, una codificación para sistemas Mac-OS. Creo, no obstante, que en las últimas versiones de este sistema operativo, ha habido una importante aproximación a Unix que hace que sea sencillo usar cualquier otra codificación.
  • UTF-8: Es la codificación del futuro, pues tiene la ventaja, frente a otras codificaciones, de que vale para todos los idiomas. Poco a poco los sistemas Unix/Linux se van pasando a ella. Como inconveniente se puede citar el de que todavía existen ciertas herramientas o aplicaciones que no la reconocen.

En el fondo da igual elegir una u otra. Lo importante es que sepamos cuál es la codificación de nuestros ficheros de texto.

En todos los sistemas operativos hay una codificación por defecto: en la que se graban los ficheros de texto si no se indica otra. Esta es, normalmente:

  • En sistemas MS-Dos: cp870
  • En sistemas Win32: cp1252.
  • En sistemas Mac-OS: applemac (supongo, pero no estoy seguro).
  • En sistemas Linux/Unix de tres o más años de antigüedad: Latin 1
  • En sistemas Linux/Unix basados en las versiones más recientes de las diferentes distribuciones: UTF-8.

¿Y si se produjera algún error?

En LaTeX es relativamente frecuente, sobre todo al principio, que el fichero contenga algún error. Por ejemplo, porque no empieza por \documentclass, o se ha indicado como tipo de documento uno no conocido por LaTeX, o porque se ha escrito mal alguna instrucción, o porque queremos usar algún paquete que no está instalado, o porque hemos abierto un entorno o grupo que no está cerrado… Las causas de error son muchas.

Cuando LaTeX encuentra un error durante la compilación, emite a la consola un pequeño mensaje descriptivo del error y queda a la espera de instrucciones sobre qué hacer. Por ejemplo, si en la línea 8 de nuestro primer documento, en lugar de “\begin{document}” hubiéramos escrito “\Begin{document}”, LaTeX generaría la siguiente salida:

! Undefined control sequence.
l.8 \Begin          
			  {document} 
?   

y el cursor quedaría parpadeando a la espera de nuestra respuesta. Observemos que se nos ha informado sobre la causa del error: una secuencia de control no definida, es decir, un comando que LaTeX no conoce; se nos dice también en qué lugar del fichero fuente está el error: “l.8”. es decir: línea 8ª, y cuál es el comando desconocido: “\Begin”. Con esa información se supone que debemos saber que hacer.

Como respuesta podemos indicar cualquiera de las siguientes:

  • <enter>, o <intro>, es decir: pulsar el retorno de carro. Esto indica a LaTeX que, de momento, ignore el error y siga compilando. Podemos responder esto cuando no se trate de un error irrecuperable, o también cuando, aun siendo irrecuperable, queremos que siga la compilación para que se nos informe de los ulteriores errores si los hubiere. LaTeX intentará entonces compilar el documento simplemente ignorando el error. En nuestro ejemplo eso no dará resultado, porque al ignorar la línea “\Begin{document}” resulta que no estará presente la línea —obligatoria en LaTeX— en que empieza el cuerpo del documento. Pero en otros casos, podría servir, cuando el comando mal escrito no afecte a un elemento sustancial del fichero, o se trate de algún otro tipo de error, no tan crítico como para impedir la compilación.
  • s (de scroll). Muy parecido a la opción anterior. Viene a ser algo así como “olvídalo, y haz lo que puedas”. LaTeX ignorará el error e intentará seguir compilando. La diferencia con la opción anterior está en que si a partir de entonces se encuentran nuevos errores, se emitirá el mensaje correspondiente, pero la compilación no volverá a detenerse esperando respuesta del usuario.
  • q (de quietly) similar a la anterior, pero omitiendo los mensajes de advertencia.
  • h (de help), con ello le pedimos al propio LaTeX que describa el error con más detalle y, si es posible, nos haga alguna sugerencia. A veces es útil, pero no siempre.
  • x (de exit) le pedimos a LaTeX que interrumpa definitivamente la compilación. Esta es la respuesta que hay que dar cuando el error sea de tal naturaleza que la compilación no sea posible, como ocurre en nuestro ejemplo.
  • i (de insert) seguido de la orden correcta; en nuestro ejemplo deberíamos escribir: “i \begin{document}”. Con ello le estamos diciendo a LaTeX que ignore el comando desconocido y en su lugar utilice el que escribimos a continuación. Esto ayuda a terminar la compilación, pero no modifica el fichero fuente; por lo que la próxima vez que intentemos compilarlo volverá a repetirse el error.
  • 1-99 Si introducimos un número entre 1 y 99, se ignorará del documento fuente exactamente ese número de caracteres.
  • e (de edit) en teoría esto detiene la compilación, pone en marcha el editor de textos, y salta a la línea donde se encontraba el error… La verdad es que yo nunca he conseguido que esto funcione: debe configurarse LaTeX de cierta manera y, supongo, sólo funcionará con ciertos editores de texto.

En documentos largos, este procedimiento de compilación es francamente tedioso. Es preferible:

  • Compilar con la opción “interaction=nonstopmode” y, cuando haya terminado la compilación, revisar el fichero ”.log” generado, en el que se habrán almacenado todas las advertencias de error que LaTeX habría generado en el caso de haber compilado de forma normal. Esto nos dará una idea bastante aproximada de todos nuestros errores, y nos permitirá corregir globalmente el documento.
  • Compilar desde el propio editor de textos. Ya he dicho que hoy día muchos editores de textos permiten compilar, y lo hacen todos con la opción “nonstopmode” activada. Luego, si se producen errores, el propio editor de textos lee el fichero ”.log”, localiza los errores y nos permite ir a ellos e irlos corrigiendo. Así lo hacen, al menos, tanto kile como GNU Emacs, los dos editores de texto para LaTeX que yo he probado.

Ejercicios

Para comprobar el efecto de los diferentes paquetes:

  • Modifíquese y compílese nuestro documento de prueba eliminando la línea 3ª. Véase el resultado ¿Ha desaparecido o cambiado algún carácter?
  • Tras reescribir la línea 3ª, suprímase la línea quinta y compílese. Obsérvese como en el documento final la fecha aparece indicada en inglés. El que la fecha se indique en español es consecuencia del paquete “babel”.
  • Tras reescribir la línea quinta, suprímase la línea 6ª y compílese de nuevo. Obsérvese que ahora el documento es igual a su primera versión, pero con una fuente distinta.

Lo que nos queda por aprender

¡¡¡Puff!!!

De las cuestiones tratadas en esta lección podrían profundizarse bastante los siguientes aspectos:

  1. Las opciones de \documentclass. Además de las mencionadas en el texto hay otras como “landscape”, “onecolumn”, “twocolumn”, “oneside”, “twoside”, “openright”, “openany”, “notitlepage”, “titlepage”, “leqno”, “fleqno”, “openbib”, “draft”, “final”.
  2. Las clases de documentos admitidas por \documentclass. Las estándar y otras proporcionadas por ciertos paquetes.
  3. Cómo añadir paquetes de la CTAN en nuestro sistema.
  4. Las razones por las que es conveniente usar el paquete “fontenc” y qué ocurre cuando no se usa.
  5. Casi todo sobre babel. Es un paquete fundamental del que apenas se ha dicho casi nada. En particular la opción “spanish” para babel tiene una muy amplia y concienzuda documentación, y sus utilidades son muchas más de las aquí mencionadas.
  6. LaTeX como programa (no como lenguaje). Casi no se ha dicho nada de sus opciones en línea de comando, y no se ha dicho nada en absoluto sobre su estructura de directorios, dónde busca los ficheros correspondientes,…
  7. En fin: hemos asumido que los PDF generados con pdflatex son similares a los generados a partir de un fichero DVI. Hay sin embargo bastantes diferencias.
  8. Tampoco hemos dicho nada sobre la posibilidad de insertar un fichero en otro mediante \input o \include, que facilita la compilación por trozos y la gestión de documentos largos en los que cada parte tiene diferentes autores.

¿Y dónde aprender todo eso? Mi consejo es que primero terminemos de leer todas las lecciones de este curso, y luego, leamos los documentos indicados en la introducción. Tras ello, otras fuentes de información son:

  1. La propia documentación que acompaña a la instalación de LaTeX, casi siempre en inglés.
  2. La documentación de los correspondientes paquetes. Si no se ha instalado en nuestro sistema, la encontraremos, casi seguro, en la CTAN.
  3. En sistemas Unix/Linux se instala un fichero “info” sobre “web2c” que es la implementación de TeX que realmente instalan TeXLive y TeTeX (distribuciones de LaTeX). Este fichero info contiene mucha documentación útil.
  4. En Internet, buscando bien, se puede encontrar bastante documentación. En particular en los foros en inglés, así como en el archivo histórico de la lista de usuarios españoles de TeX (almacenada en Rediris).
  5. En fin: A veces hay que recurrir a los libros. En inglés hay bastantes buenos libros sobre LaTeX; es posible que los encontremos en la biblioteca de algún departamento de matemáticas. En español también hay buenos libros. El más completo en detalles que conozco es “LaTeX: Una imprenta en sus manos”, de Cascales, Lucas, Mira, Pallarés y Sánchez-Pedreño, profesores todos de la Universidad de Murcia. Tal vez se haya quedado algo obsoleto en su información de paquetes, pero sigue siendo el mejor. Yo aprendí a manejar LaTeX con él. De los mismos autores hay un libro más reciente, llamado “El libro de LaTeX” (título que recuerda al del libro en donde el autor de TeX explicó todo lo que hay que saber sobre TeX: The TeX Book); este segundo libro es también más “didáctico” que el anterior.

Aunque no nos desanimemos. Se pueden escribir muy buenos documentos en LaTeX sin saber nada de lo anterior.

Todas las Secciones