
ここに小さなコードがあります。
\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
\keys
BUG
\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}