在仅调整 intextsep 以适应 wrapfigure\intextsep
,@Peter Grill 提供了一个仅修改wrapfigure
且figure
不受影响的选项。
然而,它对我来说并不适用:一旦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}
答案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}