LaTeX 7 – imágenes

Ya han pasado algunos capítulos de esta serie y ya se puede escribir un documento básico, con un preámbulo y ciertos elementos como texto en negrita o cursiva, citas, notas al pie, etc. Introduciremos ahora unos nuevos elementos que serán, no solo útiles en sí mismos, sino una excusa para aprender algo más acerca de los entornos. Me refiero a las imágenes y a las tablas.

Las imágenes

Las imágenes (igual que las tablas, por cierto), pueden ser incluidas tal cual, a pelo, o dentro de un entorno que proporcionará algunas funcionalidades extra.

Insertar una imagen

Para insertar una imagen son necesarias dos cosas: la imagen en sí (obviamente) y cargar un paquete en el preámbulo que permita tal cosa.

Lo primero, la imagen, ha de estar en el mismo directorio en el que está el archivo .tex a la hora de compilar o, si no, en un directorio conocido que hay que especificar cuando se inserte la imagen.

Lo segundo, en el preámbulo se carga el paquete graphicx:

\usepackage{graphicx}

Y en el lugar en el que se quiere insertar la imagen se especifica el siguiente código:

\includegraphics{imagen.png}

Y ya está, con esto quedará la imagen insertada en el texto y \LaTeX se encargará de ajustarla lo mejor posible. Aún así, faltan cosas.

Una de esas cosas que faltan es la posibilidad de ajustar el tamaña relativo de la imagen respecto al texto. Para eso se añaden parámetros opcionales (entre corchetes) al código anterior especificando la anchura de la imagen (width) respecto a la anchura del área de texto (textwidth). Queda como sigue:

\includegraphics[width=0.75\textwidth]{./fotos/imagen.png}

En este ejemplo la imagen llamada imagen.png, guardada en la carpeta fotos dentro del mismo directorio del archivo .tex, se redimensionará a un 75% del ancho del texto.

Otra cosa que se puede añadir, y algo además muy útil, es poder indicar si la imagen ha de preferirse en la parte superior o inferior de la página, si se desea forzar que aparezca en la posición en la que está el código respecto al resto del texto, etc. Para mí, sobre todo, está también la posibilidad de incluir una leyenda bajo la imagen con una numeración (algo como Figura 3: Nudos marineros.) y una etiqueta para poder referirnos a ella en las referencias cruzadas. Para ello hay que insertar la imagen dentro de un entorno que sirva de «contenedor».

El entorno «figure»

Exactamente igual al entorno quote usado para las citas literales (ver la tercera entrada de esta serie) y a cualquier otro entorno que se pueda usar en \LaTeX, este se engloba entre órdenes de apertura y cierre:

\begin{figure}
  Aquí todo lo referente a la imagen
\end{figure}

Y es dentro de estas dos órdenes donde todo lo necesario para la definición de la imagen irá insertado. Para empezar, la misma imagen, con su enlace, tamaño en relación al texto, etc. Pero también, como dije antes, alguna cosa más.

Justo después de la marca de apertura del entorno, una marca opcional (y por lo tanto entre corchetes) indica la posición de la imagen en relación a la página. Esta posición se indica con los códigos:

  • h : la imagen se posiciona aquí (here) en relación al texto circundante, es decir, después del párrafo precedente y antes del párrafo siguiente. En realidad, es demasiado restrictivo y \LaTeX lo cambiará automáticamente por ht.
  • t : la imagen va en la parte superior de esa página (top) o la siguiente, independientemente del lugar en el que se escriba el código en relación al texto circundante.
  • b : la imagen se sitúa en la parte inferior de esa página (bottom) o la siguiente.
  • p : se crea una página a propósito para la figura.

Estos códigos pueden escribirse juntos por orden de preferencia para indicar las opciones posibles. Recuerda que el objetivo es conseguir el mejor resultado, por lo que \LaTeX puede escoger modificar estas preferencias con este objetivo, incluso mostrando la imagen en la página siguiente (los entornos son «entornos flotantes», se mueven). Para forzar la posición escogida a pesar de que el programa entienda que no es óptimo se usa !. Esto lo que hace es ignorar las restrictiones autoimpuestas de un máximo de 2 objetos en el comienzo de la página, un máximo de 1 objeto al final de la página y un máximo general, obviamente, de 3 objetos. La opción por defecto, sin especificar nada, es tbp. Mi elección, en muchos casos, es \begin{figure}[htb].

Ojo: hay que entender que estos entornos flotantes pueden moverse según el tamaño de los párrafos adyacentes, el tamaño de la imagen, etc., por lo que siempre es buena idea hacer referencia a las imágenes, o figuras, con una referencia cruzada (si tienes dudas sobre cómo funcionan las referencias dentro de un texto, échale un vistazo al cuarto artículo de esta serie, en el apartado Referencias cruzadas), de manera que no importa dónde esté la imagen, siempre habrá un modo sencillo de encontrarla.

Ojo (segunda parte): el arte de colocar las figuras en su sitio es eso, un arte, y no se puede tratar todo de la misma manera, el objetivo es la legibilidad y coherencia en un texto, no el que así ya vale o es que me gusta más. De hecho, el manual de KomaScript, un conjunto de clases del que hablaré en su momento, menciona que

Estos entornos flotantes son a menudo mal entendidos por los principiantes, que suelen buscar una posición fija para las figuras en el texto. Sin embargo, como estos entornos están referenciados en el mismo texto, en la mayoría de los casos esto no es necesario. Además, tampoco es razonable, porque estos objetos solo se pueden incluir en una página cuando hay espacio suficiente. Si no es el caso, el objeto debe moverse a la siguiente página dejando probablemente un gran espacio en blanco en la página precedente.

