を使って定義された新しい脚注に問題があります\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}
バグレポートを提出してください。