Hacking - Memorize um comando antes de reimplementá-lo

Hacking - Memorize um comando antes de reimplementá-lo

Aqui está um pequeno código.

\documentclass[10pt,a4paper]{article}
    \usepackage[utf8]{inputenc}
    \usepackage{menukeys}

\begin{document}

\keys{Ctrl+Alt+C}
\keys{BUG}
\keys{\return}

\end{document}

Suponhamos que eu saiba, por exemplo, disso \keys{BUG}e \keys{\return}não funcione bem. Então eu gostaria de redefinir os comandos \keyspara usar uma solução caseira parcial durante o reparo do pacote.

Para fazer isso preciso manter o rastreamento da \keysmacro original em um comando, \@@@@keyspor exemplo. Então eu poderia definir minha macro \keysque cuidará dos argumentos BUGe \return, ou apenas reutilizará a macro original \keys. Como eu posso fazer isso ?

Responder1

Algo assim, porém não verifiquei como \keysprocessa sua entrada, noto que inicialmente não está definido como uma macro de um parâmetro, poderia fazer coisas com catcodes que aqui não serão possíveis. Talvez embora isso não aconteça, a solução proposta possa ser viável.

minhas chaves

( standaloneclasse usada para produzir imagem recortada)

\documentclass[border=12pt]{standalone}
    \usepackage[utf8]{inputenc}
    \usepackage[T1]{fontenc}
    \usepackage{menukeys}

\makeatletter
\let\originalkeys\keys
%\show\keys
\protected\def\keys #1{\in@{#1}{BUG,\return}%
                        \ifin@\expandafter\mykeys\else
                              \expandafter\originalkeys
                        \fi {#1}}
\makeatother
\newcommand{\mykeys}[1]{\fbox{\ttfamily\detokenize{#1}}}
\begin{document}
  \keys{Ctrl+Alt+C} 
  \keys{BUG} 
  \keys{\return}
\end{document}

informação relacionada