在多列中的起始列表后插入单列图像

在多列中的起始列表后插入单列图像

我正在写考试。使用 2 列布局\begin{multicols}{2},效果很好。

考试是一组多项选择题;因此我有一个嵌套的枚举,在多列开始之后立即开始,并在多列之前立即结束。

到目前为止,一切都很好。

问题是,偶尔会有一批问题引用图表或表格。在这种情况下,我希望将此类图表/表格插入到单个列中(即跨越两列),以便清晰易读。

当然,由于我已经在枚举中,如果我尝试结束多列、插入图表并再次开始多列,LaTeX 会抛出错误。

我看到float有人提到过,但不确定它是否有效。要清楚的是,如果插入/浮动的对象跨越我的多列环境的所有列,这是 100% 可以接受的。

我已经尝试过了figure,但是这个环境里面的任何东西都会完全消失。

\begin{figure}[t]
    \exbatch{Questions 4 is based on the following table: }
    \includegraphics{test1_q4_sample}
    \end{figure}

部分解决:{figure}{figure*}环境替换,它有点起作用了 -h放置仍然不起作用。t起作用,但将图像推送到下一页,不管页面上图形之前是否有东西。

事实证明这个问题没有解决办法,并且{figure*}环境没有h,这解释了上述问题。

答案1

这就是您想要实现的目标吗?

顺便说一句,我知道emumitem支持一个[resume*]选项,但它似乎只能在本地起作用,而不是在全球范围内。

\documentclass{article}
\usepackage{multicol}
%\usepackage{enumitem}
\newcommand{\savenum}{}% reserve global name

\usepackage{blindtext}% MWE only

\begin{document}

\begin{multicols}{2}
\begin{enumerate}
\item Bla
\item Bla
\item Bla
\item Bla
\xdef\savenum{\theenumi}% current counter
\end{enumerate}
\end{multicols}

\begin{figure}[ht]
\caption{\blindtext}
\end{figure}

\begin{multicols}{2}
\begin{enumerate}
\setcounter{enumi}{\savenum}% global resume*
\item Bla
\item Bla
\item Bla
\item Bla
\end{enumerate}
\end{multicols}

\end{document}

根据 leandriis 的评论:

\documentclass{article}
\usepackage{multicol}
\usepackage{enumitem}

\usepackage{blindtext}% MWE only

\begin{document}

\begin{multicols}{2}
\begin{enumerate}[series=questions]
\item Bla
\item Bla
\item Bla
\item Bla
\end{enumerate}
\end{multicols}

\begin{figure}[ht]
\caption{\blindtext}
\end{figure}

\begin{multicols}{2}
\begin{enumerate}[resume=questions]
\item Bla
\item Bla
\item Bla
\item Bla
\end{enumerate}
\end{multicols}

\end{document}

答案2

从你的问题来看,很难理解你在做什么,因为你的问题措辞如下:

因此我有一个嵌套的枚举,在多列开始之后立即开始,并在多列之前立即结束。

我猜你只是使用begin{multicols}{2}...\end{multicols}作为你的答案选择(或者可能是问题本身)。

因此我会考虑两种可能的情况:

场景 1:你实际上不需要figure环境

既然您正在谈论使用h位置并且您的示例没有显示您使用\caption命令,那么您为什么不直接写:

\exbatch{Questions 4 is based on the following table: }
\includegraphics{test1_q4_sample}

您希望图形出现在哪里而不将其包裹起来figure

我不知道它\exbatch的作用是什么,但它似乎是在给你的图形贴上某种标签。你可能想定义一个新命令,将两个命令包装成一个命令,也许还可以用{\centering……将它们包围起来},但之后你就可以继续写考试了。

场景 2:你确实需要一个figure环境

从您的描述来看,这似乎不太可能,但假设您确实想要有浮动数字,请不要使用multicols两列的环境。而是使用 LaTeX 的内置\twocolumn命令。在某些方面,它比 更强大,multicols而在其他方面则更弱。您得到的是:

  • 包括脚注的单列浮动

您的损失:

  • 自动平衡文档末尾的列
  • 页面中间在两列和单列之间切换(但请参见下文)

可以将单列材料放在页面顶部两列开始的位置,但这种功能有限。这可以通过使用命令中的可选参数来管理\twocolumn,例如:

\twocolumn[\maketitle]

还要注意,如果您正在使用其中一个基础文档类,例如article,则文档类上有一个twocolumn选项,它会在将文档的其余部分排版为两列之前,自动将标题放入第一页的全宽中。

相关内容