wrapfig 后跟一个列表:第一个之后的项目无法正确换行

wrapfig 后跟一个列表:第一个之后的项目无法正确换行

当使用wrapfig环境后跟列表时,列表第一项的文本将环绕图形。因此,对于wrapfig具有左侧位置的,此文本从图形的右侧开始,并且当图形结束时,从页面的开头开始。

但是列表第二项的文本与页面的左边距很大,好像图形仍然存在(但实际上不存在)。如何使列表中的后续元素从页面的左边缘开始?

wrapfig 文档禁止将 wrapfig 环境“立即”放在列表环境之后或之前,但这里有一个段落和一些文本(所以不是立即的)

wrapfig同一文档甚至说跟随\par如果两者之间有换行符(),则为列表环境。

但没有提到wrapfig 其次是列表,如下所示(除了禁止紧随其后)

平均能量损失

\documentclass{article}
\usepackage{mwe} % for blindtext and example-image-a in example
\usepackage{wrapfig}
\usepackage{blindtext}
\begin{document}

\begin{wrapfigure}{l}{0.5\textwidth}
\centering
\includegraphics[width=.98\linewidth]{example-image-a}
\caption{A caption}
\end{wrapfigure}

List:
\begin{itemize}
    \item \blindtext
    \item \blindtext
\end{itemize}

\end{document}

行为图片

在此处输入图片描述

答案1

您可以通过将列表一分为二并使用包resume*的选项enumitem(第二个列表使用与第一个列表相同的参数)来解决您的问题。 键管理一个小的垂直校正before=。 不要忘记在列表的两个部分之间插入一个空白行。

\documentclass{article}
\usepackage{mwe} % for blindtext and example-image-a in example
\usepackage{wrapfig}
\usepackage{blindtext}
\usepackage{enumitem}
\begin{document}

\begin{wrapfigure}[12]{l}{0.5\textwidth}
  \centering
  \includegraphics[width=.98\linewidth]{example-image-a}
  \caption{A caption}
\end{wrapfigure}

List:
\begin{itemize}
  \item A first short item
  \item A second short item
  \item \blindtext
\end{itemize}

\begin{itemize}[resume, before = \vspace*{-\dimexpr\topsep+\partopsep\relax}]
  \item \blindtext
  \item \blindtext
\end{itemize}

\end{document} 

在此处输入图片描述

相关内容