2010-07-12 239 views
0

我正在用LaTeX排版一本书。文本设计包括拉报价,这都应该是这个样子:LaTeX - 定义一个自定义'wrapfig'环境

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 ... 

拉引用排版se在我想要的地方下面的段落段落(在下一个拉引号的大概位置,它看起来像,或者在文件的末尾),并且正文不会被拉引用。是什么赋予了?我如何完成这项工作?

回答

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”作为曾经有过不同的使用的代码,这可能不是你想要的。您可以创建新的命令为开始{ENV}和结束{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} 
+0

你这么说是什么,它是由'\ newenvironment添加的额外咕'(其中*最终只是定义了两个新命令)破坏了事物?多么奇怪。但我可以接受一对'newcommand'的方法;谢谢。 – zwol 2010-07-13 23:58:59

+0

我做了一点实验。事实证明,由'\ begin'和'\ end'添加的额外粘性会破坏包装!只要你使用内部命令'\ myfig'和'\ endmyfig'代替'\ begin {myfig}'和'\ end',你就可以用'\ newenvironment {myfig}'来定义一个自定义的包装环境{myfig}'。仍然奇怪和(我会争辩)在wrapfig中的错误。 – zwol 2010-07-14 00:06:23