有时我很难让 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
,但我们可能需要对此进行调整。