使包装图跨越两个表格问题

使包装图跨越两个表格问题

如何使长垂直图像(使用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}

相关内容