Использование расширенного макроса в качестве шаблона поиска для \patchcmd

Использование расширенного макроса в качестве шаблона поиска для \patchcmd

Есть ли способ использовать значение расширенного макроса в качестве шаблона поиска для 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}

Связанный контент