使用 bigfoot 修复脚注分隔问题

使用 bigfoot 修复脚注分隔问题

我在环境中使用bigfoot针对关键版本的脚注的包verse。我定义了两个不同的脚注(A 和 B)。我需要修复它们之间的分隔,即从 A 脚注的最后一个注释到 B 脚注上方的脚注标尺之间的空间。问题是,当页面在不同位置分页时,这种分隔会有所不同。

\\*由于分页符是由包的命令共同定义的verse(这排除了分页符;以避免出现孤行和孤行),情况可能会变得非常复杂。下面我提供了一个 MWE 和问题的说明。“重新定义脚注标尺上方和下方的空间”的代码由 Maïeul 提供这里

\documentclass[12pt]{book}
\usepackage{polyglossia}
\usepackage{verse}
\usepackage[showframe]{geometry}
\setdefaultlanguage{greek}
\setotherlanguage{english}
\newfontfamily\greekfont[Script=Greek,Ligatures=TeX]{Times New Roman}

\usepackage[para]{bigfoot}
\def\extrafootnoterule{\defaultfootnoterule}
\interfootnotelinepenalty=10000

\DeclareNewFootnote[para]{A}
\DeclareNewFootnote[para]{B}
\def \mylinespacing {1.05}
\expandafter\def\csname @makefnbreak\endcsname{\unskip\linebreak[0]\quad}

