我想知道是否存在一些包/代码可以满足以下三个标准:
较短的脚注,例如 Quine (1960, 22),将位于页面底部的中央,如果(且仅当)特定页面上只有一个脚注。
一旦在给定页面上出现较长的脚注,即具有多行并因此按照“通常”的脚注边距运行的脚注,则出现在同一页面上的较短的脚注将“适应”并与“通常”的左边距对齐。
此外,如果一页上同时出现两个甚至三个短脚注(无论是否存在较长的脚注),它们都会“变成”一个段落。也就是说,较短的脚注将全部位于一行中,但仍居中。
我这里没有任何 MWE,因为我的问题是关于这是否可能。手册和我所知道的所有来源都没有讨论这个问题(或者我没有找到它,在这种情况下我深表歉意)。
我现在正在读几本牛津大学出版社的最新书籍,它们确实有这种脚注设计,我很好奇是否可以使用 TeX/LaTeX/XeTeX 实现。我知道 footmisc、manyfoot 和 bigfoot,但它们的文档中都没有明确的说明可以解决这个问题。我认为,例如,manyfoot 可以通过引入不同的级别来帮助解决段落样式问题,但这样你就有不同的计数器,不同的脚注调用方式,这很复杂,或者至少不是理想的。我正在寻找一个更基本的解决方案。
非常感谢您的帮助。
答案1
此答案试图解决提问者问题的第 1 点和第 2 点,但没有解决第 3 点。此外,由于此答案使用了collect
,因此它存在要求用户\includecollection
在给定页面的最后一个脚注之后的缺点。这样一来,答案的价值就非常低了。
但是,我希望阅读此答案的人可能知道\includecollection
在每一页上自动实现此操作的方法。我尝试通过重新定义来实现\thepage
。但是,到那时,页面已经太旧而无法捕获脚注。
\documentclass{article}
\textheight 1in
\usepackage{collect}
\usepackage{ifthen}
\makeatletter
\let\sv@makefntext\@makefntext
\renewcommand\@makefntext[1]{\footform\sv@makefntext{#1}}
\makeatother
\definecollection{fntext}
\newcounter{startnote}
\setcounter{startnote}{1}
\newcounter{currentpage}
\setcounter{currentpage}{-1}
\newlength\indentlength
\setlength\indentlength{\textwidth}
\addtolength\indentlength{-\parindent}
\newcommand\myfootnote[1]{%
\ifthenelse{\equal{\value{page}}{\value{currentpage}}}{}{%
\setcounter{currentpage}{\value{page}}%
\def\footform{\centering}}%
\setbox0=\hbox{\footnotesize#1}%
\ifdim\wd0>\indentlength\gdef\footform{}\fi%
\footnotemark%
\begin{collect}{fntext}{\setcounter{footnote}{\thestartnote}\footform}{}
\stepcounter{startnote}%
\footnotetext{#1}%
\end{collect}
}
\begin{document}
This\myfootnote{short} is
a\myfootnote{Long long long long long long long long long long long long
long long long long long long long} test\myfootnote{third}.
\includecollection{fntext}
\clearpage
This\myfootnote{short} is a\myfootnote{second} test\myfootnote{third}.
\includecollection{fntext}
\end{document}
第 1 页:
第2页: