我正在写考试。使用 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
选项,它会在将文档的其余部分排版为两列之前,自动将标题放入第一页的全宽中。