Manual de LaTeX/Inclusión de gráficos/Objetos flotantes

El capítulo insertar figuras introduce cómo importar gráficos. Sin embargo, solo tener una imagen entre párrafos puede no parece profesional. Para empezar, queremos una forma de agregar subtítulos y poder hacer referencias cruzadas. Lo que necesitamos es una forma de definir figuras . También sería bueno que LaTeX pudiera aplicar principios similares a cuando organiza el texto para que se vea lo mejor posible al organizar las imágenes también. Aquí es donde entran en juego los "flotantes".

Flotantes editar

Los flotantes son contenedores para objetos en un documento que no se pueden dividir en una página. LaTeX por defecto reconoce los flotantes de "tabla" y "figura", pero puede definir otros propios. Los flotadores están ahí para tratar el problema del objeto que no cabe en la página actual y para ayudar cuando realmente no desea el objeto aquí en este momento.

Los flotantes no son parte de la secuencia normal de texto, sino entidades separadas, ubicadas en una parte de la página para sí mismos (arriba, centro, abajo, izquierda, derecha o donde el diseñador lo especifique). Siempre tienen un subtítulo que los describe y siempre están numerados para que puedan ser consultados desde otra parte del texto. LaTeX flota automáticamente Tablas y Figuras, dependiendo de cuánto espacio queda en la página en el punto en que se procesan. Si no hay suficiente espacio en la página actual, el flotador se mueve a la parte superior de la página siguiente. Esto se puede cambiar moviendo la definición de Tabla o Figura a un punto anterior o posterior en el texto, o ajustando algunos de los parámetros que controlan la flotación automática.

Los autores a veces tienen muchos flotantes que ocurren en rápida sucesión, lo que plantea el problema de cómo se supone que deben caber en la página y aún dejan espacio para el texto. En este caso, LaTeX los apila y los imprime juntos sí es posible, o los deja al final del capítulo en protesta. El secreto es espaciarlos dentro de su texto para que no se entrometan en el hilo de su argumento o discusión, ni en el equilibrio visual de las páginas compuestas.

Al igual que con varias otras entidades, existen limitaciones en el número de flotadores no procesados (colocados) en línea. LaTeX por defecto puede hacer frente a un máximo de 18 flotadores y un error sintomático es:

! LaTeX Error: Too many unprocessed floats.

El paquete morefloats aumenta este limite.

Figuras editar

Para crear una figura flotante, use el entorno figure

\begin{figure}[placement specifier]
... figure contents ...
\end{figure}

La sección anterior mencionó cómo se utilizan los flotadores para permitir que LaTeX maneje figuras, mientras se mantiene la mejor presentación posible. Sin embargo, puede haber momentos en los que no esté de acuerdo, y un ejemplo típico es con el posicionamiento de las figuras. El parámetro placement specifier existe como un compromiso, y su propósito es darle al autor un mayor grado de control sobre dónde se colocan ciertos flotadores.

Specifier Permiso
h Coloque el flotante aqui (here), esto es, aproximadamente cerca del mismo punto donde se encuentra en el texto (pero no exactamente ese lugar)
t Posicion en la parte superior (top) de la pagina.
b Posición en la parte inferior (bottom) de la página.
p Colocar en la página espacial (page) únicamente para flotantes.
! Anular los parámetros internos que usa LaTeX para determinar las posiciones de flotación "buenas".
H Coloca el flotante exactamente en la ubicación del código LaTeX. Requiere el paquete float, [1] es decir, \usepackage{float}.

Lo que debe hacer con estos permisos de ubicación es enumerar cuáles de las opciones desea poner a disposición de LaTeX. Estas son simplemente posibilidades, y LaTeX decidirá al escribir su documento cuál de sus especificadores suministrados cree que es mejor. Para mayor intuición, Frank Mittelbach describe el algoritmo [2]:

  • Si se encuentra un flotante, LaTeX intenta colocarlo inmediatamente de acuerdo con sus reglas (detalladas más adelante):
    • Si esto tiene éxito, se coloca el flotante y esa decisión nunca cambia;
    • Si esto no tiene éxito, LaTeX coloca el flotador en una cola de espera para ser reconsiderado cuando se inicia la siguiente página (pero no antes).
  • Una vez que una página ha finalizado, LaTeX examina esta cola de espera e intenta vaciarla lo mejor posible. Para esto, primero intentará generar tantas páginas flotantes como sea posible (con la esperanza de sacar flotantes de la cola). Una vez que se agote esta posibilidad, intentará colocar los flotantes restantes en las áreas superior e inferior. Observa todos los flotantes restantes y los coloca o los difiere a una página posterior (es decir, los vuelve a agregar a la cola de espera una vez más).
  • Después de eso, comienza a procesar el material del documento para esta página. En el proceso, puede encontrar más flotantes.
  • Si se ha alcanzado el final del documento o si se encuentra un \clearpage, LaTeX inicia una nueva página, relaja todas las condiciones de flotación restrictivas y genera todos los flotantes en la cola de espera colocándolos en página(s) flotante.

En algunos casos especiales, LaTeX no seguirá estos parámetros de posicionamiento y serán necesarios comandos adicionales, por ejemplo, si se necesita especificar una alineación que no sea centrada para un flotante que se encuentra solo en una página [3].

Use \listoffigures para agregar una lista de las figuras al comienzo del documento. Para cambiar el nombre utilizado en el título de Figura a Ejemplo, use \renewcommand{\figurename}{Example} en el contenido de la figura.


