如何在 multicol 中将图形固定在列的顶部或底部?

如何在 multicol 中将图形固定在列的顶部或底部?

multicol环境中,我希望能够修复figure显示在列的顶部或底部(如在科学期刊中)。

figure环境无法使用multicol,我曾尝试使用wrapfig甚至创建minipage来执行此操作,但figure似乎总是被放置在文本中插入的位置,因此每次进行编辑时都必须移动它。

有没有办法强制figure将 定位在列的顶部或底部multicol

答案1

我认为,包装的设计multicol不允许这样做,并且不能允许这样做。

我能想到的只有一种其他选项,那就是使用标准[twocolumn]类选项或\twocolumn命令。真正的问题是最后一页上的列平衡。这个问题有几种可能的解决方案。

  1. 手动平衡各列。可以通过发出以下命令来完成在最后一页的第一栏(该值0.2必须手动调整):

    \raggedbottom\enlargethispage{-0.2\textheight}
    
  2. 使用包裹cuted应添加以下命令在文档的最后。唯一的问题是,如果最后一页几乎已满,则可能会创建一个额外的完全空白的页面。命令如下:

    \setlength{\stripsep}{-\baselineskip}\begin{strip}\end{strip}\leavevmode
    
  3. 使用包裹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来获得我想要的水平对齐。

请注意,在下图中,我的页面的布局(例如水平)是由于这是我的一个活跃项目的中间。

所描述场景的图像

相关内容