将浮动元素放置在第二列末尾

将浮动元素放置在第二列末尾

我正在编写一个非常简单的海报类。两列中会有一些文本,右列末尾应该有一个文本框/一些浮动。将它们放在底部没有问题,如何将浮动对象始终放置在右列?

它看起来应该是这样的:

由于文本较多,在右栏浮动

但现在文字较少:

左栏浮动,文字较少

\newpage如果文本长度超过一列,使用可能会将其推送到第二页。

\documentclass[twocolumn]{article}
\usepackage{blindtext}
\usepackage{float}

\newfloat{foo}{!b}{foo}

\begin{document}
\blindtext[2] % change to 5 to push the foo-box to the second column

\begin{foo}
        here will be some sort of text box
\end{foo}

\end{document}

答案1

一个更困难的问题是,如果之后有更多的文本该怎么办。

\documentclass[twocolumn]{article}
\usepackage{blindtext}
\usepackage{float}

\newfloat{foo}{b}{foo}

\makeatletter
\newenvironment{foop}{\if@firstcolumn\newpage\leavevmode\fi
\foo}{\endfoo}
\makeatletter

\begin{document}
\blindtext[2] % change to 5 to push the foo-box to the second column

\begin{foop}[!b]% will be handled by \foo
        here will be some sort of text box
\end{foop}

\end{document}

相关内容