
Есть ли способ использовать значение расширенного макроса в качестве шаблона поиска для etoolbox
's \patchcmd
(или xpatch
's \xpatchcmd
и т. д.), чтобы можно было получить своего рода «динамический» патч, путем изменения catcodes?
Вот минимальный рабочий пример (MWE).
\documentclass{article}
\usepackage{etoolbox}
\usepackage{xcolor}
\begin{document}
\newcommand{\wordlist}{cat dog parrot goldfish hamster}
\newcommand\selectpet[1]{%
\bgroup
\patchcmd{\wordlist}{#1}{\textcolor{red}{#1}}{}{}
\wordlist
\egroup
}
\selectpet{dog} %% This works
\def\mychoice{dog}
\selectpet{\mychoice} %% This doesn't
\end{document}
решение1
Вы хотите расширить mychoice
перед вызовом, \selectpet
поэтому:
\expandafter\selectpet\expandafter{\mychoice}