wrapfig 与 intextsep

wrapfig 与 intextsep

这是https://tex.stackexchange.com/a/266431/3929

考虑下面的 MWE。现在,忽略我们无法提供参数\wrapfigure,我想理解的是:

为什么如果我将\intextsep全局设置为零,则不会向包装的图形添加任何额外的垂直填充。但是不是足以将其在包装器环境中设置为零。乌尔里克已经回答了,它在示例中的第一个图像中确实消失了。但是尝试添加该部分,图像将向下移动。

为什么?

\documentclass{article}

\usepackage{wrapfig}
\usepackage{kantlipsum}

\newcommand\fig{\rule{3cm}{15mm}}

%\setlength\intextsep{0pt}

\newenvironment{mw}{%
  \setlength\intextsep{0pt}
  \wrapfigure[4]{l}{3cm}
}{\endwrapfigure}

\begin{document}

%\section{Test}

\begin{mw}
  \fig%
\end{mw}
\kant[1]

\begin{mw}
  \fig%
\end{mw}
\kant[1]
\end{document}

MWE 的结果:

在此处输入图片描述

添加部分的结果

在此处输入图片描述

\intextsep全局设置为零的结果

在此处输入图片描述

答案1

文档说

如果你将一个换行图放在 parbox 或 minipage 中,或者任何其他类型的分组中,则文本换行应该在组结束之前结束。

因此,如果您放入\wrapfig环境组,那么您也必须将您的(康德)文本放入其中。

答案2

由于您有一个非常具体的 wrapfig 并且不想传递选项,您可以在 wrapfig 内插入一个 vspace:

\documentclass{article}

\usepackage{wrapfig}
\usepackage{kantlipsum}
\def\mw{\wrapfigure[4]{l}{3cm}\ifdim\pagetotal=0pt \else\vspace{-\intextsep}\fi}
\let\endmw\endwrapfigure
\newcommand\fig{\rule{3cm}{15mm}}

\begin{document}

%\section{Test}

\begin{mw}
  \fig%
\end{mw}
\kant[1]

\begin{mw}
  \fig%
\end{mw}
\kant[1]


\end{document}

在此处输入图片描述

相关内容