如何向双栏文章动态添加更宽的图形?

如何向双栏文章动态添加更宽的图形?

我有一篇双栏文章,仍在进行中。在这篇文章中,我必须不时添加一些图片,这些图片往往比单栏宽一点,但跨度要小一些。

我通常通过手动将图形移动到左侧\hspace*{-2cm}或(有时)通过移动到右侧来调整图形\hspace*{2cm},具体取决于图形是在左列还是右列。

由于本文仍在进行中,我有时会在图片上方添​​加文字,而文字可能会改变图片的当前位置,从右列移到左列,反之亦然。然后,图片会覆盖文字,请将示例与下面的模拟图片进行比较(请注意代码中的注释)。

每次我在图形上方添加文本时,如何才能LaTeX让图形自动移动,而无需手动向左或向右调整图形?

\documentclass[a4paper]{article}
\usepackage{multicol}
\usepackage{lipsum}
\usepackage{tikz}
\usepackage{float}
\begin{document}

\begin{multicols}{1}
\lipsum[1-3]
\begin{figure}[H]
  \centering
  \begin{tikzpicture} % this is how the mock figure does not suppose to be appear in the article
    \hspace*{-2cm}\draw circle (2); % hspace here only simulates a wide graph or image (I was otherwise not able to add a picture here)
  \end{tikzpicture}
  \caption{Figure in two column}
\end{figure}
\lipsum[3-4]
\begin{figure}[H]
  \centering
  \begin{tikzpicture} % this is how the mock figure suppose to appear in the article
    \hspace*{-2cm}\draw circle (2); % hspace only simulates a wide graph or image (see comment above)
  \end{tikzpicture}
  \caption{Figure in two column}
\end{figure}
\lipsum[5-6]
\end{multicols}
\end{document}

在此页面上,模拟图形以不理想的方式出现: 在此处输入图片描述

在此页面上,模拟图形以所需的方式显示: 在此处输入图片描述

答案1

如果您阅读了 multicol 的文档(例如,通过运行texdoc multicol),您将看到自 1.8 版本以来,multicol 支持\docolaction您正在寻找的内容:根据您最终所在的列执行不同的操作。

\documentclass[a4paper]{article}
\usepackage[colaction]{multicol}      % <--- add option
\usepackage{lipsum}
\usepackage{tikz}
\usepackage{float}



\newcommand{\Wfigure}[2]
    {\begin{figure}[H]
    \docolaction                                            %<--- select what to do 
       {\makebox[\columnwidth][r]{#1}}
       {\ERRORmiddle}                                 % fail in middlecolumn (lazy)
       {\makebox[\columnwidth][l]{#1}}
    \caption{#2}\end{figure}}


\begin{document}
\begin{multicols}{2}
\lipsum[1-3]
\Wfigure{%
  \begin{tikzpicture} 
    \draw rectangle (8,2);
  \end{tikzpicture}}
  {Figure in some column}
\lipsum[3-4]
\Wfigure{%
  \begin{tikzpicture} 
    \draw rectangle (8,2);
  \end{tikzpicture}}
  {Figure in some column}
\lipsum[5-6]
\end{multicols}
\end{document}

这将需要多次运行 LaTeX(因为它内部使用交叉引用),但你会得到:

在此处输入图片描述

其次是

在此处输入图片描述

在第二页稍后面一点。

相关内容