Tengo un problema cuando hay muchas figuras en cuestión. Algunas figuras tienden a «volar», es decir, un párrafo debajo, aunque las coloqué antes de ese párrafo. Utilizo el código:
\begin{figure}[ht] \begin{center} \advance\leftskip-3cm \advance\rightskip-3cm \includegraphics[keepaspectratio=true,scale=0.6]{slike/visina8} \caption{} \label{visina8} \end{center}\end{figure}
para colocar mis figuras. ¿Cómo puedo decirle al látex que REALMENTE quiero la figura en ese lugar específico, sin importar cuánto espacio en blanco quede?
Comentarios
Respuesta
La respuesta corta: use el paquete “ float ” y luego el [H]
opción para tu figura.
\usepackage{float} ... \begin{figure}[H] \centering \includegraphics{slike/visina8} \caption{Write some caption here}\label{visina8} \end{figure}
La respuesta más larga: El comportamiento predeterminado de las figuras es flotar, para que LaTeX pueda encontrar la mejor manera de organizarlas en su documento y hacer que se vea mejor. Si echas un vistazo, así es como a menudo se componen los libros. Por lo tanto, lo mejor que puede hacer es dejar que LaTeX haga su trabajo y no intentar forzar la colocación de figuras en ubicaciones específicas. Esto también significa que debe evitar el uso de frases como «in the following figure:
”, que requiere que la figura se establezca en una ubicación específica, y use“ in Figure~\ref{..}
“en su lugar, aprovechando las referencias cruzadas de LaTeX.
Si por alguna razón realmente desea que alguna figura en particular se coloque «AQUÍ», y no donde LaTeX quiere ponerla, entonces use el [H]
opción del paquete “ float ” que básicamente convierte la figura flotante en un no flotante normal.
También tenga en cuenta que, si no quiere agregar un caption
a su figura, entonces no necesita usar el entorno figure
en absoluto. Puede usar el comando \includegraphics
en cualquier lugar de su documento para insertar una imagen.
Comentarios
- gracias por notar esto! No estaba ‘ t al tanto del cambio.
H
doesn ‘ t parece funcionar sin ningún paquete, pero funciona cargandofloat
. ¿EsH
defloat
lo mismo que!h
? - no , [! h] es cambiado de todos modos por la mayoría de clases de documentos a [! ht]. Y el significado de h es solo: aquí, si es posible, pero no absolutamente aquí. Los ! permite a LaTeX minimizar todos los contadores y longitudes que se refieren a entornos flotantes.
- gracias, ¡funcionó para mí! Por lo general, dejo que el látex lo coloque donde quiere, pero a veces simplemente lo necesito donde quiero.
- Para documentos que no están destinados a ser impresos, no hay razón para intentar guardar papel, por lo que las áreas grandes de espacios en blanco no son ‘ un problema. De modo que es ‘ mucho mejor tener la figura rompiendo el texto en el punto más lógico, en lugar de flotar en otro lugar. Estas incómodas convenciones seguirán igual que el latín.
- No ‘ no creo que las preocupaciones habituales sean sobre ahorrar espacio, en lugar de tratar estilísticamente de encontrar lo mejor lugar donde colocar una figura, mesa, etc.
Responder
no no use un entorno flotante si no lo desea.
\usepackage{caption} ... \noindent% \begin{minipage}{\linewidth}% to keep image and caption on one page \makebox[\linewidth]{% to center the image \includegraphics[keepaspectratio=true,scale=0.6]{slike/visina8}} \captionof{figure}{...}\label{visina8}% only if needed \end{minipage}
o
\begin{center} \includegraphics[...]{slike/visina8}} \captionof{figure}{...}\label{visina8}% only if needed \end{center}
Comentarios
- Hola @Herbert – ¡MUCHAS gracias por esta respuesta! Nunca antes había entendido que
\begin{figure}
es un entorno flotante, mientras que\begin{minipage}
no . Tuve un problema al querer incluir una imagen en la parte inferior de la página con texto, y ni siquiera[H]
ayudó; ¡solo esto! Acabo de reemplazarminipage
porfigure
– ycaptionof
paracaption
– ¡¡y finalmente obtuve lo que quería !! Muchas gracias de nuevo, ¡salud! - ¿Por qué usas un
\makebox
? ¿No se ve igual sin él? - @Tobi: si la imagen no es más grande que
\textwidth
sí, de lo contrario no.\makebox
centra la imagen independientemente de su ancho - Esto fue muy útil; En mi humilde opinión, esta debería ser la respuesta aceptada, ya que funciona más como se esperaba que la aceptada actualmente.
Respuesta
Una solución no mencionada por ninguna de las otras respuestas que me acaba de resolver es usar \clearpage
No se necesitan paquetes especiales.
\clearpage
obliga a que todas las cifras que se encuentran arriba en el archivo .tex
se impriman antes de continuar con el texto. Esto puede dejar grandes espacios en blanco.
Para mí, esta fue la mejor solución porque no tuve que cambiar ningún formato y solo me aseguré de que todas las figuras se imprimieran antes del siguiente fragmento de texto. Mi problema era parte del documento con muchas figuras y poco texto.
Comentarios
- Solución sencilla y eficaz, gracias !!
Responder
Ahora puedes usar el paquete adjustbox
para convertir tus cosas en caja en un reemplazo flotante no flotante usando el nofloat=<type>
clave. El título y la etiqueta se pueden agregar con sus propias claves, antes del nofloat
. Para centrar se puede utilizar la tecla center
. Para agregar el espacio vertical, use la tecla vspace
. Esta solución tiene la ventaja de que también puede usar todas las otras características de adjustbox
para modificar el contenido (escala mínima / máxima, encuadre, etc.)
Tenga en cuenta que si el contenido de la figura es solo una imagen, puede usar las mismas claves en \adjustbox
y obtener una sola línea. Si todo lo que desea es un tabular, entonces existe la clave tabular
para {adjustbox}
.
Si más adelante desea cámbielo a un flotador real, simplemente gire nofloat
a float
y elimine la clave vspace
. adjustbox
coloca el título en la parte superior para table
sy en la parte inferior para figure
s. Esto se puede cambiar usando las claves captionbelow
o captionabove
en lugar de caption
. Consulte el manual adjustox
para conocer todas las opciones.
Si no quiere encuadrar el contenido, aún puede usar el paquete adjustbox
ya que proporciona el {adjnofloat}{<type>}
entorno. Se utiliza internamente para implementar la clave nofloat
. Los usuarios pueden redefinir este entorno para cambiar o parchear el comportamiento nofloat
o utilizar el entorno directamente. El entorno utiliza un código muy similar al de la respuesta de Herbert .
Ejemplos de uso:
\documentclass{article} \usepackage{blindtext}% for example text here only \usepackage{adjustbox} \begin{document} \blindtext \begin{adjustbox}{center,caption={some caption},label={somelabel},nofloat=figure,vspace=\bigskipamount} % maybe other stuff \includegraphics[width=\textwidth]{example-image}% example only, could also be \adjustimage % maybe other stuff \end{adjustbox} \blindtext % For simple images, a one liner is enough \adjustimage{width=\textwidth,center,caption={some caption},label={somelabel},nofloat=figure,vspace=\bigskipamount}{example-image} \blindtext \begin{adjustbox}{center,caption={some caption},label={somelabel},nofloat=table,vspace=\bigskipamount} % maybe other stuff \begin{tabular}{lll} some & tabular & is\\ also & possible & with this \\ \end{tabular} % maybe other stuff \end{adjustbox} \blindtext % For just a tabular: \begin{adjustbox}{tabular=lll,center,caption={some caption},label={somelabel},nofloat=table,vspace=\bigskipamount} some & tabular & is\\ also & possible & with this \\ \end{adjustbox} \blindtext \end{document}
Parte del resultado:
Responder
Use [ht!]
para ser más enfático sobre la ubicación. Y, si desea que el texto siga la figura, en lugar de comenzar antes, utilice \usepackage{parskip}
en su preámbulo y deje un espacio antes del texto en cuestión.
También empleo \vspace{}
o antes del entorno de la figura para manipular el espacio entre el texto y la figura para dar un aspecto más equilibrado. No tengo ningún problema de esta manera, incluso con entornos de multifigura más complejos que emplean \subfigure
.
center
entorno pero el\centering
comando para figuras. Consulte ¿Debería usar el centro o el centrado para figuras y tablas?\FloatBarrier
en algún lugar entre la figura y el párrafo. Obliga a todas las figuras definidas antes del comando a renderizarse antes de ese punto en el texto. Necesitará agregar\usepackage{placeins}
en el preámbulo para usar el comando. A veces, esto me parece muy útil.