是否可以\renewcommand\footnoterule{}
仅用于单个页面?
换句话说,考虑到第 1-3 页已经设置了分隔符,我可以删除第四页上的脚注分隔符并在第五页上再次设置它吗?
实际上,我找到了一些使用 bigfoot/manyfoot 包的代码,但它们并没有真正帮助我得到我想要的东西......
答案1
脚注规则是在已知页码的情况下排版的。您可以修改的定义,\footnoterule
使之在页码为 4 时不执行任何操作,以利用该规则实际上不占用页面上的垂直空间这一事实。
\documentclass{article}
\usepackage[paperheight=4cm,paperwidth=3in,margin=1.3cm]{geometry}
\makeatletter
\renewcommand\footnoterule{
\ifnum\c@page=4 \else
\kern-3\p@
\hrule \@width 2in \kern 2.6\p@ % the \hrule is .4pt high
\fi
}
\makeatother
\begin{document}
a\footnote{a}\clearpage
b\footnote{b}\clearpage
c\footnote{c}\clearpage
d\footnote{d}\clearpage
e\footnote{e}
\end{document}
如何列出不使用的页面\footnoterule
?这里有一种方法。
\documentclass{article}
\usepackage{xparse}
% just to get smaller pictures
\usepackage[paperheight=4cm,paperwidth=3in,margin=1.3cm]{geometry}
\ExplSyntaxOn
% keep the original \footnoterule
\cs_new_eq:NN \guillaume_footnoterule: \footnoterule
% redefine \footnoterule
\cs_set_protected:Npn \footnoterule
{
\bool_set_true:N \l_guillaume_footnoterule_bool
\seq_map_function:NN \g_guillaume_footnoterule_pages_seq \guillaume_test:n
\bool_if:NT \l_guillaume_footnoterule_bool { \guillaume_footnoterule: }
}
\cs_new_protected:Nn \guillaume_test:n
{
\int_compare:nT { #1 = \value{page} }
{
\seq_map_break:n { \bool_set_false:N \l_guillaume_footnoterule_bool }
}
}
% save the list of pages where not to have a footnoterule
\seq_new:N \g_guillaume_footnoterule_pages_seq
\NewDocumentCommand{\nofootnoterule}{m}
{
\seq_gset_from_clist:Nn \g_guillaume_footnoterule_pages_seq { #1 }
}
\ExplSyntaxOff
\nofootnoterule{1,3,4}
\begin{document}
a\footnote{a}\clearpage
b\footnote{b}\clearpage
c\footnote{c}\clearpage
d\footnote{d}\clearpage
e\footnote{e}
\end{document}
该命令\nofootnoterule
填充一个序列,当\footnoterule
内核调用该命令时,将根据该序列检查当前页码。