我有一个嵌套的多列环境,如:
\begin{multicols}{2}
Text
\begin{multicols}{2}
lots of text
\end{multicols}
\end{multicols}
我的问题是嵌套环境变得比页面第一侧的剩余空间长,并将整个环境移到下一列。是否可以让它打破列上的嵌套多列环境,就像多列打破页面一样?
答案1
multicols
环境每次只工作一个,因此嵌套环境启动时,外部环境不会继续,直到完成。因此,内部环境不知道外部环境最终被分成列和页面所导致的任何可能的限制。它所看到的只是它在“盒子”内被调用(可以这么说)。如果发生这种情况,它将形成一个平衡的盒子,然后返回到外层。因此,这个盒子在外部形成一个单一的(牢不可破的)对象multicols
,因此如果它不适合,就会移动到下一列。
的目标multicols
是平衡列。在外层,它还必须处理分页符,但如果材料超过一页,则前几页只是从样张中剪切下来(样张已经完全处理 --- 即样张只是一堆字符框和空格,所有宏都早已处理完毕)。因此,要么整个方法需要完全不同,以便外部和内部可以相互作用,multicols
要么内部multicols
需要产生一个可破坏的对象(如果同时允许列的基线位于不同位置等,这实际上是不可能的)。然而,后一种方法会导致奇怪的格式,因为文本流会在列/页面之间来回跳转。
所以底线是,没办法(用multicols
)。
话虽如此,我记得你实际上可以结合使用“twocolumn”选项,multicols
这可能会给你想要的结果。但是,不能保证这在今天仍然有效。