在multicol
环境中,我希望能够修复figure
显示在列的顶部或底部(如在科学期刊中)。
该figure
环境无法使用multicol
,我曾尝试使用wrapfig
甚至创建minipage
来执行此操作,但figure
似乎总是被放置在文本中插入的位置,因此每次进行编辑时都必须移动它。
有没有办法强制figure
将 定位在列的顶部或底部multicol
?
答案1
我认为,包装的设计multicol
不允许这样做,并且不能允许这样做。
我能想到的只有一种其他选项,那就是使用标准[twocolumn]
类选项或\twocolumn
命令。真正的问题是最后一页上的列平衡。这个问题有几种可能的解决方案。
手动平衡各列。可以通过发出以下命令来完成在最后一页的第一栏(该值
0.2
必须手动调整):\raggedbottom\enlargethispage{-0.2\textheight}
使用包裹
cuted
。应添加以下命令在文档的最后。唯一的问题是,如果最后一页几乎已满,则可能会创建一个额外的完全空白的页面。命令如下:\setlength{\stripsep}{-\baselineskip}\begin{strip}\end{strip}\leavevmode
使用包裹
balance
。\balance
但是,这个包不可靠,并且会破坏垂直间距。使用方法很简单:在最后一页的第一列发出命令。
或者当然,您可以等待 LaTeX3 团队完成新的输出程序xor
,但这可能需要一些时间。
答案2
我当前的解决方案大致如下:
\begin{document}
\begin{multicols*}{4}
% ===== First TWO columns of content =====
\lipsum[1-5]
\columnbreak
\lipsum[1-5]
\columnbreak
% ===== End of my first two columasn =====
% Fill the third column, which I want blank:
\vfill\null
\columnbreak
% include graphics in minipage, set the anchor to top, then use \raggedleft
% to produce an image at the bottom-right of my last column / the page:
\vspace*{\fill}
\begin{minipage}[t]{\columnwidth}
\raggedleft
\includegraphics[width=40px]{{myImg.png}}
\end{minipage}
\end{multicols*}
\end{document}
正如我在代码注释中写的那样,我结合使用了本文和类似帖子中提到的内容,其中我使用\vfill\null
和\columnbreak
来生成一个空列。然后,在最后一列中,就我的情况而言,我对列底部的图像感兴趣,该图像位于右侧(看起来好像位于页面的右下角)。因此,我使用的组合来\vspace*{\fill}
填充列的垂直空间,并使用固定的迷你页面t
来放置图像,而不会被页面底部切断。在迷你页面中,我使用它\raggedleft
来获得我想要的水平对齐。
请注意,在下图中,我的页面的布局(例如水平)是由于这是我的一个活跃项目的中间。