我可以强制浮动仅出现在“双列”文章布局的左列吗?

我可以强制浮动仅出现在“双列”文章布局的左列吗?

我为一家采用双栏布局的杂志社工作。双栏左侧有一些额外的空白空间,图片、表格和文本框可以占据​​这些空白空间,使它们更加突出,请参见下面的一些示例。图片被包裹在环境中,adjustwidth以使其从左侧弹出,例如: 在此处输入图片描述

我遇到的问题是(可以预见的)有时 LaTeX 认为数字应该放在右列,这会导致如下令人不快的情况: 在此处输入图片描述

我想要 LaTeX总是将数字放在左栏,有什么办法吗?

我尝试过/考虑过的事情:

  1. 只需移动图形,直到它移动到左列即可。这种方法可行,但 a) 当图形很多时,可能需要花费大量时间,并且文本中的细微变化非常敏感;b) 我理想情况下也希望使用 TeX 文件来生成 HTML 版本,因此理想情况下图形应该位于文本中有意义的位置(例如,在某一节的末尾)。
  2. \FloatBarrier不是很有帮助。
  3. \newpage- 手动打破这一局面也不太好。
  4. 只使用裸的\includefigure\tabular,所以没有浮动。这通常会以不太讨人喜欢的方式破坏文本,我希望数字浮动,但不在正确的列中。
  5. 该包multicol:据我所知,该包根本不允许浮动。

请参阅此 MWE:有没有办法让图 B 出现\section{More Figures}在代码中但出现在左栏?(对于我来说,图形出现在哪一页并不重要,只要它接近即可)

\documentclass[twocolumn]{article}

\usepackage{graphicx}
\usepackage{changepage}
\usepackage{kantlipsum}
\usepackage[left=20em]{geometry}

\begin{document}

\begin{figure}
  \begin{adjustwidth}{-15em}{}
    \includegraphics[width=\linewidth]{example-image-a}
  \end{adjustwidth}
\end{figure}

\kant[1]

\section{Introduction}

\kant[2-4]

\begin{figure}
  \begin{adjustwidth}{-15em}{}
    \includegraphics[width=\linewidth]{example-image-b}
  \end{adjustwidth}
\end{figure}

\section{More Figure}

\kant


\end{document}

在此处输入图片描述

谢谢你!

答案1

这修改了部分\output检查\if@firstcolumn

\documentclass[twocolumn]{article}

\usepackage{graphicx}
\usepackage{changepage}
\usepackage{kantlipsum}
\usepackage[left=20em]{geometry}

\makeatletter
\let\@leftfloatplacement=\@floatplacement
\def\@rightfloatplacement{\global\@topnum=0
  % Textpage bit, global:
  \global\@toproom=\z@
  \global\@botnum=0
  \global\@botroom=\z@
  \global\@colnum=0
  % Floatpage bit, local:
  \@fpmin=\@colht}
\def\@floatplacement{\if@firstcolumn\@leftfloatplacement
  \else\@rightfloatplacement
  \fi}
\makeatother
  

\begin{document}

\begin{figure}
  \begin{adjustwidth}{-15em}{}
    \includegraphics[width=\linewidth]{example-image-a}
  \end{adjustwidth}
\end{figure}

\kant[1]

\section{Introduction}

\kant[2-4]

\begin{figure}
  \begin{adjustwidth}{-15em}{}
    \includegraphics[width=\linewidth]{example-image-b}
  \end{adjustwidth}
\end{figure}

\section{More Figure}

\kant

\end{document}

答案2

@JohnKormylo 的回答很好,但它可能会在页面上放置一个图n当引用位于页面第 1 列时 +1n.这完全取决于图形输入在源文件中出现的位置。

当仍有空间将图形输入放置在输出中的预期位置时,图形输入必须始终出现在源文件中。因此,如果图形的引用位于第一列的中间位置,而图形输入直到引用之后才包含,则它将被保留到下一页。如果输入是“延迟的”,则第二列中引用的所有浮点数都将保留到后面的页面,即使同一页面上有足够的空间。

建议的方法是手动的。最好等到文本最终完成,但它可以让你完全控制。将输入放置在图形上图形显示页面的开始文本。浮点输入最好以垂直模式包含,其上方和下方各有一空白行。将每个浮点放在单独的文件中(至少是暂时的)可能是有意义的,这样可以轻松移动它们。在输出中的位置固定后,详细代码始终可以移动到主源文件中。

相关内容