Manuseamento de imagens de wrapfig em LaTeX

Existe alguma forma de evitar este comportamento das imagens

Isto é ter é embrulhar a imagem:

\begin{wrapfigure}{r}{0.5\textwidth} 
\vspace{-20pt}
  \begin{center}
    \includegraphics[width=0.4\textwidth]{./pictures/DBuserTabel.png}%{./Pictures/mainscreen1.png}
    \caption{Uklip af User tablen i Databasen}
    \label{fig:databaseUserTable}
  \end{center}
  \vspace{-20pt}
  \vspace{1pt}
\end{wrapfigure} 
Solução

O comportamento que descreve é causado pela utilização do ambiente wrapfig demasiado próximo de uma quebra de página, como demonstra o exemplo seguinte:

\documentclass{article}
\usepackage{wrapfig}
\usepackage{lipsum}

\begin{document}

\lipsum[1-4]
\begin{wrapfigure}{r}{5cm}
\centering
\rule{3cm}{7cm}
\end{wrapfigure}
\lipsum[1-6]

\end{document}

A documentação do pacote wrapfig avisa explicitamente sobre isto:

O ambiente deve ser colocado de forma a não passar por cima de uma quebra de página

por isso, é necessário mover o seu ambiente wrapfig para garantir que ganhou'não passar por cima de uma quebra de página. No entanto, utilizando R (ou L) em vez de r (ou l), a sua figura flutuará, pelo que basta mudar r para R no código acima, como em

\documentclass{article}
\usepackage{wrapfig}
\usepackage{lipsum}

\begin{document}

\lipsum[1-4]
\begin{wrapfigure}{R}{5cm}
\centering
\rule{3cm}{7cm}
\end{wrapfigure}
\lipsum[1-6]

\end{document}

agora cede:

Comentários (6)

A resposta aceite oferece um método (fazer flutuar a figura). Se tudo o que precisar é de remover a caixa branca na página seguinte, pode simplesmente adicionar espaçamento negativo. Adaptando Gonzalo Medina's exemplo:

\documentclass{article}
\usepackage{wrapfig}
\usepackage{lipsum}

\begin{document}

\lipsum[1-4]
\begin{wrapfigure}{r}{5cm}
  \centering
  \rule{3cm}{7cm}
  \vspace{-110pt} % This removes the white box on the second page
\end{wrapfigure}
\lipsum[1-6]

\end{document}

Em alternativa, pode contar o número de linhas na primeira página que a "figura de embrulho" ocupa e inserir esse número no primeiro parâmetro opcional da "figura de embrulho":

\documentclass{article}
\usepackage{wrapfig}
\usepackage{lipsum}

\begin{document}

\lipsum[1-4]
\begin{wrapfigure}[10]{r}{5cm}
%                  ^^ This dictates the number
%                   of text rows the wrapfigure
%                   will occupy.
  \centering
  \rule{3cm}{7cm}
  \vspace{-110pt}
\end{wrapfigure}
\lipsum[1-6]

\end{document}

Ambos estes métodos resultam nos seguintes resultados:

[3]

Comentários (5)

Se quiser ambientes não flutuantes mas não'não quer que os números se estendam para fora do fundo da página então significa que por vezes tem de ter uma quebra de página antes do início do parágrafo. Pode* fazer isto automaticamente definindo um comando (no preâmbulo) que armazena o conteúdo das figuras numa caixa de salvaguarda, testa a altura da caixa, depois força uma quebra de página, se necessário. Ver o seguinte exemplo:

\documentclass{article}
\usepackage{wrapfig}
\usepackage{lipsum}

\newsavebox\curwrapfig
\makeatletter
\long\def\wrapfiguresafe#1#2#3{%
  \sbox\curwrapfig{#3}%
  \par\penalty-100%
  \begingroup % preserve \dimen@
    \dimen@\pagegoal \advance\dimen@-\pagetotal % space left
    \advance\dimen@-\baselineskip % allow an extra line
    \ifdim \ht\curwrapfig>\dimen@ % not enough space left
      \break%
    \fi%
  \endgroup%
  \begin{wrapfigure}{#1}{#2}%
    \usebox\curwrapfig%
  \end{wrapfigure}%
}
\makeatother

\begin{document}
\lipsum[1-4]
\wrapfiguresafe{r}{0mm}{\centering\rule{3cm}{7cm}}
\lipsum[1-6]
\end{document}

que produz a seguinte produção:

Esteja avisado de que, se os seus números forem altos, isto pode causar algumas rupturas de página muito más com páginas curtas e/ou, dependendo da sua configuração, resultar em avisos de caixa v subful vbox.

Comentários (0)