Quelle für einen Befehl anzeigen

Quelle für einen Befehl anzeigen

Wenn ich verwende renewcommand, möchte ich manchmal zuerst den ursprünglichen Quellcode für einen bestimmten Befehl überprüfen, wie er chapterwar, 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, \showum die Bedeutung eines Makros zu verstehen. (Siehe TeXbook oder TeX nach Thema)

  • Verwenden Sie \the, \showtheum den Wert der Register abzurufen. (Siehe TeXbook oder TeX nach Thema)

  • Verwenden Sie \tracingcommands, \tracingmacros(siehe TeXbook oder TeX nach Thema) und tracePaket, um weitere Informationen in der Protokolldatei zu erhalten.

  • Verwenden Sie den eTeX-Befehl \ifdefined( \ifcsnamesiehe eTeX-Handbuch) oder den LaTeX-Befehl \@ifundefined(siehe source2e) oder \ifx\foo\undefinedeinen Trick, um zu überprüfen, ob ein Makro definiert ist.

  • Verwenden Sie den LaTeX-Befehl \CheckCommand(beschrieben in clsguide), um die Definition eines LaTeX-Makros zu überprüfen.

Antwort2

Ja, mit \show\mycommandwird die Makrodefinition \mycommandauf der Konsole (Ihre .logDatei) 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.clsfü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 \shownur eine Erweiterungsebene für das angegebene Makro angezeigt wird. Am obigen Beispiel müsste man beispielsweise \show\@chapterund \show\@schapter(mit der entsprechenden Kategoriecodeänderung über \makeatletterund \makeatotherPaare) ausgeben, um die Bedeutung nachfolgender Aufrufe innerhalb zu sehen \chapter.

\meaningkann 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\cswobei \csist“ eine beliebige Steuersequenz eingeben, antwortet TeX mit ihrer aktuellen Bedeutung. Beispielsweise \show\inputergibt „ > \input=\input., weil \inputprimitiv ist“. Andererseits \show\thinspaceergibt „

> \thinspace=macro:
->\kern .16667em .

Dies bedeutet, dass \thinspaceals Abkürzung für definiert wurde \kern .16667em. Durch Eintippen \show\kernkönnen Sie überprüfen, dass \kern es sich um ein primitives Element handelt. Die Ergebnisse von \showwerden auf Ihrem Terminal und in der .logDatei angezeigt, die Sie nach dem Ausführen von TeX erhalten.

Antwort3

Sie könnentexdefum Definitionen in einem Terminal auszudrucken. Um es mit LaTeX-Definitionen zu verwenden, müssen Sie es entweder mit der Option aufrufen -t latexoder den entsprechenden Alias ​​verwenden latexdef(sofern der Alias ​​auf Ihrem System definiert ist).

Um die Definition zu überprüfen, \chapterkönnen Sie eingeben texdef -t latex -c book chapter. Der Grund, warum Sie es mit der Option aufrufen müssen, -c bookist, dass das, \chapterwonach 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 -foder -Ffür den vollständigen Pfad hinzu. Auf meinem System texdef -t latex -c book -F chapterwird 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 texdefoder mehr darüber erfahren möchten, können Sie mit auf die Dokumentation zugreifen texdoc texdef.

verwandte Informationen