0

I know wrapfig has problems with images near the bottom of the page, but I want to know if there is a solution (even with a different package, for example with minipages). This is my MWE:

\documentclass{article}
\usepackage[utf8]{inputenc}
\usepackage{wrapfig}
\usepackage{graphicx}
\usepackage[margin=1in]{geometry}
\usepackage{lipsum}

\begin{document}

\lipsum[1-5]

\section{Tipos de virtualización} \label{tiposvirt}

Una vez definida qué es la virtualización, podemos analizar los distintos tipos que existen, en qué se diferencian unos de otros y en qué situaciones puede ser más ventajoso optar por cada uno de ellos:

\subsection{Virtualización completa}

\begin{wrapfigure}{R}{0pt}
\centering
\includegraphics[width=0.5\textwidth]{fullVirtualization.jpg}
\caption[Funcionamiento de la virtualización completa con soporte de hardware]{Funcionamiento de la virtualización completa con soporte de hardware. Obtenido de}\label{fullvirtualization}
\end{wrapfigure}

Esta técnica de virtualización simula completamente el \textit{hardware} subyacente, de manera que los entornos virtualizados, también conocidos como máquinas virtuales, no tienen constancia de que están siendo ejecutados sobre una máquina anfitrión. En sus comienzos, esta tecnología utilizaba una doble táctica para ejecutar las instrucciones del sistema operativo invitado: las instrucciones no virtualizables eran traducidas por el hipervisor mediante un procedimiento conocido como traducción binaria, mientras que las instrucciones del espacio de usuario se ejecutaban directamente sobre el procesador. Sin embargo, gracias a la aparición de las adaptaciones \textit{hardware} de Intel y AMD mencionadas anteriormente (y obviando el caso del IBM System/370, que en 1972 ya se encontraba adaptado para la virtualización del CP/CMS), la traducción binaria fue reemplazada por un nuevo modo de ejecución en la CPU, de tal forma que aquellas instrucciones privilegiadas son capturadas directamente por el hipervisor, mejorando así el rendimiento. En la figura \ref{fullvirtualization} podemos ver un esquema que muestra el funcionamiento de la virtualización completa asistida por \textit{hardware}. Esta técnica de virtualización es empleada por la mayoría de aplicaciones de VMWare o por KVM, por ejemplo.

\subsection{Paravirtualización}

\begin{wrapfigure}{L}{0pt}
\centering
\includegraphics[width=0.5\textwidth]{paravirtualization.jpg}
\caption[Funcionamiento de la paravirtualización]{Funcionamiento de la paravirtualización. Obtenido de}\label{paravirtualization}
\end{wrapfigure}

En este caso, las instrucciones no virtualizables se reemplazan por \textit{hypercalls}, permitiendo la comunicación directa del sistema operativo invitado con el hipervisor, lo que mejora el rendimiento en algunas ocasiones. La figura \ref{paravirtualization} presenta cómo funciona la paravirtualización. Para poder emplear esta técnica, el núcleo del sistema operativo debe estar adaptado para la paravirtualización. En sus primeras etapas, esto suponía una importante limitación debido a que exigía que existiera una versión del \textit{kernel} para cada hipervisor; no obstante, esto fue solventado en la versión 2.6.23 del núcleo de Linux gracias a la aparición de \texttt{paravirt-ops}, posibilitando que el mismo \textit{kernel} pudiera ser ejecutado en cualquier hipervisor que admitiese paravirtualización así como en \textit{bare metal} sin realizar ninguna modificación adicional. En el caso de Windows, no es posible utilizarlo como sistema operativo invitado debido a que no soporta la paravirtualización. Xen es el hipervisor más popular que utiliza exclusivamente esta tecnología. Además, algunos hipervisores de virtualización completa como VirtualBox, Hyper-V o VMWare Workstation habilitan la paravirtualización parcialmente para la realización de tareas específicas, obteniendo las ventajas de ambos enfoques.

\end{document}

And here's an screenshot of how it looks:

Image not wrapping

Basically, I want the first picture to appear next to the text of the subsection 1.1. Right now, I'm getting the following warning: Package wrapfig Warning: Collision between wrapping environments on input line 28. If i use r instead of R, it would work but then the caption does not respect the margin and it overflows.

Thanks in advance!

