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