Florituras con imágenes en LaTeX

Me preguntaba qué título darle a este artículo de hoy. ¿Tal vez imágenes avanzadas en LaTeX? Vamos con algo más campechano. Y vamos ya, directamente, porque hoy tenemos mucha faena.

Dani me pasó un ejemplo de sus apuntes y, una de las cosas que me llamó rápidamente la atención, era que tenía muchas imágenes. Eso está muy bien, porque así resultan ilustrativos y educativos para sus alumnos. Ahora, rara vez había puesto yo una imagen en LaTeX y lo tenía por algo complejo.

Ayer vimos ya un ejemplo de cómo poner una imagen sencillamente en LaTeX. Una imagen centrada, sola, entre dos párrafos. Ahí, tomando el sol. Eso está muy bien y resulta suficiente en la mayoría de los casos, pero… ¿y si queremos poner dos imágenes una al lado de la otra? ¿Y si queremos que el texto fluya alrededor de la imagen? Eso: florituras.

Vamos con algunos ejemplos que pueden resultarle útil a Dani para poner imágenes en sus apuntes.

Imágenes una junto a la otra

Vamos a empezar poniendo dos imágenes juntas. Las podemos poner una encima de la otra y eso está chupado: basta con poner primero una y luego la otra. La enjundia viene al querer que estén una al lado de la otra. Vamos a explorar dos versiones similares del mismo concepto.

Las imágenes juntas

Las dos disposiciones que voy a explicar son similares. Esta se diferencia en que las imágenes están juntas pero cada una tiene su leyenda, y a su vez tienen una leyenda conjunta.

Para esto necesitaremos usar el siguiente paquete:

\usepackage{subfigure}

Vamos primero con el código y luego lo desmigo:

% Dos imágenes juntas
\begin{figure}[H]
    \centering
    \subfigure[Ejemplo 1]{\includegraphics[height=5cm]{imagenes/bobina2.png}}
    \hspace{2cm}
    \subfigure[Ejemplo 2]{\includegraphics[height=5cm]{imagenes/bobina3.png}}
    \caption{Ejemplos de bobina en formato "junto"}
\end{figure}
  • Comenzamos creando el ámbito tipo figure que contendrá todo el asunto.
  • Le adjuntamos la opción H para especificar que va “Here”, aquí, en ese lugar del documento. La opción va detrás del parámetro de \begin.
  • Centramos el asunto con \centering
  • A continuación añadimos las “subfiguras”. Entre corchetes va la leyenda. El parámetro incluye el gráfico, con su ruta, y la opción de especificar el tamaño. En este caso ajustamos la altura a 5 cm. Mencionar que podríamos haber escrito 50mm.
  • Tras definir las dos subfiguras, cada una con su leyenda, creamos una leyenda general para todo el bloque con \caption.
  • En este caso, como las imágenes habían quedado muy juntas, he añadido un espacio horizontal (hspace) de 2 cm.
  • Cerramos el ámbito figure

Esto nos da dos figuras (imágenes) cada una con su leyenda, centradas en un bloque que las contiene y que a su vez lleva su propia leyenda. Es una manera de poner dos imágenes juntas.

Las imágenes juntas pero separadas

Este método es similar al anterior, pero en este caso jugamos más con el formato y además cada imagen es independiente de la otra, cada una con su propia leyenda y careciendo de una leyenda global. Hagamos leyenda.

Para formatear las imágenes vamos a hacer uso de minipage que, según he entendido, es un formateador de LaTeX que viene ya incluido y para el que podemos ahorrarnos entonces el paso de declarar el uso de un paquete específico.

Voy a poner primero la estructura para que se vea más claramente lo que estamos haciendo:

