仅在单个页面中更新命令脚注规则

仅在单个页面中更新命令脚注规则

是否可以\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内核调用该命令时,将根据该序列检查当前页码。

在此处输入图片描述

相关内容