
Wenn ich verwende renewcommand
, möchte ich manchmal zuerst den ursprünglichen Quellcode für einen bestimmten Befehl überprüfen, wie er chapter
war, bevor ich ihn ändere, damit ich sicher sein kann, dass ich keine unbeabsichtigten Änderungen vornehme. Wenn ich viele Pakete geladen habe, ist es manchmal nicht so einfach, den Quellcode eines Pakets durchzusehen, um die Antwort zu finden. Gibt es eine Möglichkeit, den Quellcode auszudrucken, der zum Definieren eines bestimmten Befehls verwendet wurde?
Antwort1
Verwenden Sie
\meaning
,\show
um die Bedeutung eines Makros zu verstehen. (Siehe TeXbook oder TeX nach Thema)Verwenden Sie
\the
,\showthe
um den Wert der Register abzurufen. (Siehe TeXbook oder TeX nach Thema)Verwenden Sie
\tracingcommands
,\tracingmacros
(siehe TeXbook oder TeX nach Thema) undtrace
Paket, um weitere Informationen in der Protokolldatei zu erhalten.Verwenden Sie den eTeX-Befehl
\ifdefined
(\ifcsname
siehe eTeX-Handbuch) oder den LaTeX-Befehl\@ifundefined
(siehesource2e
) oder\ifx\foo\undefined
einen Trick, um zu überprüfen, ob ein Makro definiert ist.Verwenden Sie den LaTeX-Befehl
\CheckCommand
(beschrieben inclsguide
), um die Definition eines LaTeX-Makros zu überprüfen.
Antwort2
Ja, mit \show\mycommand
wird die Makrodefinition \mycommand
auf der Konsole (Ihre .log
Datei) gedruckt.
Zum Beispiel das Kompilieren
\documentclass{book}
\begin{document}
test
\show\chapter
\end{document}
Ausgänge
> \chapter=\long macro:
->\if@openright \cleardoublepage \else \clearpage \fi \thispagestyle {plain}\gl
obal \@topnum \z@ \@afterindentfalse \secdef \@chapter \@schapter .
zur Konsole. Beachten Sie, dass die Ausrichtung der Ausgabe nicht dieselbe ist wie bei eingegebenem Code. Daher ist es manchmal einfacher, die genaue Struktur (bei richtiger Einrückung) zu erkennen, wenn man die Quelle direkt betrachtet. Hier ist der Quelltexteintrag vonbook.cls
für \chapter
:
\newcommand\chapter{\if@openright\cleardoublepage\else\clearpage\fi
\thispagestyle{plain}%
\global\@topnum\z@
\@afterindentfalse
\secdef\@chapter\@schapter}
Beachten Sie auch, dass bei Verwendung \show
nur eine Erweiterungsebene für das angegebene Makro angezeigt wird. Am obigen Beispiel müsste man beispielsweise \show\@chapter
und \show\@schapter
(mit der entsprechenden Kategoriecodeänderung über \makeatletter
und \makeatother
Paare) ausgeben, um die Bedeutung nachfolgender Aufrufe innerhalb zu sehen \chapter
.
\meaning
kann in einem ähnlichen Kontext verwendet werden.
Von demTeX-Buch(Seite 10):
Sie können die Bedeutung einer Steuersequenz anzeigen, während TeX ausgeführt wird. Wenn Sie „
\show\cs
wobei\cs
ist“ eine beliebige Steuersequenz eingeben, antwortet TeX mit ihrer aktuellen Bedeutung. Beispielsweise\show\input
ergibt „> \input=\input.
, weil\input
primitiv ist“. Andererseits\show\thinspace
ergibt „> \thinspace=macro: ->\kern .16667em .
Dies bedeutet, dass
\thinspace
als Abkürzung für definiert wurde\kern .16667em
. Durch Eintippen\show\kern
können Sie überprüfen, dass\kern
es sich um ein primitives Element handelt. Die Ergebnisse von\show
werden auf Ihrem Terminal und in der.log
Datei angezeigt, die Sie nach dem Ausführen von TeX erhalten.
Antwort3
Sie könnentexdef
um Definitionen in einem Terminal auszudrucken. Um es mit LaTeX-Definitionen zu verwenden, müssen Sie es entweder mit der Option aufrufen -t latex
oder den entsprechenden Alias verwenden latexdef
(sofern der Alias auf Ihrem System definiert ist).
Um die Definition zu überprüfen, \chapter
können Sie eingeben texdef -t latex -c book chapter
. Der Grund, warum Sie es mit der Option aufrufen müssen, -c book
ist, dass das, \chapter
wonach Sie suchen, in dieser Klasse definiert ist. Um auch zu überprüfen, in welcher Datei die Definition zu finden ist, fügen Sie die Option -f
oder -F
für den vollständigen Pfad hinzu. Auf meinem System texdef -t latex -c book -F chapter
wird zurückgegeben
\chapter first defined in "/usr/local/texlive/2011/texmf-dist/tex/latex/base/book.cls".
\chapter:
\long macro:->\if@openright \cleardoublepage \else \clearpage \fi \thispagestyle {plain}\global \@topnum \z@ \@afterindentfalse \secdef \@chapter \@schapter
Wenn Sie die verfügbaren Optionen anzeigen texdef
oder mehr darüber erfahren möchten, können Sie mit auf die Dokumentation zugreifen texdoc texdef
.