3

In a simple setup that is

\documentclass{report}
\usepackage{amsmath,caption,wrapfig}
\usepackage{lipsum,blindtext}
\usepackage[demo]{graphicx}

\begin{document} \lipsum[2] \section{A Small Section} \label{smallsec} \lipsum[1] \begin{wrapfigure}{r}{7.7cm} \centering \includegraphics[width=3in]{images/example.png} \vspace*{-10 pt} \captionsetup{font=scriptsize} \caption{\blindtext[1]} \label{wrapfig:label} \end{wrapfigure} \lipsum[3]

the output is the desired one and it is what it should. Here it is Expectation 1

BUT in my case, there is a gap above and below the figure and I can't find any answer.

To solve this, I can restrict the line numbers that I know, but I don't want to and remain flexible about the figure-caption.

Here's the relevant part of the code:

\section{A Simple Section}
\label{sec:label1}
\begin{wrapfigure}{r}{7.7cm}
        \centering
        \includegraphics[width=3in]{images/example.png}
        \captionsetup{font=scriptsize}
        \caption{Nam dui ligula, fringilla a, euismod sodales, sollicitudin vel, wisi. Morbi
auctor lorem non justo. Nam lacus libero, pretium at, lobortis vitae, ultricies et,
tellus. Donec aliquet, tortor sed accumsan bibendum, erat ligula aliquet magna,
vitae ornare odio metus a mi. Morbi ac orci et nisl hendrerit mollis. Suspendisse
ut massa. Cras nec ante. Pellentesque a nulla. Cum sociis natoque penatibus et}
        \label{wrapfig:label1}
\end{wrapfigure} 
\qquad\lipsum[2]
\subsection*{An unnumbered Section}
% \label{nolabelreq}
\quad Nam dui ligula, fringilla a, euismod sodales, sollicitudin vel, wisi. Morbi
auctor lorem non justo. Nam lacus libero, pretium at, lobortis vitae, ultricies et,
tellus. Donec aliquet, tortor sed accumsan bibendum, erat ligula aliquet magna,
vitae ornare odio metus a mi. Morbi ac orci et nisl hendrerit mollis. Suspendisse
ut massa. Cras nec ante. Pellentesque a nulla. Cum sociis natoque penatibus et.\vspace*{5mm}
\null\quad Nam dui ligula, fringilla a, euismod sodales, sollicitudin vel, wisi. Morbi
auctor lorem non justo. Nam lacus libero, pretium at, lobortis vitae, ultricies et,
tellus.

I've manually pasted some blindtext just to simulate my actual text length. The result is Reality 2

My Preamble Contains these pkgs: adjustbox,amsmath,amssymb,biblatex,caption,csquotes,esint,fancyhdr,float,geometry,graphicx,hyperref,lipsum,multicol,parskip,placeins,subcaption,svg,titlesec,todonotes,wrapfig

And any scaling is done through the following

\usepackage[a4paper, margin=2.5 cm, top=25mm,bottom=25mm,bindingoffset=6mm]{geometry}
\setlength {\marginparwidth }{2cm}
\renewcommand{\headrulewidth}{0.4pt}
\renewcommand{\footrulewidth}{0pt}
\setlength{\headheight}{14.5pt}

Why is this happening and how to prevent this ?

  • Wrapfig assumes every line of text is precisely \baselineskip apart. When you change font sizes or add blank space, it doesn't compensate. If you don't want to count lines you can use \wrapspacer to overlap it with blank lines (https://tex.stackexchange.com/questions/495675/make-wrapfigure-span-over-two-exsheets-questions/495707?r=SearchResults&s=2%7C0.0000#495707). – John Kormylo Jul 14 '23 at 15:19

1 Answers1

1

The package documentation of wrapfig explains:

LATEX calculates the number of short lines needed based on the height of the figure and the length \intextsep. You can override this guess by giving the first optional argument (parameter #1) specifying the number of shortened lines (counting each displayed equation as 3 lines). This is particularly useful when the surrounding text contains extra vertical spacing that is not accounted for automatically.

In your second example, the unnumbered section heading generates irregular vertical space.

Solution 1: Avoid section headings in the wrapped area. In the example, \lipsum{2-3} generates sufficiently many lines of text such that the heading is shifted below the wrapped figure.

enter image description here

\documentclass{report}
\usepackage{amsmath,caption,wrapfig}
\usepackage{lipsum,blindtext}
\usepackage[demo]{graphicx}
\usepackage[a4paper]{geometry}
\begin{document}
\section{A Simple Section}
\begin{wrapfigure}{r}{7.7cm}
        \centering
        \includegraphics[width=3in]{example.png}
        \captionsetup{font=scriptsize}
        \caption{Nam dui ligula, fringilla a, euismod sodales, sollicitudin vel, wisi. Morbi
auctor lorem non justo. Nam lacus libero, pretium at, lobortis vitae, ultricies et,
tellus. Donec aliquet, tortor sed accumsan bibendum, erat ligula aliquet magna,
vitae ornare odio metus a mi. Morbi ac orci et nisl hendrerit mollis. Suspendisse
ut massa. Cras nec ante. Pellentesque a nulla. Cum sociis natoque penatibus et}
        \label{wrapfig:label1}
\end{wrapfigure} 
\lipsum[2-3]
\subsection*{An unnumbered Section}
Nam dui ligula, fringilla a, euismod sodales, sollicitudin vel, wisi. Morbi
auctor lorem non justo. Nam lacus libero, pretium at, lobortis vitae, ultricies et,
tellus. Donec aliquet, tortor sed accumsan bibendum, erat ligula aliquet magna,
vitae ornare odio metus a mi. Morbi ac orci et nisl hendrerit mollis. Suspendisse
ut massa. Cras nec ante. Pellentesque a nulla. Cum sociis natoque penatibus et.
\end{document}

Solution 2: Add the number of lines as the first optional argument (\begin{wrapfigure}[14]...).

enter image description here

\documentclass{report}
\usepackage{amsmath,caption,wrapfig}
\usepackage{lipsum,blindtext}
\usepackage[demo]{graphicx}
\usepackage[a4paper]{geometry}
\begin{document}
\section{A Simple Section}
\begin{wrapfigure}[14]{r}{7.7cm}
        \centering
        \includegraphics[width=3in]{example.png}
        \captionsetup{font=scriptsize}
        \caption{Nam dui ligula, fringilla a, euismod sodales, sollicitudin vel, wisi. Morbi
auctor lorem non justo. Nam lacus libero, pretium at, lobortis vitae, ultricies et,
tellus. Donec aliquet, tortor sed accumsan bibendum, erat ligula aliquet magna,
vitae ornare odio metus a mi. Morbi ac orci et nisl hendrerit mollis. Suspendisse
ut massa. Cras nec ante. Pellentesque a nulla. Cum sociis natoque penatibus et}
        \label{wrapfig:label1}
\end{wrapfigure} 
\lipsum[2]
\subsection*{An unnumbered Section}
Nam dui ligula, fringilla a, euismod sodales, sollicitudin vel, wisi. Morbi
auctor lorem non justo. Nam lacus libero, pretium at, lobortis vitae, ultricies et,
tellus. Donec aliquet, tortor sed accumsan bibendum, erat ligula aliquet magna,
vitae ornare odio metus a mi. Morbi ac orci et nisl hendrerit mollis. Suspendisse
ut massa. Cras nec ante. Pellentesque a nulla. Cum sociis natoque penatibus et.
\end{document}
gernot
  • 49,614