我对 有点问题multicols
。这是我的 MWE:
%%!TEX TS-program = latex
\documentclass[a4paper,11pt]{article}
\usepackage[frenchb]{babel}
\usepackage{multicol}
\usepackage[a4paper, dvips, left=1.5cm, right=1.5cm, top=2cm,%
bottom=2cm, marginpar=5mm, marginparsep=5pt]{geometry}
\begin{document}
\setlength{\columnseprule}{0.5pt}
\begin{multicols}{4}\noindent
\begin{enumerate}
\item $2 \times 4 = \ldots\ldots$
\item $45 \div 5 = \ldots\ldots$
\item $4 + 10 = \ldots\ldots$
\item $10 \times 10 = \ldots\ldots$
\item $\ldots\ldots - 3 = 6$
\end{enumerate}
\end{multicols}
\end{document}
这只会在前 3 列产生计算,但我想在第一列中放入第二个计算之前,先用一个计算填充前四列...
我怎样才能做到这一点?
答案1
我需要强行休息:
\documentclass[a4paper,11pt]{article}
\usepackage[frenchb]{babel}
\usepackage{multicol}
\usepackage[a4paper, dvips, left=1.5cm, right=1.5cm, top=2cm,%
bottom=2cm, marginpar=5mm, marginparsep=5pt]{geometry}
\begin{document}
\setlength{\columnseprule}{0.5pt}
\begin{multicols}{4}\raggedcolumns
\begin{enumerate}
\item $2 \times 4 = \ldots\ldots$
\item $45 \div 5 = \ldots\ldots$
\item $4 + 10 = \ldots\ldots$
\columnbreak
\item $10 \times 10 = \ldots\ldots$
\columnbreak
\item $\ldots\ldots - 3 = 6$
\end{enumerate}
\end{multicols}
\end{document}
答案2
简单的答案是:不,您无法以自动生成与您的用例相匹配的平衡的方式自定义多列平衡算法。
多列平衡方法基于以下假设:我们正在平衡从左到右逐列读取的文本,如果平衡无法找到使所有列保持相等长度的分割,则任何多余的空间都会放在最右边的列中。由于您的 MWE 要求第一列至少包含 2 行,因此该算法也会为其余列生成 2 行,从而使最后一列为空。
在您的示例中,只有公式(可能从左到右阅读更多,而不是从上到下),这可能看起来不太好。但对于普通文本(这是 multicol 旨在管理的),您格式化为 2+1+1+1 比 2+2+1+0 更差。
但事实是,非常短的列在任何情况下都不能很好地处理文本,通常需要手动干预和决策。目前,多列可以很好地平衡到一行,例如 1+1+1+1。但对于许多文本应用程序来说,强制(可自定义)最少 2 或 3 行甚至更好,即使这意味着某些列保持空白。
[附言:我看到方程式是编号的,但如果大多数人从左到右阅读,然后对方程式 1 感到惊讶,那么我不会感到惊讶。接下来是方程式 3。必须重新扫描。不要认为这是一种非常有效的展示方式。所以也许这种格式应该被一种更水平方向的方法所取代(通过longtable
或类似方法)。]