%%%%%%%%%%%%%%%%% Redefines the space above and below the footnote rulers
\makeatletter
\newcommand{\before}{2.52pt}%Space before rule
\newcommand{\after}{10.52pt}% Space after rule
\renewcommand{\footnoterule}{%Redefine footnoterule
\hrule width 3cm
\kern \after}
% Change the space kept for rules+spaces around
\advance\skip\footins by \after
\advance\skip\footins by \before
% Not print the after space before the rule
\patchcmd{\@makecol}{\vskip \skip\footins}{\vskip \skip\footins\vskip-\after}{}{}
%load parafootskip
% Not print the after space before the rule
\patchcmd{\MFL@joinrule}{\@tempskipa\skip#5}{\@tempskipa\skip#5\advance\@tempskipa by -\after}{}{}
%%%%%%%%%%%%%%%%%

\renewcommand{\thefootnoteA}{}
\renewcommand{\thefootnoteB}{}

\newcommand{\foota}[1]{%
\begingroup%
\linespread{\mylinespacing}%
\footnoteA{\textbf{\arabic{poemline}} #1}
\endgroup}
\newcommand{\footb}[1]{%
\begingroup%
\linespread{\mylinespacing}%
\footnoteB{\textbf{\arabic{poemline}} #1}
\endgroup}
\newcommand{\footheirm}[1]{%
\begingroup%
\linespread{\mylinespacing}%
\footnoteA+{#1}
\endgroup}

\hyphenpenalty = 10000
\exhyphenpenalty = 10000

\begin{document}
\verselinenumbersleft
\settowidth{\versewidth}{ααααααααααααααααααααααααααααααααααααααααα}

\chapter*{CANON I}
\poemlines{5}

\begin{verse}[\versewidth]

\vin ᾠδὴ . \textit{Θαυμαστὸς ἐνδόξως ποιῶν τέρατα}\footheirm{heirm. α΄ EE 76, n. 108, Andreae}

\vin Τὴν πύρινην γλῶτταν,\foota{Τὴν πύρινην γλῶτταν}\\*
τὸν νοῦν τὸν ἄϋλον,\foota{Τὴν πύρινην γλῶτταν}\\
τῶν θεωριῶν\foota{Τὴν πύρινην γλῶτταν}\\
τὴν σάλπιγγα τὴν θείαν,\footb{Τὴν πύρινην}\footb{Τὴν πύρινην γλῶτταν}\\
τὸ στόμα τῆς σοφίας,\foota{Τὴν πύρινην γλῶτταν}\\
τὸν μέγαν θεολόγον\\*
θείοις ὕμνοις ἀνευφημήσωμεν.\foota{Τὴν πύρινην γλῶτταν}\\!

\vin Τὴν πύρινην γλῶτταν,\foota{Τὴν πύρινην γλῶτταν}\\*
τὸν νοῦν τὸν ἄϋλον,\footb{Τὴν πύρινην γλῶτταν}\\
τῶν \footb{Τὴν πύρινην γλῶτταν}θεωριῶν\footb{Τὴν πύρινην γλῶτταν}\\
τὴν σάλπιγγα τὴν θείαν,\\
τὸ στόμα τῆς σοφίας,\foota{Τὴν πύρινην γλῶτταν}\\
τὸν μέγαν θεολόγον\footb{Τὴν πύρινην γλῶτταν}\\*
θείοις ὕμνοις ἀνευφημήσωμεν.\\!

\vin Τὴν πύρινην γλῶτταν,\\*
τὸν νοῦν τὸν ἄϋλον,\\
τῶν θεωριῶν \footb{Τὴν πύρινην γλῶτταν}\\
τὴν σάλπιγγα τὴν θείαν,\footb{Τὴν πύρινην γλῶτταν}\\*
τὸ στόμα τῆς σοφίας,\\*
τὸν μέγαν θεολόγον\footb{Τὴν πύρινην γλῶτταν}\\*
θείοις ὕμνοις ἀνευφημήσωμεν.\foota{Τὴν πύρινην γλῶτταν}\\!

\end{verse}

\end{document}

使用上面提供的代码,可以得到下图左侧所示的结果(为了节省空间,我只显示了第一页的底部)。如果将\\*替换为\\最后一节第二和第三节末尾的 (下面的代码),那么我就会得到下图右侧所示的结果。

\vin Τὴν πύρινην γλῶτταν,\\*
τὸν νοῦν τὸν ἄϋλον,\\*
τῶν θεωριῶν \footb{Τὴν πύρινην γλῶτταν}\\*
τὴν σάλπιγγα τὴν θείαν,\footb{Τὴν πύρινην γλῶτταν}\\*
τὸ στόμα τῆς σοφίας,\\*
τὸν μέγαν θεολόγον\footb{Τὴν πύρινην γλῶτταν}\\*
θείοις ὕμνοις ἀνευφημήσωμεν.\foota{Τὴν πύρινην γλῶτταν}\\!

显然,脚注 A 向上移动,并且与脚注 B 的间距越来越大。我需要消除这种行为。

图像

答案1

问题不bigfoot在于其他软件包,而在于 LaTeX 被迫填满整个页面。这只有在 LaTeX 在多个文本块之间插入更多空间时才可行。

我刚刚添加了\raggedbottom允许 LaTeX 将页面上的最后一行向上移动的功能。我%<========在以下 MWE 中标记了附录:

\documentclass[12pt]{book}
\usepackage{polyglossia}
\usepackage{verse}
\usepackage[showframe]{geometry}
\setdefaultlanguage{greek}
\setotherlanguage{english}
\newfontfamily\greekfont[Script=Greek,Ligatures=TeX]{Times New Roman}

\usepackage[para]{bigfoot}
\def\extrafootnoterule{\defaultfootnoterule}
\interfootnotelinepenalty=10000

\DeclareNewFootnote[para]{A}
\DeclareNewFootnote[para]{B}
\def \mylinespacing {1.05}
\expandafter\def\csname @makefnbreak\endcsname{\unskip\linebreak[0]\quad}

%%%%%%%%%%%%%%%%% Redefines the space above and below the footnote rulers
\makeatletter
\newcommand{\before}{2.52pt}%Space before rule
\newcommand{\after}{10.52pt}% Space after rule
\renewcommand{\footnoterule}{%Redefine footnoterule
\hrule width 3cm
\kern \after}
% Change the space kept for rules+spaces around
\advance\skip\footins by \after
\advance\skip\footins by \before
% Not print the after space before the rule
\patchcmd{\@makecol}{\vskip \skip\footins}{\vskip \skip\footins\vskip-\after}{}{}
%load parafootskip
% Not print the after space before the rule
\patchcmd{\MFL@joinrule}{\@tempskipa\skip#5}{\@tempskipa\skip#5\advance\@tempskipa by -\after}{}{}
%%%%%%%%%%%%%%%%%

\renewcommand{\thefootnoteA}{}
\renewcommand{\thefootnoteB}{}

\newcommand{\foota}[1]{%
\begingroup%
\linespread{\mylinespacing}%
\footnoteA{\textbf{\arabic{poemline}} #1}
\endgroup}
\newcommand{\footb}[1]{%
\begingroup%
\linespread{\mylinespacing}%
\footnoteB{\textbf{\arabic{poemline}} #1}
\endgroup}
\newcommand{\footheirm}[1]{%
\begingroup%
\linespread{\mylinespacing}%
\footnoteA+{#1}
\endgroup}

\hyphenpenalty = 10000
\exhyphenpenalty = 10000

\raggedbottom %<===========================================

\begin{document}
\verselinenumbersleft
\settowidth{\versewidth}{ααααααααααααααααααααααααααααααααααααααααα}

\chapter*{CANON I}
\poemlines{5}

\begin{verse}[\versewidth]

\vin ᾠδὴ . \textit{Θαυμαστὸς ἐνδόξως ποιῶν τέρατα}\footheirm{heirm. α΄ EE 76, n. 108, Andreae}

\vin Τὴν πύρινην γλῶτταν,\foota{Τὴν πύρινην γλῶτταν}\\*
τὸν νοῦν τὸν ἄϋλον,\foota{Τὴν πύρινην γλῶτταν}\\
τῶν θεωριῶν\foota{Τὴν πύρινην γλῶτταν}\\
τὴν σάλπιγγα τὴν θείαν,\footb{Τὴν πύρινην}\footb{Τὴν πύρινην γλῶτταν}\\
τὸ στόμα τῆς σοφίας,\foota{Τὴν πύρινην γλῶτταν}\\
τὸν μέγαν θεολόγον\\*
θείοις ὕμνοις ἀνευφημήσωμεν.\foota{Τὴν πύρινην γλῶτταν}\\!

\vin Τὴν πύρινην γλῶτταν,\foota{Τὴν πύρινην γλῶτταν}\\*
τὸν νοῦν τὸν ἄϋλον,\footb{Τὴν πύρινην γλῶτταν}\\
τῶν \footb{Τὴν πύρινην γλῶτταν}θεωριῶν\footb{Τὴν πύρινην γλῶτταν}\\
τὴν σάλπιγγα τὴν θείαν,\\
τὸ στόμα τῆς σοφίας,\foota{Τὴν πύρινην γλῶτταν}\\
τὸν μέγαν θεολόγον\footb{Τὴν πύρινην γλῶτταν}\\*
θείοις ὕμνοις ἀνευφημήσωμεν.\\!

%\vin Τὴν πύρινην γλῶτταν,\\*
%τὸν νοῦν τὸν ἄϋλον,\\
%τῶν θεωριῶν \footb{Τὴν πύρινην γλῶτταν}\\
%τὴν σάλπιγγα τὴν θείαν,\footb{Τὴν πύρινην γλῶτταν}\\*
%τὸ στόμα τῆς σοφίας,\\*
%τὸν μέγαν θεολόγον\footb{Τὴν πύρινην γλῶτταν}\\*
%θείοις ὕμνοις ἀνευφημήσωμεν.\foota{Τὴν πύρινην γλῶτταν}\\!

\vin Τὴν πύρινην γλῶτταν,\\*
τὸν νοῦν τὸν ἄϋλον,\\*
τῶν θεωριῶν \footb{Τὴν πύρινην γλῶτταν}\\*
τὴν σάλπιγγα τὴν θείαν,\footb{Τὴν πύρινην γλῶτταν}\\*
τὸ στόμα τῆς σοφίας,\\*
τὸν μέγαν θεολόγον\footb{Τὴν πύρινην γλῶτταν}\\*
θείοις ὕμνοις ἀνευφημήσωμεν.\foota{Τὴν πύρινην γλῶτταν}\\!
\end{verse}

\end{document}

我没有安装希腊语,所以省略了截图,请自己尝试一下。现在页面底部有空白处。

如果您不想这样,您必须使用换行符(\\\\*\\>)。

答案2

最后,我开始使用包bottom的选项footmisc,它将脚注保存在页面底部。

\usepackage[bottom]{footmisc}

相关内容