Hacking - Merken Sie sich einen Befehl, bevor Sie ihn erneut implementieren

Hacking - Merken Sie sich einen Befehl, bevor Sie ihn erneut implementieren

Hier ist ein kleiner Code.

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

\begin{document}

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

\end{document}

Nehmen wir beispielsweise an, dass ich das kenne \keys{BUG}und \keys{\return}es nicht gut funktioniert. Daher möchte ich die Befehle neu definieren \keys, um eine teilweise selbst erstellte Lösung zu verwenden, bei der das Paket repariert wird.

Dazu muss ich beispielsweise die Spur des ursprünglichen \keysMakros in einem Befehl speichern. Dann könnte ich mein Makro definieren , das sich um die Argumente kümmert , oder einfach das ursprüngliche Makro wiederverwenden . Wie kann ich das tun?\@@@@keys\keysBUG\return\keys

Antwort1

So etwas in der Art, allerdings habe ich nicht überprüft, wie \keysdie Eingabe verarbeitet wird. Mir ist aufgefallen, dass es ursprünglich nicht als Makro mit einem Parameter definiert ist. Es könnte Dinge mit Catcodes tun, die hier nicht möglich wären. Vielleicht passiert das aber nicht, daher könnte die vorgeschlagene Lösung praktikabel sein.

meine Schlüssel

( standaloneKlasse zum Erzeugen eines zugeschnittenen Bildes)

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

verwandte Informationen