2010-07-12 36 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