Mit Wie kann ich ein Makro (re)definieren, egal ob es schon eins dieses Namens gibt oder nicht? |
Ich möchte hier zwei Möglichkeiten vorstellen, die das Gewünschte machen, aber (im Gegensatz zu Clemens’ bereits ausführlichen Antwort) Macros des LaTeX-Kernels verwenden, die das ganze Prozedere vereinfachen/verkürzen. Version 1 gibt dabei eine Warnung aus, falls das Macro bereits definiert war, Version 2 überschreibt das zu definierende Macro, komme was wolle. In beiden Fällen müssen wir aber erst mal schauen, ob dem Command ein Asterisk
|
Betreff
Das halte ich für falsch: unter Umständen überschreibt man damit einen Befehl, der von einem Paket bereitgestellt wird, ohne es zu merken und nachher funktioniert dann irgendwas nicht und man muss sich erst mühsam auf die Suche nach der Ursache machen. Wenigstens sollte man sich eine Warnung oder Info in die log-Datei schreiben lassen. Hier ist ein Vorschlag, mit dem das passieren würde. Er definiert einen Befehl
Dieses Beispiel gibt im log folgende Ausgabe:
Es gibt also eine Warnung über die Neudefinition und auch die Stern- und die Nicht-Sterndefinition und die Parameter funktionieren wie gewünscht. Noch eine Erklärung zur Zeile
Der Befehl beantwortet 31 Aug '13, 15:59 cgnieder |
Ein einfacher Trick, der ohne
Zum Zeitpunkt von beantwortet 31 Aug '13, 15:22 stefan ♦♦ |
Auch wenn Clemens und Qrrbrbirlbels Antworten vorzuziehen ist, sei noch erwähnt, dass
Erstellt also
Außerdem ist – wie @saputello in seinem Kommentar richtig bemerkte – die Definition von optionalen Argumenten mit Ein anderer Befehl, der auch entweder einen neuen Befehl definiert oder einen bereits vorhandenen überschreibt wäre
erstellt also entweder name oder überschreibt es ohne Warnung (Ich habe das Gefühl, ich wiederhole mich zuviel…). Um das ganze kurz zu fassen: Verwende diese Befehle nur, wenn du sicher bist, dass du nichts wichtiges überschreibst! beantwortet 31 Aug '13, 16:46 Epllus Allerdings ist die Definition von Befehlen mit optionalen Argumenten mit
(31 Aug '13, 17:46)
saputello
|