仅调整 intextsep 以适应 wrapfigure(续)

仅调整 intextsep 以适应 wrapfigure(续)

仅调整 intextsep 以适应 wrapfigure\intextsep,@Peter Grill 提供了一个仅修改wrapfigurefigure不受影响的选项。

然而,它对我来说并不适用:一旦wrapfigure文档中发生 a,后续figure也会受到影响,因此设置显然会“泄漏”到环境中。我在他的回答的评论中问过这个问题,他让我就我与 MWE 的问题提出一个新问题,所以我们就在这儿。

以下是显示该问题的 MWE:

\documentclass{article}

\usepackage{graphicx}

\usepackage{wrapfig}
\BeforeBeginEnvironment{wrapfigure}{\setlength{\intextsep}{0pt}}

\begin{document}

Some text initially.

\begin{figure}[hbt]
    \centering
    \includegraphics[width=.5\linewidth]{example-image-a}
    \caption{Notice how it is properly spaced above and below.}
\end{figure}

Now let’s add some wrapped figure.

\begin{wrapfigure}{r}{.3\linewidth}
    \includegraphics[width=\linewidth]{example-image-a}
\end{wrapfigure}

Asperiores est aspernatur dolorum sit. Expedita dolorum voluptatem iste. Eum
laudantium ipsum ea omnis aut fugiat harum quis. Ut repellendus est incidunt.
Esse cum a omnis. Explicabo odio inventore asperiores ex ad. Quidem quia
voluptatibus incidunt. Est dolores est perferendis dicta ullam inventore.
Deleniti ab enim accusantium sint qui voluptatem. Qui sed assumenda adipisci ad
reiciendis velit magnam. Nobis aut nihil quae est. Molestiae possimus quo quia
magnam et dicta odio. Est quia quasi rem vel omnis eveniet. Quasi rerum tempore
velit consequatur consequatur consectetur veritatis. Sed blanditiis et sed
libero consequatur sed. Numquam et ipsam rem. Sed facere aut ipsam. Tenetur
rerum et sed est aspernatur ipsa quia. Hic error ut maiores doloremque quas.
Error eum quae rerum modi debitis.

And now, a figure again.

\begin{figure}[hbt]
    \centering
    \includegraphics[width=.5\linewidth]{example-image-a}
    \caption{Notice how it is \emph{not} properly spaced above and below.}
\end{figure}

See the issue ?

\end{document}

并产生结果: MWE 输出

答案1

BeforeBeginEnvironment(现在的env/wrapfigure/before钩子)不起作用,因为它是在 wrapfig 创建的组之前,因此会影响下面的图形环境。

使用env/wrapfigure/begin钩子

\AddToHook{env/wrapfigure/begin}{\setlength{\intextsep}{0pt}}

也不起作用,因为它重置\intextsep得太早,这会混淆包装图的位置:

在此处输入图片描述

重置其中的值env/wrapfigure/after也不起作用。

您可以尝试在下一个图形之前重置它,但总的来说,我认为需要在这里修补 wrapfigure 的内部:

\documentclass{article}

\usepackage{graphicx}

\usepackage{wrapfig}
\usepackage{etoolbox}
\makeatletter
\patchcmd\WF@putfigmaybe{\lower\intextsep}{}{}{\fail}%
\AddToHook{env/wrapfigure/begin}{\setlength{\intextsep}{0pt}}
\makeatother
\begin{document}

Some text initially. 

\begin{figure}[hbt]
    \centering
    \includegraphics[width=.5\linewidth]{example-image-a}
    \caption{Notice how it is properly spaced above and below.}
\end{figure}

Now let’s add some wrapped figure. 

\begin{wrapfigure}{r}{.3\linewidth}
    \includegraphics[width=\linewidth]{example-image-a}
\end{wrapfigure}

Asperiores est aspernatur dolorum sit. Expedita dolorum voluptatem iste. Eum 
laudantium ipsum ea omnis aut fugiat harum quis. Ut repellendus est incidunt. 
Esse cum a omnis. Explicabo odio inventore asperiores ex ad. Quidem quia 
voluptatibus incidunt. Est dolores est perferendis dicta ullam inventore. 
Deleniti ab enim accusantium sint qui voluptatem. Qui sed assumenda adipisci 
ad reiciendis velit magnam. Nobis aut nihil quae est. Molestiae possimus quo 
quia magnam et dicta odio. Est quia quasi rem vel omnis eveniet. Quasi rerum 
tempore velit consequatur consequatur consectetur veritatis. Sed blanditiis 
et sed libero consequatur sed. Numquam et ipsam rem. Sed facere aut ipsam. 
Tenetur rerum et sed est aspernatur ipsa quia. Hic error ut maiores 
doloremque quas. Error eum quae rerum modi debitis. 

And now, a figure again.

\begin{figure}[hbt]
    \centering
    \includegraphics[width=.5\linewidth]{example-image-a}
    \caption{Notice how it is \emph{not} properly spaced above and below.}
\end{figure}

See the issue ?

\end{document}

在此处输入图片描述

相关内容