多列环境中的脚注布局

多列环境中的脚注布局

我正在使用该包multicol排版单列(横跨整个文本宽度)标题和双列主文本块。为此,我从文本块的开始开始多列环境。单列标题横跨首页文本高度的一小部分,我需要在启动双列环境之前在那里设置脚注。我想将该脚注排版在双列连续文本的第一列下。我怎么可能做到这一点?

此外,我希望将脚注排版在文本列之一下的单列中 - 我甚至不介意将它们作为两列脚注,但我不希望脚注布局跨越整个文本宽度。我尝试使用\twocolumnfootnotes类中的命令memoir,使用包ledmac,,dblfnote甚至使用ftnright(后者抱怨它在单列文档中使用,因为该标题为单列)。在这种情况下,没有一个被证明是有用的。作为一个非 MWE,只是为了更具体地描述我的场景,让我们考虑:

\documentclass{memoir}

\usepackage{multicol}

\begin{document}

A single-column heading\footnote{Here I have my footnote.}

\begin{multicols}{2}
Here I am in the two-column environment, and I want my footnotes being set in accordance with the document's ``columnwidth''.\footnote{A footnote in the two-column environment.}
\end{multicols} 

\end{document}   

答案1

有许多原因导致无法提供您想要的布局multicols。其中两个重要原因是:

  • 顾名思义,代码应该支持同一页上的不同列数。那么脚注应该有多宽呢?全文宽度很丑陋,但如果与其余列设置不相符,其他任何宽度也一样丑陋。即使规范减少到“一列和两列并平衡”,如果你有一个脚注(两列宽度),但页面底部最终是一列,它仍然很丑陋。

  • 从技术上讲,multicols它的工作原理是收集一页的材料,然后拆分列(如果最后需要平衡,则可能会重试许多(数百种)方案以找到最佳的平衡解决方案)。现在,它通过使用\vsplit并将\vsplit脚注材料保存在框内来实现。因此,通过使用这种方法,您不能将脚注材料用作列本身的一部分(或作为平衡的一部分)。当然,现在可以使用不同的方法,涉及一组输出例程,这些例程在主垂直列表上完成所有这类工作,而不是安全地使用框中已经收集的材料。但是,这将是一个很好的因素,更复杂,因此真正复杂的输出例程通常会限制自己解决受限问题。

现在 TeX 是图灵完备的,正如您在评论中提到的那样,但这最初不会对您有太大帮助。这并不意味着用 TeX 编写所有东西都是可行的,即使可行,您也可能最终放弃 TeX 在某个领域提供的全部或大部分功能,并以相当低效的方式自己重新编程,只是为了克服内置限制。直到最近,最大的障碍是这样做也意味着处理最终会变得非常慢或达到内存限制。

近几年,这种情况已经大大改善,这也是为什么现在可以提出一个编程框架(如expl3)的原因之一,该框架为在 TeX 中扩展 TeX 的功能提供了基础。在multicols最初编写时,不可能想象在 TeX 中实现一个完整的正则表达式解析器(不是技术上而是现实上),现在我们在中有一个expl3

底线是,TeX 的设计是针对单列文档而设计的,超出此范围的任何操作几乎都是不可能的,或者只能在受限的场景下实现。

如今,我们可以做得更好,我们在抽屉中确实有一个不同的页面设计概念,它确实提供了你正在寻找的东西。问题是,它还没有准备好。它的原型已经是 2000 年的了,但那时它仍然是乌托邦,因为它施加了速度限制。

情况已经发生了变化,所以现在类似的东西expl3是一个可以(并且正在)真正使用的平台,我们目前正在修改上世纪末的代码和想法。现在这听起来太老了,不是吗?但事实是,对于当前来说,LaTeXmulticol仍然是“唯一”的解决方案,所以... 这是有原因的。

相关内容