用 \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 和回憶錄 2023/08/21 v3.8.1

我認為 bug 出在 l 上。 8696,

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

應該##1在外面}

答案1

討厭的錯誤!宏\@footnotetextP最終為

\@nameuse {foottextfontP #1}

在它的身體裡,而不是

\@nameuse {foottextfontP}#1

因此腳註文字被視為巨集名稱的一部分,而不是進行排版,且巨集未定義,因此\relax使用它。然而,該\ss位會觸發錯誤並最終被排版。

錯誤出現在第8696行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}

在此輸入影像描述

提交錯誤報告。

相關內容