我已经创建了一个 wrapfig 环境
\newenvironment{usefulterms}{
\begin{wrapfigure}{l}[0pt]{0.05\textwidth}
\vspace{-15pt}
\includegraphics[width = 0.05\textwidth]{abc.jpg}
\vspace{-25pt}
\end{wrapfigure}
\noindent{\textbf{Useful Terms}} \\
\newline}
{\newline}
问题是,即使我指定了 0pt 的悬垂,它仍然位于边距中;
为什么这个命令被“违背”了?
谢谢
缺口
答案1
这是因为环境中的材料被放置在一个组内,这让人感到困惑wrapfig
。第 1 页包装文档,说
如果你将一个换行图放在 parbox 或 minipage 中,或者任何其他类型的分组中,则文本换行应该在组结束之前结束。
答案2
我知道我迟到了,但请注意,可以创建一个包含工作wrapfigure
环境的环境。
\documentclass[]{article}
\usepackage{environ}% to collect the body of the environment
\usepackage{etoolbox}% for \AfterEndEnvironment hook
\usepackage{wrapfig}
\usepackage{graphicx}
\usepackage{showframe}% to show that they don't go into the margin
\AfterEndEnvironment{afterend}{\AfterEnd}
\newcommand{\setafterend}[1]{%
\gdef\AfterEnd{%
\begin{wrapfigure}{l}[0pt]{2cm}%
\includegraphics[width=2cm]{example-image}%
\end{wrapfigure}%
#1%
}%
}
\NewEnviron{afterend}%
{%
\expandafter\setafterend\expandafter{\BODY}%
}
\begin{document}
\begin{afterend}
foo
\end{afterend}
\begin{afterend}
bar
\end{afterend}
\end{document}
答案3
稍后再加入讨论。wrapfig.sty 中提供了定义新环境的功能(见下文),但在这个带有小图像(图标)的示例中,包装肯定会在环境关闭之前完成。我认为它只需要\par
在末尾添加一个适当的 ,而不是\newline
。我还擅自调整了垂直间距
\newenvironment{usefulterms}{\par
\bigskip
\begin{wrapfigure}{l}[0pt]{0.05\textwidth}
\vspace{-15pt}
\includegraphics[width = 0.05\textwidth]{icon-image}
\vspace{-25pt}
\end{wrapfigure}
\noindent{\textbf{Useful Terms}}\\*[7pt]}
{\par\bigskip}
我不确定负\vspace
s 的用途,所以我保留了它们,但我认为它们的部分目的是抵消\intextsep
,可以在环境中将其设置为零。
关于创建新环境,即使是 wrapfig 环境也是根据和定义的\wrapfloat
,\endwrapfloat
它们旨在用于新环境定义。这不是一个神奇的解决方案,因为图形和包装将尝试在新环境结束后启动,而不是在新环境内启动。因此,解决方法是在新环境中启动布局。
\makeatletter
\newenvironment{sillytimes}{\par
\mbox{}\par
\setlength{\intextsep}{0pt}
\wrapfloat{figure}{l}[0pt]{5pt}
\rule{5pt}{45pt}% Instead of an image, use a rule
\endwrapfloat
\WF@startfloating % Perform placement here
\noindent\textbf{Silly Times}\\*[7pt]}
{\par\mbox{}\par\aftergroup\par}
在此定义中,\WF@startfloating
在以下位置启动放置\noindent
。这里不是图像,而是一条又高又粗的线。我将更改为,以便\bigskip
行\mbox{}\par
数更接近垂直位置。有助于\aftergroup\par
确保换行在环境之后的文本中适当结束或继续。