0

I want to use wrapfigure in the enumerate environment. For example,

\documentclass{article}
\usepackage{multicol, lipsum, graphicx, wrapfig}
\usepackage{enumitem}
\setlist{leftmargin=*}

\begin{document} \begin{multicols}{2} \lipsum[1-4] \lipsum[5][1-6] \begin{itemize} \begin{minipage}[t]{\linewidth} \begin{wrapfigure}{r}{60pt} \includegraphics[width=60pt, height=30pt]{example-image} \end{wrapfigure} \item \lipsum[5][7] \begin{itemize} \item \lipsum[5][8-9] \end{itemize} \end{minipage} \begin{itemize} \item \lipsum[5][10] \end{itemize} \begin{minipage}[t]{\linewidth} \begin{wrapfigure}{r}{50pt} \includegraphics[width=50pt, height=10pt]{example-image} \end{wrapfigure} \item \lipsum[5][11-16] \end{minipage} \item \lipsum[5][17-18] \end{itemize} \lipsum[5][19-] \lipsum[6-7] \lipsum[1] \end{multicols}\clearpage \begin{multicols}{2} \lipsum[1-4] \lipsum[5][1-6] \begin{itemize} \item \lipsum[5][7] \begin{itemize} \item \lipsum[5][8-9] \item \lipsum[5][10] \end{itemize} \item \lipsum[5][11-16] \item \lipsum[5][17-18] \end{itemize} \lipsum[5][19-] \lipsum[6-7] \lipsum[1] \end{multicols} \end{document}

(cf. here) However, it seems that the minipage effects (enlarges) the skip on the top and botton of the itemize eviroment:

enter image description here

Is there any way to reduce these redundant separations without modifying them one by one (by \vspace, for example)?

  • 2
    The documentation of wrapfig is very short but the one thing it does document is that it is incompatible with lists – David Carlisle Jul 04 '22 at 16:42
  • Yes, I know that. Is there any alternative package to wrapfig? – KiringYJ Jul 04 '22 at 16:47
  • I'm partial to paracol, although you have to manually break the paragraphs. There is a package based on \hangindent instead of \parshape, but I can't remember the name. – John Kormylo Jul 04 '22 at 18:05
  • Maybe it's https://ctan.org/tex-archive/macros/generic/insbox?lang=en ? That's plain TeX, though, so you never know. – Rmano Jul 04 '22 at 21:14

1 Answers1

0

First, minipage should go after \item. The first wrapfig was replaced by simply reducing the width of the text. The second wrapfig was replaced using \hangindent and overlapping the image.

For finer vertical placement, use \raisebox instead of valign.

\documentclass{article}
\usepackage[export]{adjustbox}% for [valign=...]
\usepackage{multicol, lipsum, graphicx, wrapfig}
\usepackage{enumitem}
\setlist{leftmargin=*}

\begin{document} \begin{multicols}{2} \lipsum[1-4] \lipsum[5][1-6] \begin{itemize} \item \lipsum[5][7] \begin{itemize} \item \begin{minipage}[t]{\dimexpr \linewidth-60pt-\columnsep} \lipsum[5][8-9] \end{minipage}\hfill\includegraphics[width=60pt, height=30pt,valign=t]{example-image}

  \item \begin{minipage}[t]{\linewidth}
    \hangindent=-\dimexpr 50pt+\columnsep\relax
    \hangafter=-2
    \lipsum[5][10]
    \end{minipage}\llap{\includegraphics[width=50pt, height=10pt, valign=t]{example-image}}
\end{itemize}
\item \lipsum[5][11-16]
\item \lipsum[5][17-18]

\end{itemize} \lipsum[5][19-] \lipsum[6-7] \lipsum[1] \end{multicols}\clearpage \begin{multicols}{2} \lipsum[1-4] \lipsum[5][1-6] \begin{itemize} \item \lipsum[5][7] \begin{itemize} \item \lipsum[5][8-9] \item \lipsum[5][10] \end{itemize} \item \lipsum[5][11-16] \item \lipsum[5][17-18] \end{itemize} \lipsum[5][19-] \lipsum[6-7] \lipsum[1] \end{multicols} \end{document}

John Kormylo
  • 79,712
  • 3
  • 50
  • 120