Figura con bordes editar

Es posible obtener un borde delgado alrededor de todas las figuras. Debe escribir lo siguiente una vez al comienzo del documento:

\usepackage{float}
\floatstyle{boxed} 
\restylefloat{figure}

El borde no incluye el titulo de la figura.

Tablas editar

Las tablas flotantes se cubren en un capítulo separado. Hagamos un recordatorio rápido aquí. El entorno tabular que se utilizó para construir las tablas no es flotante de forma predeterminada. Por lo tanto, para las tablas que desea flotar, ajuste el entorno tabular dentro de un entorno de table , así:


\begin{table}
  \begin{tabular}{...}
  ... table data ...
  \end{tabular}
\end{table}

Puede sentir que es un poco largo, pero tales distinciones son necesarias, porque es posible que no desee que todas las tablas se traten como flotantes.

Use \listoftables para agregar una lista de las tablas al comienzo del documento.


Manteniendo los flotantes en su lugar editar

El paquete placeins[1] proporciona el comando \FloatBarrier, que puede usarse para evitar que los flotantes se muevan sobre él. Esto puede, por ejemplo, ser útil al comienzo de cada sección. El paquete incluso ofrece una opción para cambiar la definición de \section para incluir automáticamente un \FloatBarrier. Esto se puede configurar cargando el paquete con la opción [section] (\usepackage[section]{placeins}). \FloatBarrier también puede ser útil para evitar que los flotantes se entrometan en las listas creadas usando itemize o enumerate.

El paquete flafter se puede usar para forzar que aparezcan los flotantes después de haberlos definido, y el paquete endfloat[2] se puede usar para colocar todos los flotantes al final de un documento.

El paquete float[3] proporciona la opción H para entornos flotantes, lo que evita que floten por completo.

El paquete caption[4] proporciona el comando \captionof{<type>}{<caption text>} que le permite escribir un título sin un entorno flotante. En estos casos, usted tiene el control total y absoluto sobre la ubicación de sus figuras y subtítulos.

Subflotantes editar

Una extensión útil es el paquete subcaption [5], que utiliza subfloats dentro de un único flotante. El paquete de subfig (el paquete de subfigure está en desuso [4]) es una alternativa útil cuando se usa junto con plantillas LaTeX (es decir, plantillas para revistas de Springer e IOP, IEEETran y ACM SIG) que no son compatibles con subcaption. Estos paquetes le dan al autor la capacidad de tener subfiguras dentro de figuras o subtablas dentro de tablas flotantes. Los subflotantes tienen su propia leyenda y una leyenda global opcional. Un ejemplo ilustrará mejor el uso del paquete subcaption :


\usepackage{graphicx}
\usepackage{subcaption}

\begin{figure}
    \centering
    \begin{subfigure}[b]{0.3\textwidth}
        \includegraphics[width=\textwidth]{gull}
        \caption{A gull}
        \label{fig:gull}
    \end{subfigure}
    ~ %add desired spacing between images, e. g. ~, \quad, \qquad, \hfill etc. 
      %(or a blank line to force the subfigure onto a new line)
    \begin{subfigure}[b]{0.3\textwidth}
        \includegraphics[width=\textwidth]{tiger}
        \caption{A tiger}
        \label{fig:tiger}
    \end{subfigure}
    ~ %add desired spacing between images, e. g. ~, \quad, \qquad, \hfill etc. 
    %(or a blank line to force the subfigure onto a new line)
    \begin{subfigure}[b]{0.3\textwidth}
        \includegraphics[width=\textwidth]{mouse}
        \caption{A mouse}
        \label{fig:mouse}
    \end{subfigure}
    \caption{Pictures of animals}\label{fig:animals}
\end{figure}
 

Notará que el entorno de la figura está configurado como de costumbre. También puede usar un entorno de tabla para subtablas. Para cada subflotante, debe usar:

\begin{table}[<placement specifier>]
    \begin{subtable}[<placement specifier>]{<width>}
        \centering
        ... table 1 ...
    \caption{<sub caption>}
    \end{subtable}
    ~
    \begin{subtable}[<placement specifier>]{<width>}
        \centering
        ... table 2 ...
        \caption{<sub caption>}
    \end{subtable}
\end{table}

Si tiene la intención de hacer una referencia cruzada de cualquiera de los subflotantes, vea dónde se inserta la etiqueta; \caption fuera del entorno de subfigure proporcionará el subtítulo global.

subcaption organizará las figuras o tablas una al lado de la otra, siempre que puedan caber, de lo contrario, cambiará automáticamente los flotantes a continuación. Este efecto se puede agregar manualmente, colocando el comando de nueva línea (\\)) antes de la figura que desea mover a una nueva línea.

Los espacios horizontales entre figuras están controlados por uno de varios comandos, que se colocan entre \begin{subfigure} y \end{subfigure}:

  • Se puede usar un espacio sin interrupción (especificado por ~ como en el ejemplo anterior) para insertar un espacio entre las subcamas.
  • Espacios matemáticos: \qquad, \quad, \; y \,
  • Espacio genérico: \hspace{''length''}
  • Expandiendo/contrayendo espacio automáticamente: \hfill
  1. http://www.ctan.org/tex-archive/macros/latex/contrib/float/
  2. Float environment positioning, by Frank Mittelbach
  3. http://tex.stackexchange.com/questions/28556/how-to-place-a-float-at-the-top-of-a-floats-only-page
  4. http://ctan.org/pkg/subfigure