3
  • In the doc wrapfig: The environment should be placed so as to not run over a page break. There is not enough space to place the image in the same page . If you want to side, with minipages it will meet your expectations.
    – pascal974
    Commented May 15, 2022 at 11:02
  • I have found this link tex.stackexchange.com/questions/61650/…
    – pascal974
    Commented May 15, 2022 at 11:50
  • The critical problem here is that using L moves the entire wrapfigure to the start of the next paragraph, which does not exist. \subsection (specifically \@afterheading) rewrites \everypar, crashing the whole process. Commented May 15, 2022 at 14:39

1 Answer 1

1

I started to do a paracol solution, only to realize that the best solution is to place the two figures side by side. This will not be true in general, but you can't expect the software to do everything.

\documentclass{article}
\usepackage[utf8]{inputenc}
\usepackage{paracol}
\globalcounter*
\usepackage[draft]{graphicx}
\usepackage[margin=1in]{geometry}
\usepackage{lipsum}

\begin{document}

\lipsum[1-5]

\section{Tipos de virtualización} \label{tiposvirt}

Una vez definida qué es la virtualización, podemos analizar los distintos tipos que existen, en qué se diferencian unos de otros y en qué situaciones puede ser más ventajoso optar por cada uno de ellos:

\subsection{Virtualización completa}

Esta técnica de virtualización simula completamente el \textit{hardware} subyacente, de manera que los entornos virtualizados, también conocidos como máquinas virtuales, no tienen constancia de que están siendo ejecutados sobre una máquina anfitrión. En sus comienzos, esta tecnología utilizaba una doble táctica para ejecutar las instrucciones del sistema operativo invitado: las instrucciones no virtualizables eran traducidas por el hipervisor mediante un procedimiento conocido como traducción binaria, mientras que las instrucciones del espacio de usuario se ejecutaban directamente sobre el procesador. Sin embargo, gracias a la aparición de las adaptaciones \textit{hardware} de Intel y AMD mencionadas anteriormente (y obviando el caso del IBM System/370, que en 1972 ya se encontraba adaptado para la virtualización del CP/CMS), la traducción binaria fue reemplazada por un nuevo modo de ejecución en la CPU, de tal forma que aquellas instrucciones privilegiadas son capturadas directamente por el hipervisor, mejorando así el rendimiento. En la figura \ref{fullvirtualization} podemos ver un esquema que muestra el funcionamiento de la virtualización completa asistida por \textit{hardware}. Esta técnica de virtualización es empleada por la mayoría de aplicaciones de VMWare o por KVM, por ejemplo.

\begin{figure}[ht]
\begin{minipage}[t]{\dimexpr 0.5\textwidth-0.5\columnsep}
\includegraphics[width=\linewidth]{fullVirtualization.jpg}
\caption[Funcionamiento de la virtualización completa con soporte de hardware]{Funcionamiento de la virtualización completa con soporte de hardware. Obtenido de}\label{fullvirtualization}
\end{minipage}\hfill
\begin{minipage}[t]{\dimexpr 0.5\textwidth-0.5\columnsep}
\includegraphics[width=\linewidth]{paravirtualization.jpg}
\caption[Funcionamiento de la paravirtualización]{Funcionamiento de la paravirtualización. Obtenido de}\label{paravirtualization}
\end{minipage}
\end{figure}

\subsection{Paravirtualización}

En este caso, las instrucciones no virtualizables se reemplazan por \textit{hypercalls}, permitiendo la comunicación directa del sistema operativo invitado con el hipervisor, lo que mejora el rendimiento en algunas ocasiones. La figura \ref{paravirtualization} presenta cómo funciona la paravirtualización. Para poder emplear esta técnica, el núcleo del sistema operativo debe estar adaptado para la paravirtualización. En sus primeras etapas, esto suponía una importante limitación debido a que exigía que existiera una versión del \textit{kernel} para cada hipervisor; no obstante, esto fue solventado en la versión 2.6.23 del núcleo de Linux gracias a la aparición de \texttt{paravirt-ops}, posibilitando que el mismo \textit{kernel} pudiera ser ejecutado en cualquier hipervisor que admitiese paravirtualización así como en \textit{bare metal} sin realizar ninguna modificación adicional. En el caso de Windows, no es posible utilizarlo como sistema operativo invitado debido a que no soporta la paravirtualización. Xen es el hipervisor más popular que utiliza exclusivamente esta tecnología. Además, algunos hipervisores de virtualización completa como VirtualBox, Hyper-V o VMWare Workstation habilitan la paravirtualización parcialmente para la realización de tareas específicas, obteniendo las ventajas de ambos enfoques. 

