如何使长垂直图像(使用wrapfig
)跨越两个来自exsheet
包的问题?以下代码不会产生令人满意的结果。
\documentclass{book}
\usepackage{lipsum}
\usepackage{wrapfig}
\usepackage[demo]{graphicx}
\usepackage{exsheets}
\begin{document}
\begin{wrapfigure}{r}{0.25\textwidth}
\includegraphics[width=3cm,height=8cm]{}
\end{wrapfigure}
\begin{question} \lipsum[1] \end{question}
\begin{question} \lipsum[2] \end{question}
\begin{question} \lipsum[3] \end{question}
\end{document}
问题是,所有后续问题都有一个奇怪的空白,直到我使用\clearpage
。
更新我发现了一个不完美的解决方案。如果只wrapfigure
与 中的前两个问题一起解决\parbox{}
,其他问题不会受到影响。但第二个练习中仍然有太多的白色垂直空间。可以通过指定 wrapfigure 中的“窄线”数量来调整它,如下所示:\begin{wrapfigure}[19]{r}{0.25\textwidth}
。但我仍在寻找一个完全自动化的解决方案。
答案1
这是我能想到的最佳替代方案。我通常用\wrapspacer
它来做方程式之类的东西,但不能打破问题环境。 \wrapskip
只需填充将被包装的剩余空间(如果可以包装的话)。
\documentclass{book}
\usepackage{wrapfig}
\usepackage{graphicx}
\usepackage{exsheets}
\usepackage{lipsum}
\newcommand{\wrapspacer}[1]% #1 = special text
{\ifhmode\par\fi\leavevmode\bgroup
\sbox0{\begin{minipage}{\linewidth}\hrule height0pt
#1\hrule height0pt
\end{minipage}}%
\dimen0=\dimexpr \ht0+\dp0\relax
\loop\ifdim\dimen0>\baselineskip
\strut\vspace{-\baselineskip}\newline
\advance\dimen0 by -\baselineskip
\repeat
\noindent\usebox0
\hrule height0pt
\egroup}
\makeatletter
\def\wrapskip{\ifnum\c@WF@wrappedlines>2
\advance\c@WF@wrappedlines by -2
\vspace{\c@WF@wrappedlines\baselineskip}%
\par\WFclear
\fi}
\makeatother
\begin{document}
\begin{wrapfigure}{r}{0.25\textwidth}
\includegraphics[width=3cm,height=8cm]{example-image}
\end{wrapfigure}
\wrapspacer{\begin{question} \lipsum[1] \end{question}}
\wrapskip
\begin{question} \lipsum[2] \end{question}
\begin{question} \lipsum[3] \end{question}
\end{document}