我尝试使用布尔控制来实现在wrapfigure
和figure
环境之间的切换。但出于某种原因,wrapfigure 并没有做它应该做的事情 - 被包装起来,而是被放在文本的末尾。
\documentclass{article}
\usepackage{graphicx}
\usepackage{wrapfig}
\usepackage{lipsum}
\usepackage{ifthen}
\newboolean{Figure}
\setboolean{Figure}{true}
\newenvironment{WrapFigure}[3]
{
\ifthenelse{\boolean{Figure}}{\begin{wrapfigure}[#1]{#2}{#3}}{\begin{figure}}
}
{
\ifthenelse{\boolean{Figure}}{\end{wrapfigure}}{\end{figure}}
}
\begin{document}
\lipsum[1-2]
\begin{WrapFigure}{14}{r}{0.35\linewidth}
\centering
\includegraphics[draft,width=0.38\linewidth]{NICE Figure.pdf}
\caption{XXXXXXXX XXXXXXXXXXXXXX XXXXXXXXXXXXX }
\end{WrapFigure}
\lipsum[1-2]
\end{document}
答案1
您正在使用周围组wrapfigure
,这会使它窒息。
\documentclass{article}
\usepackage{graphicx}
\usepackage{wrapfig}
\usepackage{lipsum}
\usepackage{ifthen}
\usepackage{xparse}
\newboolean{Figure}
\setboolean{Figure}{true}
\NewDocumentEnvironment{WrapFigure}{omm}
{%
\ifFigure
\IfNoValueTF{#1}
{\wrapfloat{figure}{#2}{#3}}
{\wrapfloat{figure}[#1]{#2}{#3}}%
\else
\figure
\fi
}
{%
\ifFigure
\endwrapfloat
\else
\endfigure
\fi
}
\begin{document}
\lipsum[1-2]
\begin{WrapFigure}[14]{r}{0.35\linewidth}
\centering
\includegraphics[draft,width=0.38\linewidth]{NICE Figure.pdf}
\caption{XXXXXXXX XXXXXXXXXXXXXX XXXXXXXXXXXXX }
\end{WrapFigure}
\lipsum[1-2]
\end{document}
(\ifFigure
我认为,在这种情况下,语法更简单)。使用xparse
很容易保留 的语法wrapfig
。