A menudo uno se encuentra los mismos argumentos opcionales para todos los objetos flotantes, lo que tampoco tiene sentido. En esos casos sería mucho mejor variar el parámetro estándar de manera general.

Traducción propia.

Por lo tanto, aunque no lo parezca al principio, en realidad el funcionamiento general de \LaTeX suele ser, como en casi todo, el mejor.

Ya está definido el entorno, su posición preferente y la imagen que contendrá. Pero esta imagen aparecerá en línea con el texto, es decir, alineada a la izquierda (por más que el texto esté justificado). Para centrarla, que es lo debido, incluiremos una orden \centering antes de la orden con la que se inserta la imagen.

Finalmente, después de la imagen, el texto que la acompaña o leyenda. El texto que se escriba irá precedido, si se usan las opciones para español, de la palabra Figura seguida de un número ordinal que permitirá identificar la imagen entre el resto, así como incluirla en el Índice de figuras si lo hay. Para insertar una leyenda se usa la orden \caption{texto bajo la imagen}.

Este texto aparecerá centrado y bajo la imagen. Hay maneras de cambiar esta apariencia, pero ya será complicar mucho las cosas.

Lo único que queda para tener una imagen perfectamente insertada en el texto es una etiqueta que permita que las referencias cruzadas encuentren un punto de destino. Eso, como vimos, se logra usando \label.

El código resultante de tanto añadir cosas es el siguiente:

\begin{figure}[ht]
  \centering
  \includegraphics[width=0.9\textwidth]{./imagenes/rustica.png}
  \caption{Escritura rústica romana.}
  \label{rust}
\end{figure}

Y ya ves el resultado. Si las opciones de idioma del preámbulo son distintas, la imagen será nombrada de forma distinta de acuerdo al idioma seleccionado.

Tras insertar la imagen, las referencias Ver figura \ref{rust} en la página \pageref{rust}. se verán como «Ver figura 2 en la página 17».

Notas al pie en la leyenda

Algo que no es muy obvio a simple vista es la manera de insertar una nota al pie como en el ejemplo de la foto:

El problema con las notas al pie es que no pueden estar dentro del entorno figure, pero el texto que figura al pie sí que debe estar dentro. ¿Cómo hacer entonces?

Hay que insertar una «pareja de marcas» en la que una, la interna al entorno, llame al texto de la nota al pie. En el lugar en el que se desea que aparezca la nota el código \footnotemark llama al primer lugar en el que se encuentre su «pareja», \footnotetext{Texto de la nota}. En un caso así, el código quedaría como sigue:

\begin{figure}[ht]
  \centering
  \includegraphics[width=0.9\textwidth]{./imagenes/mayuscula.png}
  \caption{Escritura mayúscula romana.\footnotemark}
  \label{mays}
\end{figure}
\footnotetext{Imagen extraída de Wikipedia.}

Nótese que \footnotemark está dentro de los corchetes que definen el pie de foto, o sea que funciona exactamente como una cita al pie normal y corriente. No deben mezclarse estas «parejas» de etiquetas, pues el texto seleccionado es el primero que aparezca dentro de una marca footnotetext, de modo que lo más sensato es ponerlo justo después del entorno flotante, no todo junto al final del documento.

Iba a decir que no hay mucho más que decir, pero no es verdad. Solo la parte del manual de KomaScript con las opciones para formatear la leyenda de la imagen ocupa un buen número de páginas, lo que nos da una idea de la potencia disponible. Pero estamos, todos nosotros, empezando en esto, así que paciencia.

Como siempre, esta es una entrada original de Bokunoshumi, en una de las series de artículos que más me gustan. Espero que os sea de alguna utilidad.

Anuncios

HTML 6: imágenes, audio y vídeo

En una nueva entrega de esta serie dedicada a los lenguajes de marcado para «los de letras» nos dedicaremos a una de las grandes (si no la más grande) ventajas de HTML sobre otras maneras de tratar texto, y es la posibilidad no solo de enlazar distintos documentos y recursos en la red, sino de introducir sonido, imágenes o directamente vídeo dentro de un documento. Si pensabas que los libros súper complejos que solo Adobe Digital Editions puede abrir eran necesarios por motivos académicos, olvídate. Es una estafa, solo existen para que no puedas hacer lo que quieras con ellos. Imagina las posibilidades que tienes a tu disposición para elaborar recursos para el aula, apuntes para ti o para tus alumnos, etc. Seguir leyendo

Cómo hacer un archivo PDF a partir de varios JPG (en gnu/linux, claro)

imEs posible que te hayas hecho con una «copia de seguridad» de un cómic completo, o que tengas varias imágenes escaneadas que quieres convertir en un libro en un solo archivo. Para esto, nada mejor que el potente ImageMagick. En este ejemplo vamos a suponer que tienes todas las imágenes que quieres combinar en la carpeta llamada comic que está dentro de tu carpeta personal.

Lo primero es instalar el programa desde los repositorios normalmente, así que en una consola de root:

aptitude install imagemagick

Una vez instalado pasamos a una consola de usuario normal sin privilegios, cambiamos al directorio correspondiente:

cd comic

y lanzamos el programa:

convert *.jpg libro.pdf

El resultado será un archivo pdf de nombre libro que contendrá todas las imágenes de la carpeta. El grupo de archivos puede ser jpg, png u otro, de modo que se podría necesitar el comando convert *.png libro.pdf, por ejemplo.

Se puede apreciar que este es otro uso del mismo programa que usamos en esta entrada, en la que vimos cómo insertar un pdf en libreoffice transformándolo antes en una imagen.