Ich habe Probleme mit neuen Fußnoten, die mit definiert wurden \newfootnoteseries
. Die folgenden MWE
\documentclass{memoir}
\newfootnoteseries{P}
\begin{document}
\footnote{Test1}
\footnoteP{Test2}
\footnoteP{Test3\ss}
\end{document}
produziert
d. h., der erste \footnoteP
hat keinen Text; der zweite nur den \ss
. Der zweite führt auch zu dem Fehler
/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.
Ich verwende pdfTeX 3.141592653-2.6-1.40.25 und Memoir 2023/08/21 v3.8.1
Ich denke, der Fehler liegt auf l. 8696,
\rule\z@\footnotesep\ignorespaces\@nameuse{foottextfont#1 ##1}%
Das ##1
sollte außerhalb der}
Antwort1
Böser Fehler! Das Makro \@footnotetextP
endet mit
\@nameuse {foottextfontP #1}
in seinem Körper, statt
\@nameuse {foottextfontP}#1
Der Fußnotentext wird also als Teil eines Makronamens behandelt, anstatt gesetzt zu werden. Da das Makro nicht definiert ist, \relax
wird es stattdessen verwendet. Das \ss
Bit löst jedoch einen Fehler aus und wird schließlich gesetzt.
Der Fehler liegt in Zeile 8696 vonmemoir.cls
\rule\z@\footnotesep\ignorespaces\@nameuse{foottextfont#1 ##1}%
Das sollte sein
\rule\z@\footnotesep\ignorespaces\@nameuse{foottextfont#1}##1%
Für Ihren Fall können Sie das generierte Makro patchen:
\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}
Senden Sie einen Fehlerbericht.