\end{document}

Another possible solution is to shrink the first image until it fits the page. This requires a lot of trial and error. Note that the caption width needs to remain large.

\documentclass{article}
\usepackage[utf8]{inputenc}
\usepackage{wrapfig}
\usepackage{graphicx}
\usepackage[margin=1in]{geometry}
\usepackage{lipsum}

\begin{document}

\lipsum[1-5]

\section{Tipos de virtualización} \label{tiposvirt}

Una vez definida qué es la virtualización, podemos analizar los distintos tipos que existen, en qué se diferencian unos de otros y en qué situaciones puede ser más ventajoso optar por cada uno de ellos:

\subsection{Virtualización completa}

\begin{wrapfigure}[11]{r}{0.5\textwidth}
\vspace*{-26pt}
\centering
\includegraphics[width=0.3\textwidth]{example-image-a}
\caption[Funcionamiento de la virtualización completa con soporte de hardware]{Funcionamiento de la virtualización completa con soporte de hardware. Obtenido de}\label{fullvirtualization}
\end{wrapfigure}

Esta técnica de virtualización simula completamente el \textit{hardware} subyacente, de manera que los entornos virtualizados, también conocidos como máquinas virtuales, no tienen constancia de que están siendo ejecutados sobre una máquina anfitrión. En sus comienzos, esta tecnología utilizaba una doble táctica para ejecutar las instrucciones del sistema operativo invitado: las instrucciones no virtualizables eran traducidas por el hipervisor mediante un procedimiento conocido como traducción binaria, mientras que las instrucciones del espacio de usuario se ejecutaban directamente sobre el procesador. Sin embargo, gracias a la aparición de las adaptaciones \textit{hardware} de Intel y AMD mencionadas anteriormente (y obviando el caso del IBM System/370, que en 1972 ya se encontraba adaptado para la virtualización del CP/CMS), la traducción binaria fue reemplazada por un nuevo modo de ejecución en la CPU, de tal forma que aquellas instrucciones privilegiadas son capturadas directamente por el hipervisor, mejorando así el rendimiento. En la figura \ref{fullvirtualization} podemos ver un esquema que muestra el funcionamiento de la virtualización completa asistida por \textit{hardware}. Esta técnica de virtualización es empleada por la mayoría de aplicaciones de VMWare o por KVM, por ejemplo.

\subsection{Paravirtualización}

\begin{wrapfigure}{L}{0pt}
\centering
\includegraphics[width=0.5\textwidth]{example-image-b}
\caption[Funcionamiento de la paravirtualización]{Funcionamiento de la paravirtualización. Obtenido de}\label{paravirtualization}
\end{wrapfigure}

En este caso, las instrucciones no virtualizables se reemplazan por \textit{hypercalls}, permitiendo la comunicación directa del sistema operativo invitado con el hipervisor, lo que mejora el rendimiento en algunas ocasiones. La figura \ref{paravirtualization} presenta cómo funciona la paravirtualización. Para poder emplear esta técnica, el núcleo del sistema operativo debe estar adaptado para la paravirtualización. En sus primeras etapas, esto suponía una importante limitación debido a que exigía que existiera una versión del \textit{kernel} para cada hipervisor; no obstante, esto fue solventado en la versión 2.6.23 del núcleo de Linux gracias a la aparición de \texttt{paravirt-ops}, posibilitando que el mismo \textit{kernel} pudiera ser ejecutado en cualquier hipervisor que admitiese paravirtualización así como en \textit{bare metal} sin realizar ninguna modificación adicional. En el caso de Windows, no es posible utilizarlo como sistema operativo invitado debido a que no soporta la paravirtualización. Xen es el hipervisor más popular que utiliza exclusivamente esta tecnología. Además, algunos hipervisores de virtualización completa como VirtualBox, Hyper-V o VMWare Workstation habilitan la paravirtualización parcialmente para la realización de tareas específicas, obteniendo las ventajas de ambos enfoques.

\end{document}
1
  • Thank you so much! I haven't got time to try it until today, but the second solution worked perfectly :D
    – Awacate
    Commented May 26, 2022 at 12:09

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .