为了从同一组源生成 html 和 pdf 文件,我需要将所有 wrapfigure 环境(包 wrapfig)转换为标准图形环境。一个例子是:
\begin{wrapfigure}[15]{i}{0pt}
\includegraphics[width=0.40\textwidth]{parabola}
\caption{La traiettoria bla bla.}
\label{fig:parabola}
\end{wrapfigure}
定义类似这样的内容(并且不加载 wrapfig 包):
\newenvironment{wrapfigure}[3]{\begin{figure}[htb]\centering}{\end{figure}}
可以工作,但在图像和标题之间留下了令人讨厌的 ']i0pt'。有什么想法吗(除了手动编辑生成的 html...)谢谢!
答案1
这wrapfig
手册指出语法是:
\begin{wrapfigure}[<number of narrow lines>]{<placement>}[<overhang>]{<width>}
<figure>
\end{wrapfigure}
请注意两个可选参数和两个强制参数。您需要定义一个替换参数来删除所有这些可能的参数。这可以通过使用环境参数删除前两个参数,然后使用 gobble 宏删除其他两个参数来实现:
\newcommand{\gobbleom}[2][]{}
\newenvironment{wrapfigure}[2][]
{\begin{figure}[htb]\centering\gobbleom}
{\end{figure}}
您还可以使用该xparse
包来定义具有两个这样的可选参数的环境:
\usepackage{xparse}
\DeclareDocumentEnvironment{wrapfigure}{omom}
{\begin{figure}[htb]\centering}
{\end{figure}}
如果您想重新定义非常复杂的宏或环境,使用xparse
非常有用。但是,如果您想减少使用的包的数量,我会选择第一种方法。