
這是一個小程式碼。
\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}