\newfootnoteseriesで定義された脚注は機能しません

\newfootnoteseriesで定義された脚注は機能しません

を使って定義された新しい脚注に問題があります\newfootnoteseries。次のMWE

\documentclass{memoir}
\newfootnoteseries{P}

\begin{document}

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

\end{document}

生産する

脚注テスト

つまり、最初のもの\footnotePはテキストがなく、2番目は だけです\ss。2番目もエラーになります。

/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ビットによってエラーが発生し、最終的にタイプセットされます。

エラーは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}

ここに画像の説明を入力してください

バグレポートを提出してください。

関連情報