我是 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”):