
Ich versuche, \rule
die Unterstriche durch eine Neudefinition sauberer zu machen, aber in meiner Buchdatei (im Memoirenkurs) treten mit Folgendem Probleme auf:
\RequirePackage{letltxmacro}
\LetLtxMacro{\oldrule}{\rule}
\renewcommand{\rule}[1]{\oldrule[0pt]{#1}{0.4pt}}
Ich erhalte die Meldung „undefinierte Steuersequenz“ \LetLtxMacro{\oldrule}{\rule}
.
Antwort1
Der Zweck von \newcommand
in LaTeX besteht genau darin, Benutzer davor zu schützen, einen Befehl neu zu definieren, der für das System sehr wichtig sein kann.
Wenn man zum Beispiel versucht, neu zu definieren \fi
, passieren alle möglichen seltsamen Dinge, angefangen damit, dass LaTeX einen Fehler ausgibt, wenn es sucht \begin{document}
und sagt
Missing \begin{document}.
Wirklich. :)
Der Befehl \rule
wird im LaTeX-Kernel beim Setzen von Fußnoten verwendet. Eine Neudefinition würde die Funktion zerstören. Klassen und Pakete können ihn \rule
ebenfalls verwenden: Er erscheint 14 Mal in memoir.cls
.
In manchen Fällen ist es sinnvoll, auch Kernelbefehle neu zu definieren; die Pakete von Heiko Oberdiek tun dies häufig und dafürAbonnierenwurde entwickelt. Benutzer sollten jedoch genau wissen, was sie tun, undniemalsÄndern Sie die Befehlssyntax (Anzahl und Art der Argumente).
Es ist ziemlich seltsam, dass Sie einen Fehler erhalten, weil Ihr Code bei mir funktioniert. Allerdingsnichtbenutze es. Definiere lieber einen persönlichen Befehl wie
\newcommand{\blank}[1]{\rule{#1}{0.4pt}}
Sie haben nur Vorteile davon: Sie gebenSemantikWert zu Ihrem Code.