% Las mismas dos imágenes pero separadas
\begin{minipage}
    \begin{minipage}
        \begin{figure}
        \end{figure}
    \end{minipage}
    \begin{minipage
        \begin{figure}
        \end{figure}
    \end{minipage}
\end{minipage}

Por lo que he podido entender, minipage permite crear una página dentro de la página, dentro de la cual se derivan sus propias medidas y formatos, como si fuera una página completa pero contenida dentro de la página superior.

Así, definimos un minipage y éste, a su vez, va a contener dos minipages más. A su vez, cada minipage contiene una figura. En presencia de la siguiente declaración:

\usepackage{float}

los dos minipages contenidos en el minipage principal “flotan” y se reordenan automáticamente el uno junto al otro si tienen el espacio suficiente. Me recuerda al HTML y al CSS y cómo se organiza el contenido en una página web, pero es que estamos hablando básicamente de lo mismo.

Aquí viene el código completo:

\begin{minipage}{\linewidth}
    \centering
    \begin{minipage}{0.45\linewidth}
        \begin{figure}[H]
            \centering
            \includegraphics[height=5cm]{imagenes/bobina2.png}
            \caption{Ejemplo 1}
        \end{figure}
    \end{minipage}
    \begin{minipage}{0.45\linewidth}
        \begin{figure}[H]
            \centering
            \includegraphics[height=5cm]{imagenes/bobina3.png}
            \caption{Ejemplo 2}
        \end{figure}
    \end{minipage}
    \vspace{1cm}
\end{minipage}

Habiendo entendido la estructura, hay poco misterio: definimos e incluimos la imagen concreta dentro de cada ámbito tipo figura tal y como hemos visto anteriormente. Explico aquí los detalles misteriosos. Hay poco misterio, pero sí que lo hay:

  • El ámbito minipage toma un parámetro que define su anchura. Le pasamos el ancho de línea como tal con \linewidth.
  • Cada minipage interior tendrá una anchura de algo menos del minipage padre (0.45\linewidth), lo que les permitirá flotar el uno junto al otro y dejar un poco de espacio entre ellos.
  • Como el conjunto quedaba demasiado cerca del párrafo siguiente, he incluido un espacio vertical de un centímetro para que “respirara” un poco: \vspace{1cm}

Imagen y texto al lado

Vamos a resolver esta variante haciendo también uso del minipage:

\begin{minipage}{\textwidth}
    \begin{minipage}{0.3\textwidth}
    	\includegraphics[width=0.8\textwidth]{imagenes/condensador.png}
    \end{minipage}
    \begin{minipage}{0.6\textwidth}
        Está formado por dos láminas metálicas (armaduras)
        enfrentadas separadas por un elemento dieléctrico como
        puede ser el papel, el poliéster, un material cerámico, etc.
    \end{minipage}
\end{minipage}

Es más o menos el mismo escenario que hemos visto anteriormente, sólo que uno de los minipages interiores, en vez de contener una imagen, contiene texto. Por esto motivo haremos los tamaños de los minipages diferentes. En este caso le hemos dado al texto el 60% del ancho y el 30% a la imagen. El 10% que falta hace de espacio entre los dos elementos.

Mencionar que, al definir el tamaño de la imagen, este queda referenciado al ancho del texto en la página, que en este caso es una minipágina, así que en realidad le estamos dando un 0.8 * 0.3 del ancho de la página original: un 24% de la misma. Si os olvidarais de esto os darías cuenta rápidamente al ver la imagen ridículamente pequeña.

Aunque puntualmente esta manera de formatear texto e imágenes puede ser útil, obliga a jugar con el tamaño de la imagen para que encaje bien con el texto, y si cambiáramos el tamaño del texto habría que volver a ajustar la imagen. Encuentro que la siguiente solución es más flexible para la mayoría de casos:

Texto fluyendo alrededor de la imagen

Esta es una de las variantes más resultonas y también más sencillas.

Para ello es necesario usar el paquete wrapfig:

% Para envolver las imágenes con texto
\usepackage{wrapfig}

Mencionar que, en inglés, “to wrap” significa “envolver”. ¿Habéis comido wraps alguna vez?

El código es el siguiente:

\begin{wrapfigure}{r}{0.4\textwidth}
    \begin{center}
    	\includegraphics[width=0.25\textwidth]{imagenes/condensador.png}
    \end{center}
\end{wrapfigure}

Comparado con lo que hemos visto anteriormente, esto se hace casi solo:

  • definimos el ámbito tipo wrapfigure (envolver la figura)
  • \begin{wrapfigure} necesita dos parámetros:
    • la posición en la que queda la imagen (l, r): (left, right), (izquierda, derecha). En este caso a la derecha (r).
    • el ancho del espacio que se le va a dar a la imagen, en este caso un 40% del ancho del texto.
  • definimos un ámbito tipo centrado para que la figura se centre en su interior, si así lo deseamos.
  • incluimos el gráfico sin más misterio, en este caso definiendo una anchura de un cuarto del ancho del texto.

Un último apunte independiente del tema: secciones sin numerar

Una cosa más necesaria para esta lección. Es algo independiente de las imágenes y está relacionado con el formateo.

Normalmente, cada vez que creamos una sección, LaTeX le asigna un número. Las subsecciones reciben a su vez un subnúmero (por ejemplo: 1.2, 3.5, …), etc… A nivel de formateo puede ser interesante crear una sección sin número.

Por ejemplo, en los apuntes de referencia que me pasó Dani, tiene una sección numerada en la que define por ejemplo una bobina. Luego tiene un pequeño encabezado titulado “Símbolo” que solamente contiene la imagen con el símbolo de la bobina. Una manera de resolver esto es crear una subsección sin numerar.

Esto se consigue de la siguiente manera:

\subsection*{Símbolo}

El asterisco es la pieza clave que le indica a LaTeX que esa subsección va sin numerar.

Despedida y cierre

Con esto terminamos el asunto de las imágenes. Es algo laborioso pero, con un poco de práctica, en seguida se le coge el tranquillo. Dani, si necesitaras cualquier cosa, házmelo saber.

Otro día veremos cómo crear cuestionarios, que he visto que Dani también lo va a necesitar. Esto es, preguntas con su enunciado y varias opciones. ¿Cómo lograr esto elegantemente con LaTeX? Lo averiguaremos próximamente.

Hasta entonces, que estéis muy bien.

La última de mis fotos con motivo otoñal

Comentarios

Deja una respuesta