使用 \newfootnoteseries 定义的脚注不起作用

使用 \newfootnoteseries 定义的脚注不起作用

我在使用 定义新脚注时遇到了问题\newfootnoteseries。以下 MWE

\documentclass{memoir}
\newfootnoteseries{P}

\begin{document}

\footnote{Test1}
\footnoteP{Test2}
\footnoteP{Test3\ss}

\end{document}

生产

脚注测试

即,第一个\footnoteP没有文本;第二个只有\ss。第二个也会导致错误

/home/zach/tex/cwrc/sandbox/footnotetest.tex:8: Missing \endcsname inserted.
<to be read again> 
                   \OT1\ss 
l.8 \footnoteP{Test3\ss}
                        
The control sequence marked <to be read again> should
not appear between \csname and \endcsname.

/home/zach/tex/cwrc/sandbox/footnotetest.tex:8: Extra \endcsname.
\@nameuse #1->\csname #1\endcsname 
                                   
l.8 \footnoteP{Test3\ss}
                        
I'm ignoring this, since I wasn't doing a \csname.

我正在使用 pdfTeX 3.141592653-2.6-1.40.25 和 memoir 2023/08/21 v3.8.1

我认为这个错误是在 l. 8696 上,

      \rule\z@\footnotesep\ignorespaces\@nameuse{foottextfont#1 ##1}%

应该##1}

答案1

讨厌的错误!宏\@footnotetextP最终

\@nameuse {foottextfontP #1}

在其主体中,而不是

\@nameuse {foottextfontP}#1

因此脚注文本被视为宏名称的一部分,而不是排版,并且宏未定义,因此\relax改为使用。然而,该\ss位触发错误并最终被排版。

错误位于memoir.cls

      \rule\z@\footnotesep\ignorespaces\@nameuse{foottextfont#1 ##1}%

应该是

      \rule\z@\footnotesep\ignorespaces\@nameuse{foottextfont#1}##1%

对于您的情况,您可以修补生成的宏:

\documentclass{memoir}
\usepackage{xpatch}

\newfootnoteseries{P}

\makeatletter
\xpatchcmd\@footnotetextP
  {\@nameuse {foottextfontP #1}}
  {\@nameuse {foottextfontP}#1}
  {}{}
\makeatother

\begin{document}

\footnote{Test1}
\footnoteP{\unexpanded{Test2}}
\footnoteP{\unexpanded{Test3\ss}}

\end{document}

在此处输入图片描述

提交错误报告。

相关内容