这是一个小代码。
\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}