LaTeX - 定义自定义'wrapfig'环境

时间:2010-07-12 23:21:13

标签: latex

我正在用LaTeX排版一本书。文本设计包括拉引号,它应该看起来像这样:

Chicken chicken chicken chicken  -------------
chicken chicken chicken chicken     CHICKEN
chicken chicken chicken chicken     CHICKEN
chicken chicken chicken chicken  -------------
chicken chicken chicken chicken chicken chicken

所以,wrapfig.sty似乎它具有我需要的基本机制,我只需要定义一个执行水平规则,居中和更大类型的环境。问题是wrapfigure似乎不想嵌套在环境定义中。如果我在我的文本体中有这个,它可以工作

\begin{wrapfigure}{o}{2in}
\large chicken chicken
\end{wrapfigure}

但如果我在序言中这样做

\newenvironment{pullquote}
  {\begin{wrapfigure}{o}{2in}\large}
  {\end{wrapfigure}}

然后我

\begin{pullquote}
chicken chicken
\end{pullquote}

我收到此错误消息:

Package wrapfig Warning: Collision between wrapping environments ...

拉引号是在我想要的下面几个段落排版(在下一个拉引号的大致位置,它看起来像,或者在文档的末尾)和正文没有被拉引号包裹起来。是什么赋予了?我如何使这项工作?

1 个答案:

答案 0 :(得分:1)

我没有完全理解它,但我怀疑它是因为wrapfigure本身就是图浮动环境的包装。

我想我在这里找到了一个解决方案/解决方法: http://texblog.net/latex-archive/plaintex/expandafter/

我认为这段代码可以满足您的需求:

\documentclass{article}
\usepackage{wrapfig}
\raggedright
\expandafter\def\expandafter\wrapfigure\expandafter{\wrapfigure{o}{2in}\large\raggedright}

\begin{document}

chicken chicken chicken chicken chicken chicken chicken chicken
chicken chicken chicken chicken chicken chicken chicken chicken
chicken chicken chicken chicken chicken chicken chicken chicken
\begin{wrapfigure}
CHICKEN CHICKEN
CHICKEN CHICKEN
\end{wrapfigure}
chicken chicken chicken chicken chicken chicken chicken chicken
chicken chicken chicken chicken chicken chicken chicken chicken
chicken chicken chicken chicken chicken chicken chicken chicken

\end{document}

上面使用的代码重新定义了'wrapfigure'以使用不同的东西,这可能不是你想要的。您可以为begin {env}和end {env}创建新命令,使“wrapfigure”本身保持不变,如下所示:

\documentclass{article}
\usepackage{wrapfig}
\raggedright

\newcommand{\myfigstart}{\begin{wrapfigure}{o}{2in}\large\raggedright}
\newcommand{\myfigend}{\end{wrapfigure}}

\begin{document}

chicken chicken chicken chicken chicken chicken chicken chicken
chicken chicken chicken chicken chicken chicken chicken chicken
chicken chicken chicken chicken chicken chicken chicken chicken
\myfigstart
CHICKEN CHICKEN CHICKEN CHICKEN
\myfigend
chicken chicken chicken chicken chicken chicken chicken chicken
chicken chicken chicken chicken chicken chicken chicken chicken
chicken chicken chicken chicken chicken chicken chicken chicken

\end{document}