Hasta ahora hemos visto lo más básico de LaTeX. En este tema vamos a analizar algunos aspectos que, en cierto modo, configuran lo que podríamos denominar LaTeX intermedio. El LaTeX avanzado no llegaremos a verlo en este curso.
Entre los elementos más importantes que pueden incluirse en un documento merece la pena mencionar los gráficos, las referencias bibliográficas y los índices analíticos.
LaTeX fue diseñado mucho antes de la eclosión de la multimedia. En los años 70, cuando empezó a desarrollarse TeX los formatos gráficos existentes apenas comprimían los datos, y el resultado eran ficheros muy grandes y difíciles de manejar. Mucho más teniendo en cuenta la reducida capacidad en memoria y en espacio de almacenamiento de los ordenadores de la época en relación con las capacidades actuales.
Por ello el tratamiento de gráficos en LaTeX se basa principalmente en paquetes de ampliación. Los dos principales son "graphics" y "graphicx". Pero como el segundo es una evolución del primero, me referiré exclusivamente a él.
Para insertar una imagen en nuestro documento, debemos, en primer lugar convertirla a un formato que LaTeX pueda manejar. Debe, además, tenerse en cuenta que este es uno de los pocos aspectos en los que hay diferencias entre compilar con latex o hacerlo con pdflatex.
En la próxima tabla se indican los formatos gráficos que cada uno de los dos compiladores admiten:
Compilador | Formatos gráficos aceptados |
---|---|
latex | Ficheros postscript (.ps), postscript encapsulados (.eps) |
pdflatex | Ficheros PDF, JPG, PNG |
Otros formatos gráficos, pueden funcionar o no, al compilar con latex, dependiendo de la instalación que tengamos, de los drivers existentes para ficheros DVI. En una introducción como la presente no merece la pena insistir en esos aspectos.
Si queremos asegurarnos de que siempre se compile correctamente, lo ideal es, de cada imagen, almacenar dos versiones, una, por ejemplo, en EPS y otra en PNG, así compilemos de una forma u otra, con seguridad que funcionará. Para convertir una imagen entre distintos formatos gráficos hay cientos de utilidades. En Linux/Unix el paquete imagemagik incorpora el comando "convert" que convierte con facilidad entre todos los formatos
Teniendo claro lo anterior, y tras haber escrito en nuestro preámbulo la orden \usepackage{graphicx}, en el punto en el que queramos insertar el documento, basta con escribir el siguiente comando:
\includegraphics{NombreArchivo}
Lo normal es que eso sea suficiente. En algunas ocasiones muy excepcionales, y sólo en el caso de que nuestra instalación de LaTeX sea relativamente antigua, necesitaremos usar el comando de la siguiente forma:
\includegraphics[controlador]{NombreArchivo}
Donde controlador puede ser: "pdftex" (si vamos a compilar con pdflatex) o "dvips" (si vamos a compilar con latex).
Por lo demás, en cuanto al nombre del fichero gráfico, se recomienda no incluir la extensión. Ello ayuda a que podamos tener dos versiones del mismo gráfico, con el mismo nombre y diferente extensión, que nos permitan compilar con latex o con pdflatex.
Por ejemplo, si nuestro fichero gráfico se llama "Grafico1" y lo tenemos en dos formatos: "Grafico1.eps" y "Grafico1.png", la orden \includegraphics}{Grafico1} funcionará tanto si compilamos con latex (en cuyo caso se usará el fichero "Grafico1.eps") como si compilamos con pdflatex (usándose entonces "Grafico1.png").
La orden \includegraphics admite varias opciones que nos permiten un cierto nivel de manipulación del gráfico en el momento de su inserción en el documento. En particular, son de interés las opciones que permiten escalar y rotar la imagen:
Todas estas opciones se indican, por otra parte, escribiendo el nombre de la opción, el signo igual y el valor. Si queremos incluir varias opciones debemos separarlas mediante comas.
Por ejemplo la siguiente orden:
\includegraphics[scale=.5,angle=45]{MiGrafico}
Insertará en el documento el fichero denominado "MiGrafico", al 50% de su tamaño original, y rotado en 45 grados.
El paquete graphicx, además de la orden \includegraphics, define otros comandos cuya principal peculiaridad está en que con ellos podemos aplicar efectos gráficos a objetos que no sean gráficos. Por ejemplo: al texto. En concreto podemos escalar, rotar o reflejar texto mediante los siguientes comandos:
Este comando en primer lugar coloca el texto que recibe como argumento en una caja, y luego rota dicha caja. Su formato es:
\rotatebox{ángulo}{texto}
Donde ángulo se refiere al número de grados que tendrá la rotación. Si el valor de ángulo es positivo la rotación será en el sentido contrario a las agujas del reloj; si el valor es negativo la rotación será en el sentido de las agujas del reloj.
Este comando aplica al texto que recibe como argumento el factor de escalado horizontal y vertical que se le indique. Su formato es alguno de los dos siguientes:
\scalebox{factor}{texto} \scalebox{escala-h}[escala-v]{texto}
En su primera modalidad, el primer argumento constituye el factor de escalado y el segundo el texto a escalar. En su segunda modalidad, el primer argumento se interpreta como factor para la escala horizontal, el segundo como factor para la escala vertical, y el tercero consiste en el texto a escalar.
Este comando produce lo que se llama un "reflejo especular", es decir: muestra el objeto al que se aplica tal y como se vería reflejado en un espejo. Su formato es:
\reflectbox{objeto}
Donde objeto puede ser un texto, o cualquier otro. Para aplicarlo a un gráfico habría que combinarlo con \includegraphics. Tal y como se muestra más adelante.
En realidad \reflectbox consigue lo mismo que se obtendría con \scalebox[-1][1].
Este comando al igual que \scalebox permite escalar un objeto, pero en lugar de indicar el factor de escala, funciona indicando las dimensiones que debe tener el objeto una vez escalado. Su formato es:
\resizebox{long-h}{long-v}{objeto}
Donde long-h y long-v representan, respectivamente, la longitud horizontal y la vertical del objeto, el cual puede ser un fragmento de texto o cualquier otro objeto admisible en LaTeX.
Podemos introducir sólo una de las dos longitudes (da igual cual) y en el lugar de la otra escribir !, en cuyo caso LaTeX interpretará que el escalado debe mantener las proporciones originales.
Para aplicar cualquiera de estos comandos a un gráfico, hay que combinarlos con \includegraphics. Así, por ejemplo, para incluir un gráfico llamado "migrafico" de tal manera que tenga como anchura 4 centímetros, pero sin recortar el gráfico, sino escalándolo, deberíamos escribir:
\resizebox{4cm}{!}{\includegraphics{migrafico}}
Pero como escalar y rotar un gráfico es posible hacerlo al cargarlo, mediante las opciones de \includegraphics, el uso principal de estos comandos es el de escalar, rotar o reflejar objetos que no sean gráficos. En particular fragmentos de texto.
El uso de bibliografía es una de las características de los documentos científicos. En ellos casi siempre trabajamos sobre cuestiones en las que antes ha habido otros trabajos, o asumimos como punto de partida el resultado de otros trabajos, o discutimos la opinión dominante. Y en todos estos casos la honestidad intelectual exige citar al autor de la idea sobre la que trabajamos, al tiempo que el rigor exige indicar exactamente en qué lugar ese autor dijo eso.
En esto se diferencian bastante los documentos científicos de los ensayos o de las informaciones periodísticas, en las que podemos limitarnos a afirmar que alguien dijo algo. En un documento científico serio hay que darle siempre al lector la oportunidad de comprobar si eso es cierto, para que, entre otras cosas, pueda asegurarse de que no hemos malinterpretado el texto, o no hemos sacado la afirmación de contexto. Lo que, una vez más, exige facilitar la localización de la publicación en donde el autor dijo lo que nosotros le estamos atribuyendo.
Eso significa que un documento científico suele manejar bibliografía.
En la práctica el manejo de la bibliografía se hace en dos pasos:
Desde el punto de vista de la composición del documento conviene observar que en ambos estilos de citas, en realidad lo que hacemos es asignar a cada referencia bibliográfica una etiqueta identificativa (el número, o el nombre del autor seguido del año), de tal manera que en las concretas citas sólo se incluya la etiqueta identificativa. Es habitual también que para diferenciar en el texto las citas de otros elementos, se utilicen corchetes para incluirlas, y así, por ejemplo, el texto "[Ataz 1985]", "[Ataz-85]" ó "[17]" serían interpretados por cualquier lector de textos científicos con cierta experiencia como citas.
Cada disciplina científica tiene sus propias preferencias respecto a si usar más el sistema numérico o el alfabético. LaTeX, por defecto asume que se usará el sistema numérico. En él se plantea un problema que no se plantea en el sistema "autor-año" y es que en este último, desde el principio sabemos qué etiqueta identificativa tendrá la obra de cierto autor, pero en el estilo numérico, si queremos que las referencias bibliográficas figuren al final ordenadas alfabéticamente, hasta que hayamos terminado el documento no sabremos con certeza qué número recibirá cada una de ellas.
Por ejemplo: imaginemos que estamos escribiendo un documento y tenemos que citar un trabajo de Ataz, publicado en 1985. En el estilo autor-año, ya sabemos, en ese instante, que esa obra se identificará como [Ataz 1985]. Pero en el estilo numérico, en el momento de citar por primera vez a ese autor, no sabemos con certeza si en la lista final de bibliografía, en la que los autores se ordenarán alfabéticamente, "Ataz" terminará siendo el primer autor (y la obra por lo tanto se identificará como [1]) o si terminará siendo el séptimo o el décimotercero.
Esta es la razón de que LaTeX no asigne las etiquetas identificativas a las citas bibliográficas hasta el momento de la compilación.
Por lo demás, para trabajar con bibliografías en LaTeX hay dos tareas: la primera es generar la lista bibliográfica final; la segunda es realizar las concretas citas en el documento.
Aunque la lista de referencias bibliográficas se suele incluir al final de los documentos, conviene hacerla antes, o, al menos, al mismo tiempo que el resto del documento. Las razones se verán claras en seguida.
LaTeX proporciona dos procedimientos para confeccionar esta lista: hacerlo manualmente en el mismo documento, o hacerlo de modo automatizado con ayuda de una base de datos externa; en este segundo caso es preciso usar el programa auxiliar de LaTeX "bibtex". Me referiré a él más adelante.
De momento asumamos que queremos incluir la lista bibliográfica completa en nuestro documento; lo que exige hacerlo manualmente. Para ello deberemos usar el entorno "thebibliography", cuyo formato es el siguiente:
\begin{thebibliography}{NumMax} \bibitem[Etiqueta]{clave} Referencia bibliográfica 1... \bibitem[Etiqueta]{clave} Referencia bibliográfica 2... ... \bibitem[Etiqueta]{clave} Referencia bibliográfica n \end{thebibliography}
Se observará que el entorno recibe un argumento obligatorio: consiste en el número máximo de referencias bibliográficas que incluirá la lista. LaTeX lo necesita para saber cuánto sangrado debe aplicar al texto de las referencias, de tal manera que el número asignado a cada una de ellas destaque suficientemente.
En realidad el argumento recibido por "thebibliography" se define como una cadena de longitud igual al número de cifras de que constará el número total de referencias bibliográficas lo que suena bastante más lioso; y quiere decir que si, por ejemplo, vamos a usar 78 referencias bibliográficas, dado que 78 tiene dos cifras, el argumento debe ser una cadena de dos caracteres de texto. Da igual que sea el texto "78", el texto ""99" o el texto "XX", lo importante es su longitud, no lo que diga. Yo creo que es más fácil describir este argumento como lo he hecho en el párrafo anterior.
Dentro del entorno cada concreta referencia bibliográfica se introduce por un comando \bibitem que recibe como argumento obligatorio una "clave" consistente en una cadena de texto identificativa de la referencia en cuestión. Esa cadena de texto debe ser única para cada referencia bibliográfica, y no tiene por qué coincidir con la etiqueta que luego LaTeX asocie a cada referencia: la clave será usada sólo internamente por nosotros en la confección del documento; en el fichero final será absolutamente invisible.
Los elementos \bibitem también pueden recibir como argumento opcional una "etiqueta" que será el texto que el documento final utilice para identificar esta concreta referencia bibliográfica. Cuando usamos bibliografías de estilo numérico usar este argumento opcional no tiene sentido. En estilos autor-año puede tenerlo, pero esos estilos sólo se pueden usar en LaTeX si la bibliografía se construye mediante bibtex o si se ha cargado algún paquete dirigido a alterar el funcionamiento por defecto de LaTeX en materia de bibliografías. Por ello, en la práctica, el argumento opcional casi nunca se usa.
A continuación va el texto de la referencia bibliográfico. El formatear todas las referencias bibliográficas de modo consistente es tarea del autor. Normalmente se pone el nombre del autor en negrita y mayúsculas, el título del trabajo en cursiva (si es un libro) o entrecomillado, si es un artículo de revista, en cuyo caso lo que se pone en cursiva es el nombre de la revista, y el resto de los datos (fecha, editorial, ciudad de edición, número de edición.) en caracteres normales.
Una vez que tenemos nuestra lista bibliográfica completa (o al mismo tiempo que la vamos confeccionando) podemos ir incluyendo a lo largo de nuestro documento las concretas citas. Para ello LaTeX proporciona el comando \cite cuyo formato es el siguiente:
\cite[DatosAdicionales]{clave}
donde "clave" debe coincidir con la clave asignada en \bibitem (dentro de "thebibliography") a la obra que queremos citar.
El resultado será que tras la primera compilación, LaTeX asignará etiquetas con números consecutivos a las obras incluidas en "thebibliography", y, en una segunda compilación, en los lugares en los que encuentre un comando \cite en su lugar escribirá, entre corchetes, la etiqueta correspondiente a la referencia bibliográfica citada. Si hemos añadido algún texto en el argumento opcional de \cite, este se escribirá tras el número de la referencia bibliográfica, dentro de los corchetes. Por este procedimiento podemos, por ejemplo, indicar la página.
Por ejemplo, imaginemos que queremos citar el libro de Donald. E. Knuth en donde expone "todo lo que hay que saber sobre TeX" (según sus propias palabras). Deberíamos escribir:
...La "x" final de TeX es en realidad la letra griega $\chi{}$ según afirma Knuth \cite[pág. 1]{knuth}... ... \beguin{thebibliography}{99} ... \bibitem{knuth} \textbf{Knuth, Donald E.}: \textit{The \TeX book}. Addison-Wesley 1986. ... \end{thebibliography}
Si en la primera compilación, a la obra citada en thebibliography se le asigna, por ejemplo, el número 17, en la segunda compilación el lugar donde se encuentra el comando \cite quedaría sustituido por el siguiente texto:
‹‹La "x" final de TeX es en realidad la letra griega ? según afirma Knuth [17, pág. 1].››
"bibtex" es un programa auxiliar de LaTeX que, al igual que este, funciona en modo de consola. Está pensado para facilitar el uso de bibliografías. Trabajando con "bibtex" todo lo dicho sobre el comando \cite funciona exactamente igual. La diferencia está en que no hay que escribir expresamente la lista de referencias bibliográficas en el documento, sino que los datos necesarios para construir dicha lista se almacenan en una base de datos, de tal modo que bibtex es capaz de buscar en dicha base de datos las obras mencionadas en los comandos \cite, ordenarlas según como se le indique y formatearlas adecuadamente para construir la lista completa de referencias bibliográficas.
Las ventajas de usar bibtex son evidentes:
Los pasos para usar bibtex son los siguientes:
Suponiendo, claro, que la base de datos bibliográfica esté en un fichero llamado "MiBase.bib" y queramos usar como estilo de bibliografía el estilo "plain" de bibtex. Bibtex proporciona además los estilos "alpha" (un estilo autor-año), "abbr" y "unsrt". Pero con bibtex también se incluye una herramienta que nos permite diseñar nuestros propios estilos bibliográficos.
Tras lo anterior, deberemos compilar el documento, después debemos ejecutar bibtex y, finalmente, volver a compilar. Muy eventualmente puede ser precisa una tercera compilación.
Si, por ejemplo, nuestro fichero fuente se denominara "mifichero.tex" la secuencia de comandos desde el shell (o ventana de MS-Dos) sería la siguiente
$ > latex mifichero $ > bibtex mifichero $ > latex mifichero
Sobre bibtex se puede decir muchísimo más. Pero aquí me remito a un documento que yo mismo escribí hace algún tiempo: La guía casi completa de bibtex.
Además del índice sistemático, que muestra la estructura del documento, y de los índices de figuras y de tablas, en los documentos científicos es habitual encontrar índices conceptuales en los que se indica al lector en qué páginas se tratan ciertas nociones o conceptos. A veces se les denomina índices terminológicos, otras veces índice de materias o, cuando se refieren sólo a ciertos conceptos por el nombre de los mismos, por ejemplo un índice de autores recogería alfabéticamente los nombres de los autores citados en el texto, y las páginas en las que cada uno de ellos es citado; en un trabajo sobre leyes un índice de sentencias recogería las sentencias citadas en el documento, y los lugares en los que cada sentencia ha sido citada.
En principio LaTeX permite generar uno sólo de estos índices. Aunque hay varios paquetes en la CTAN que amplían esta posibilidad y permiten generar más de un índice.
El entorno "theindex" proporciona un formato adecuado para este tipo de índices, pero requiere que su confección sea hecha a mano por el autor. Su formato es el siguiente:
\begin{theindex} \item Entrada, NúmeroPágina \subitem Subentrada, NúmeroPágina \subsubitem Subsubentrada, NúmeroPágina \end{theindex}
Este entorno formatea a doble columna su contenido, y proporciona a los elementos \item, \subitem, y \subsubitem, el sangrado adecuado para que visualmente se destaque la jerarquía entre las distintas entradas. Pero la denominación de las entradas y los números de página, hay que introducirla a mano. Para lo cual aunque LaTeX tiene comandos que nos pueden ayudar. esos comandos no son objeto de explicación en este curso.
Para automatizar la generación del índice hay que seguir los siguientes pasos:
1° Indicar, mediante el comando \index los puntos del documento que deben incluirse en el índice. El formato de este comando es el siguiente:
\index{TextoIndice}
Donde TextoIndice representa el texto que deberá incluirse en el índice. Dentro de TextoIndice el carácter "!" se interpreta de modo especial. Así el texto incluido puede leerse como
\index{Entrada del índice} \index{Entrada!Subentrada} \index{Entrada!Subentrada!Subsubentrada}
Por ejemplo:
\index{Lenguajes informáticos!de marcado!LaTeX}
Generaría en el índice las siguientes entradas:
Lenguajes informáticos de marcado LaTeX
2° En el preámbulo del documento debemos cargar el paquete "makeidx" e incluir el comando \makeindex. Sin este comando LaTeX ignora absolutamente los comandos \index. Por el contrario cuando este comando está presente, durante la compilación se genera un nuevo fichero auxiliar de extensión ".idx" en el que cada comando \index escribe información.
3° En el punto del documento en el que deseamos que se imprima el índice debemos incluir el comando \printindex.
4° Finalmente hay que proceder a la compilación, la cual se hará en dos fases. Primero se realiza una compilación preliminar que genera el fichero ".idx", en segundo lugar se ejecuta el programa auxiliar de LaTeX "makeindex", por último se vuelve a compilar todo con LaTeX.
Así, si, por ejemplo, nuestro fichero fuente se denominara "mifichero.tex" la secuencia de comandos desde el shell (o ventana de MS-Dos) sería la siguiente
$ > latex mifichero $ > makeindex mifichero $ > latex mifichero
Lo que en esta lección nos hemos ido dejando en el tintero, permitiría escribir libros enteros. A título de ejemplo podemos indicar:
Aunque si hemos llegado hasta aquí en el curso de LaTeX, estoy seguro de que no debemos tener ningún problema para cuando necesitemos esa información que nos falta, ser capaces de localizarla y de comprenderla. Ya sabemos (se expusieron en la lección 2ª) las fuentes en las que buscar.