
を使用する場合renewcommand
、変更する前に、 などの特定のコマンドの元のソース コードがどのようなものであったかをまず確認しchapter
、意図しない変更が行われていないことを確認したい場合があります。多数のパッケージがロードされている場合、パッケージのソース コードを調べて答えを見つけるのは簡単ではない場合があります。特定のコマンドを定義するために使用されたソース コードを印刷する方法はありますか?
答え1
マクロの意味を知るには
\meaning
、を使用します。(TeXbook または TeX by Topic を参照してください)\show
レジスタの値を取得するには
\the
、を使用します。(TeXbook または TeX by Topic を参照してください)\showthe
ログ ファイルで詳細情報を取得するには、 、
\tracingcommands
(\tracingmacros
TeXbook または TeX by Topic を参照)、およびパッケージを使用します。trace
マクロが定義されているかどうかを確認するには、eTeX の
\ifdefined
、\ifcsname
(eTeX のマニュアルを参照)、または LaTeX コマンド\@ifundefined
( を参照source2e
)、あるいはトリックを使用します。\ifx\foo\undefined
LaTeX コマンド
\CheckCommand
(で説明clsguide
) を使用して、LaTeX マクロの定義を確認します。
答え2
はい、 を使用すると、\show\mycommand
のマクロ定義が\mycommand
コンソール (.log
ファイル) に出力されます。
たとえば、コンパイルすると
\documentclass{book}
\begin{document}
test
\show\chapter
\end{document}
出力
> \chapter=\long macro:
->\if@openright \cleardoublepage \else \clearpage \fi \thispagestyle {plain}\gl
obal \@topnum \z@ \@afterindentfalse \secdef \@chapter \@schapter .
コンソールに出力されます。出力の配置はコードに入力したときと同じではないことに注意してください。そのため、ソースを直接表示すると、正確な構造(適切にインデントされている場合)が簡単にわかる場合があります。以下は、book.cls
のために\chapter
:
\newcommand\chapter{\if@openright\cleardoublepage\else\clearpage\fi
\thispagestyle{plain}%
\global\@topnum\z@
\@afterindentfalse
\secdef\@chapter\@schapter}
また、 を使用すると、指定されたマクロの展開レベルが 1 つだけ表示されることに注意してください。上記を例として使用すると、内の後続の呼び出しの意味を確認するには、 (たとえば) および (およびのペアによる適切なカテゴリ コードの変更付き)\show
を発行する必要があります。\show\@chapter
\show\@schapter
\makeatletter
\makeatother
\chapter
\meaning
同様の文脈で使用できます。
からTeXブック(p 10):
TeXの実行中に制御シーケンスの意味を表示することができます。 が制御シーケンスである場合、 と入力すると
\show\cs
、\cs
TeXはその現在の意味を返します。たとえば、 はプリミティブであるため、\show\input
になります。一方、は になります。> \input=\input.
\input
\show\thinspace
> \thinspace=macro: ->\kern .16667em .
これは、
\thinspace
が の省略形として定義されている ことを意味します\kern .16667em
。 と入力すると、 がプリミティブである\show\kern
ことを確認できます\kern
。 の結果は、\show
ターミナルと、TeX を実行した後に取得するファイルに表示されます.log
。
答え3
使用できますtexdef
定義を端末に印刷します。LaTeX 定義で使用するには、オプションを指定して呼び出す-t latex
か、対応するエイリアスlatexdef
(エイリアスがシステムで定義されている場合) を使用する必要があります。
の定義を確認するには、\chapter
を発行しますtexdef -t latex -c book chapter
。 オプションを指定して呼び出す必要があるのは、探している がそのクラスで定義されている-c book
ためです。定義がどのファイルにあるかを確認するには、フルパスに\chapter
オプション-f
または を追加します。私のシステムでは、-F
texdef -t latex -c book -F chapter
\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
の利用可能なオプションを確認しtexdef
たり、詳細を知りたい場合は、 でドキュメントにアクセスできますtexdoc texdef
。