Сноски, определенные с помощью \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бит вызывает ошибку и в конечном итоге набирается.

Ошибка находится в строке 8696memoir.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}

введите описание изображения здесь

Сообщите об ошибке.

Связанный контент