ハッキング - コマンドを再実装する前に覚えておく

ハッキング - コマンドを再実装する前に覚えておく

ここに小さなコードがあります。

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

\begin{document}

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

\end{document}

たとえば、それがわかっていて\keys{BUG}\keys{\return}うまく機能しないと仮定します。そのため、\keysパッケージが修復される間に、部分的な自家製ソリューションを使用するようにコマンドを再定義したいと思います。

そのためには、たとえば\keysコマンド内の元のマクロのトレースを保持する必要があります。次に、引数とを処理するマクロを定義するか、元のマクロを再利用します。どうすればそれができますか?\@@@@keys\keysBUG\return\keys

答え1

このようなものですが、入力がどのように処理されるかは確認していません\keysが、最初は 1 つのパラメータ マクロとして定義されていないことに気付きました。catcodes を使用して処理できますが、ここでは不可能です。おそらく、これは発生しないため、提案されたソリューションは実行可能である可能性があります。

私の鍵

(standalone切り抜かれた画像を生成するために使用されるクラス)

\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}

関連情報