使用 wrapfig 时出现重影

使用 wrapfig 时出现重影

有时我很难让 wrapfig 工作,但我不知道问题出在哪里。我简化了一个示例来向您展示这种效果。在此示例中,您将在实际图像下方的段落中看到重影图像位置。我可以通过将 wrapfig 进一步向下移动来避免此示例中的重影图像,在此示例中修复此问题的另一种方法是删除 \hspace{16pt}。在简化的示例中,修复此问题很容易,但在实际文档中的其他情况下,我发现几乎不可能解决此问题。我的问题是,人们有什么技巧可以避免使用 wrapfig 的问题,以及原因是什么?

\documentclass[11pt]{article}

\usepackage{wrapfig}
\usepackage{lipsum}  

\begin{document}

\textbf{Aim:}

\begin{wrapfigure}[8]{r}{0.34\linewidth}
\rule{3cm}{3cm}
\end{wrapfigure}

\hspace{16pt}  Draw an equilateral triangle.

\textbf{Construction:}

\lipsum{4}

\end{document} 

示例行为

答案1

如果你使用 2020-04-21 之前的 latex,你会得到

在此处输入图片描述

wrapfig文档规定包含换行文本的段落不应在剪切完成之前结束的组中开始。否则,wrapfig 会“忘记”它在哪里并重新开始剪切。

你的例子就像

{x}  Draw an equilateral triangle.

段落从x组内开始。你可以用以下方法修复这个问题

\leavevmode {x}  Draw an equilateral triangle.

因此该段落在 之前开始{

就你的情况来说,

\leavevmode\hspace{16pt}  Draw an equilateral triangle.

从而产生所需的输出。

用这个来开始一个段落有点奇怪,\hspace但我怀疑这应该被视为一个乳胶错误,特别是因为它一直工作到 2020 年。

要查看哪些ltspace.dtx发生了变化,请查看新旧版本:

% \begin{macro}{\@hspace}
% \changes{LaTeX2e}{1993/08/05}
%    {(RmS) Removed superfluous \cs{leavevmode} in \cs{@hspace} and
%               \cs{@hspacer}, as suggested by CAR.}
% \changes{v1.3m}{2020/04/21}{Support calc syntax (gh/152)}
%    \begin{macrocode}
%</2ekernel>
%<*2ekernel|latexrelease>
%<latexrelease>\IncludeInRelease{2020/10/01}%
%<latexrelease>                 {\@hspace}{Support calc with \hspace}%
\def\@hspace#1{\begingroup\setlength\skip@{#1}\hskip\skip@\endgroup}
%</2ekernel|latexrelease>
%<latexrelease>\EndIncludeInRelease
%    \end{macrocode}
%    
%    \begin{macrocode}
%<latexrelease>\IncludeInRelease{0000/00/00}%
%<latexrelease>                 {\@hspace}{Support calc with \hspace}%

%<latexrelease>
%<latexrelease>\def\@hspace#1{\hskip #1\relax}
%<latexrelease>\EndIncludeInRelease

\begingroup已添加一个小组来提供支持calc,但我们可能需要对此进行调整。

相关内容