multicols 環境中的註腳佈局

multicols 環境中的註腳佈局

我正在使用該包multicol排版一列(跨越整個文字寬度)標題和兩列主文字區塊。為此,我開始使用 multicols 環境以及文字區塊的開頭。一列標題跨越首頁文字高度的一小部分,我需要在啟動兩列環境之前在那裡設定腳註。我希望將該腳註排版在兩列運行文字的第一列下。我怎麼可能這麼做呢?

此外,我希望將腳註排版在其中一個文本列下的一列中——我什至不介意將它們作為兩列腳註,但我不想要的是跨越整個文本列的腳註佈局文本寬度。我嘗試過使用\twocolumnfootnotesclass memoir、 packages ledmacdblfnote、 甚至 with中的命令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仍然是「最佳」解決方案,所以…這是有原因的。

相關內容