
我是 Latex 的新手(使用 xelatex),我正在嘗試編寫一個包含大量簡短腳註的文檔。我正在使用para
和perpage
。
我已經嘗試過para
和bigfoot
。footmisc
我已經嘗試perpage
過從footmisc
、perpage
和bigfoot
。然而,在這些的所有組合中(當我最終編譯一些東西時),我最終會遇到一種競爭條件,例如,頁面將以腳註 27 和 28 開頭。當我重新運行 xetex 時,腳註最終位於上一頁,但編號為 1 和 2,下一頁從腳註 3 開始。
換句話說,兩位數字的腳註編號似乎處於將單字包裝到下一頁的閾值處。當 xetex 再次運行時(單字和腳註位於下一頁),腳註編號會按每頁降低,這會導致單字回繞到上一頁。
我可以無限地重新運行 xetex,但編號/間距不穩定。我可以舉一個可行的例子,但它不會是“最小的”,因為文件通常很長。他們也大多是希臘人。
[編輯:]就像我說的,我是 Latex 新手,看起來整個系統有點脆弱。如果有正確的方法™ 可以做到這一點,我會洗耳恭聽。不過,我認為可能有幫助的一件事是是否有一種方法可以設定最小腳註寬度。我認為任何一頁都沒有 100 個腳註,因此只需將寬度固定為足夠寬以容納兩個最寬的數字即可。我不知道這是否可能,但這將使腳註數字可以預測換行。
答案1
標準 LaTeX 註腳標記排版在寬度剛好足以容納其內容的方塊中。這是透過\@makefnmark
以下定義的命令完成的ltfloat.dtx
:
\def\@makefnmark{\hbox{\@textsuperscript{\normalfont\@thefnmark}}}
按照你的評論,我將展示如何更改此定義,以便在所有寬度相同的框中排版腳註標記。恐怕這對於小(例如一位數)腳註數字來說會很難看......
對於所有腳註標記框共享的公共寬度,我們將使用標準腳註的自然寬度和大小00
。\normalfont
如果您想以更直接的方式固定寬度(不適應文檔字體),您可以使用類似\setlength{\myfootnotemarkwidth}{4mm}
.
由於腳註標記框在此設定中具有固定寬度,因此您需要選擇內容在框中的對齊方式。下面的完整範例中使用的以下內容將每個腳註標記置於其框中的中心:
\renewcommand*\@makefnmark{%
\hbox to \myfootnotemarkwidth{%
\hfil\@textsuperscript{\normalfont\@thefnmark}\hfil
}%
}
如果您喜歡左對齊或右對齊,只需刪除其中一個\hfil
命令即可。
\myfootnotemarkwidth
如果腳註標記對於所選框寬度(在我的程式碼中)來說太大,這將正確地產生過滿\hbox
警告。正如我從你的問題中了解到的,溢出的情況可能是暫時的,perpage
並且在下一次 LaTeX 運行時必然會消失。也就是說,如果您對\hbox
第一次運行時的過滿警告感到太煩惱(為什麼?),您可能需要替換\hfil
為\hss
;但請注意,如果這樣做,腳註標記可能會與附近的文字重疊,而不會得到通知。因此,在進行此類更改之前,請仔細權衡利弊。
這是完整的範例:
\documentclass{article}
\makeatletter
\newlength{\myfootnotemarkwidth}
% Compute the width of a standard footnote mark numbered 00 (two digits) in
% \normalfont.
\AtBeginDocument{%
\settowidth{\myfootnotemarkwidth}{\@textsuperscript{\normalfont 00}}%
}
\renewcommand*\@makefnmark{%
\hbox to \myfootnotemarkwidth{%
\hfil\@textsuperscript{\normalfont\@thefnmark}\hfil
}%
}
\makeatother
\begin{document}
Some text\footnote{The footnote text.} to show the width of the footnote mark.
And now a high-numbered\footnote[99]{Other footnote text.} footnote.
\end{document}
頁面頂部:
頁面底部:
如果您希望\footnotetext
命令使用的腳註標記(即腳註的「目標」位置,位於頁面正文的底部)保留其通常的格式,您可以這樣修改前面的範例:
\documentclass{article}
\usepackage{etoolbox}
(...)
\AtBeginDocument{(...)
}
\let\@latex@makefnmark\@makefnmark
\patchcmd{\@makefntext}{\@makefnmark}{\@latex@makefnmark}{}{\FAILED}
\renewcommand*\@makefnmark{%
(...)
那麼範例的頁腳將如下所示(數字「1」比上面顯示的完整範例更接近單字「The」):