因此,我使用该包创建了一个两列的 Latex 文档multicol
。对于文本主体,代码如下所示:
\documentclass[11pt, A4]{article}
\usepackage{wrapfig}
\usepackage{graphicx}
\usepackage{multicol}
\begin{document}
\begin{multicol*}{2}
Some text...
\begin{figure}[H]
\centering
\includegraphics[width=\linewidth]{images/test.jpg}
\captionof{figure}{Caption}
\label{fig:my_label1}
\end{figure}
More text...
\end{multicol}
\end{document}
现在,我想让图形下方的文本 (Ut egestas mauris...) 环绕图形并填充前一列。我尝试使用,wrapfigure
但会产生以下结果:
\begin{wrapfigure}{r}{\linewidth}
\centering
\includegraphics[width=\linewidth]{images/test.jpg}
\captionof{figure}{Caption}
\label{fig:my_label1}
\end{wrapfigure}
这很接近了,但是图形应该移动到下一列,而文本则保留以填补空白。是否有任何选项wrapfigure
可以做到这一点,或者任何其他包?我想它唯一需要做的就是让文本只在图像的上方和下方换行,而不是在图像旁边换行。但是,我不太熟悉乳胶如何渲染这些东西,所以我不知道这是否可行。
答案1
此解决方案用于\split
在下一列的开头的段落中间插入一个框。它适用于右列和左列。
注意,multicols 设置\pagegoal
为包含所有列。
\documentclass[11pt, A4]{article}
%\usepackage{wrapfig}
\usepackage{graphicx}
\usepackage{multicol}
\usepackage{caption}
\usepackage{lipsum}% MWE only
\makeatletter
\newcommand{\split}[2]% #1 = text, #2 = insert
{\par\bgroup
\setbox0=\vbox{\strut #1\strut}% measure height
\sbox1{#2}% ditto
\dimen0=\dimexpr \pagegoal-\pagetotal-\col@number\baselineskip\relax% fudge factor
\dimen1=\pagegoal% compute height of one column
\ifnum\col@number>1\relax
\divide\dimen1 by \col@number
\fi
\advance\dimen1 by -\baselineskip% fudge factor
\loop\ifdim\dimen0>\dimen1% space left in this column
\advance\dimen0 by -\dimen1
\repeat
\dimen1=\dimexpr \ht1+\dp1+\textfloatsep\relax% space needed for insert
\ifdim\dimen1>\dimen0
\ifdim\ht0>\dimen0
\setbox2=\vsplit0 to \dimen0
\unvbox2
\noindent\box1
\vskip\textfloatsep
\unvbox0
\else% entire text will fit into column
\unvbox0
\vskip\textfloatsep% probably ignored
\noindent\box1
\vskip\textfloatsep
\fi
\else% insert will fit into column
\vskip\intextsep
\noindent\box1
\vskip\intextsep
\unvbox0
\fi
\egroup\par}
\makeatother
\begin{document}
\begin{multicols}{2}
\lipsum[1]
%\lipsum[2-4]% to test second column
\split{\lipsum[2]}{\begin{minipage}{\columnwidth}
\centering
\includegraphics[width=\linewidth, height=0.5\textheight]{example-image}
\captionof{figure}{Caption}
\label{fig:my_label1}
\end{minipage}}
\lipsum[3-6]
\end{multicols}
\end{document}