对于 reledmac/reledpar 的一些改进(https://github.com/maieul/ledmac/issues/668),我需要在 中使用宏之前吞噬宏的任何参数\edef
。但我收到错误。
参见此 MWE
\documentclass{book}
\usepackage{imakeidx}
\makeindex[name=toto,title=toto]
\makeindex
\begin{document}
s\renewcommand{\index}[1]{}
\edef\titi{\index{sncf}a}%That works
s\renewcommand{\index}[2][]{}
\edef\titi{\index[a]{sncf}a}%That does not work
\end{document}
答案1
带有可选参数的宏不会保留\edef
,除非它们是用 定义的xparse
(\NewExpandableDocumentCommand
有一些限制)。
\documentclass{book}
\usepackage{xparse}
\usepackage{imakeidx}
\makeindex[name=toto,title=toto]
\makeindex
\begin{document}
s\renewcommand{\index}[1]{}
\edef\titi{\index{sncf}a}%That works
\titi
s\RenewExpandableDocumentCommand{\index}{om}{}
\edef\titi{\index[a]{sncf}a}%This works, too
\titi
\end{document}