定义自定义“wrapfig”环境

定义自定义“wrapfig”环境

[这是https://stackoverflow.com/questions/3233031/latex-defining-a-custom-wrapfig-environment]

该包与和wrapfig进行的设置和拆卸交互很差。具体来说,这是不正确的排版:\begin\end

\documentclass{article}
\usepackage{wrapfig}
\newenvironment{pullquote}
  {\begin{wrapfigure}{o}{2in}\large}
  {\end{wrapfigure}}
\begin{document}
\begin{pullquote}
Chicken chicken
\end{pullquote}
Chicken chicken chicken chicken,
chicken chicken chicken chicken.
Chicken chicken, chicken chicken
chicken chicken chicken chicken
chicken chicken chicken chicken.
\end{document}

“拉引文”向下移动到文档末尾(或下一个包装图,如果有的话),并且我收到有关日志文件中包装环境之间冲突的警告。

但是这个排版正确(请注意 定义的内部宏的肮脏伎俩的使用\newenvironment):

\documentclass{article}
\usepackage{wrapfig}
\newenvironment{pullquote}
  {\begin{wrapfigure}{o}{2in}\large}
  {\end{wrapfigure}}
\begin{document}
\pullquote
Chicken chicken
\endpullquote
Chicken chicken chicken chicken,
chicken chicken chicken chicken.
Chicken chicken, chicken chicken
chicken chicken chicken chicken
chicken chicken chicken chicken.
\end{document}

我正在寻找关于如何修复 wrapfig 中这个明显错误的具体建议,据我所知,该错误已无人维护。

答案1

一个建议:将“肮脏的伎俩”转移到定义中。这似乎对我有用:

\documentclass{article}

\usepackage{wrapfig}
\newenvironment{pullquote}
  {\wrapfigure{o}{2in}\large}
  {\endwrapfigure}
\begin{document}

\begin{pullquote}
Chicken chicken
\end{pullquote}
Chicken chicken chicken chicken,
chicken chicken chicken chicken.
Chicken chicken, chicken chicken
chicken chicken chicken chicken
chicken chicken chicken chicken.
\end{document}

我从源代码中注意到,wrapfigure环境本身不是使用 定义的\newenvironment,而只是使用\def\wrapfigure{\wrapfloat{figure}}\let\endwrapfigure\endwrapfloat。不过,我不知道这是否与不良行为有关。

相关内容