黑客技术——在重新执行命令之前记住它

黑客技术——在重新执行命令之前记住它

这是一个小代码。

\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处理它的输入,我注意到它最初没有被定义为一个参数宏,它可以用 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}

相关内容