我在使用 定義的新腳註時遇到問題\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}
提交錯誤報告。