Usando macro expandida como padrão de pesquisa para \patchcmd

Usando macro expandida como padrão de pesquisa para \patchcmd

Existe alguma maneira de usar o valor de uma macro expandida como padrão de pesquisa para etoolbox's \patchcmd(ou xpatch's \xpatchcmd, etc), para que se possa ter algum tipo de patch "dinâmico", por meio de alteração de catcodes?

Aqui está um exemplo mínimo de trabalho (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}

Responder1

Você deseja expandir mychoiceantes de chamar \selectpetassim:

\expandafter\selectpet\expandafter{\mychoice}

informação relacionada