最終更新日:2003.3.16
\def\@newctr#1[#2]{% \@ifundefined{c@#2}{\@nocounterr{#2}}{\@addtoreset{#1}{#2}}}
最初に\@ifundefinedによってc@supctrが 定義されているかどうか確認する。親カウンタ(supctrが定義されていないことには 親子関係を設定しても意味がない)。親カウンタが定義されていない場合、 \@nocounterrによって、エラーを発し処理を中断する。親カウンタが きちんと定義されている場合、\@addtoresetによって 親子関係を設定する。
\def\@next#1#2#3#4{\ifx#2\@empty #4\else \expandafter\@xnext #2\@@#1#2#3\fi}
#2が\emptyならば#4を展開する。そうでないならば\@xnext に#2、\@@、#1、#2、#3という引数を与える。ここで\@@は単なる区切り文字である。
\def\@nobreaktrue {\global\let\if@nobreak\iftrue}
\gdef\@nocounterr#1{% \@latex@error{No counter '#1' defined}\@eha}
定義内容は至ってシンプルです。通常、引数には定義されていないカウンタ名を指定する。 そのカウンタ名を\@latex@errorに引き渡している。 \@ehaは処理が中断したときにH(またはh)を入力したときに表示される ヘルプ情報である。
\@nodocumentはdocument環境に入る前と、document環境内では定義が異なる。
document環境に入る前では、次のようにエラーの内容が定義されている。
\gdef\@nodocument{% \@latex@error{Missing \protect\begin{document}}\@ehd}
一方、document環境内では次のように\relaxに定義し直される。
\global\let \@nodocument \relax
\gdef\@noitemerr{% \@latex@error{Something's wrong--perhaps a missing % \protect\item}\@ehc}
\@noskipsecが真(TRUE)の時は見出しの直後で改行せずにすぐに文書が始まることを表しており、 偽(FALSE)の時は見出しを出力して指定されたスキップを挿入した後、文書を始めることを意味している。 \@xsect内などで使用されている。
また、\@noskipsecのデフォルト値は真(TRUE)であり、document環境の開始時に偽(FALSE)に設定される。 したがって、document環境がない場合にはこのスイッチの値を調べて、エラーを発する。
以下の例では、\sectionを再定義して実際に\@noskipsecが真偽どちらに設定されているか確かめている。
\documentclass{jsarticle} \makeatletter \def\shownoskipsec{% \if@noskipsec ture \else false \fi }% \makeatother \begin{document} \section{AAA} \shownoskipsec %%sectionの再定義 \makeatletter \renewcommand{\section}{% \@startsection{section}% #1 見出し {1}% #2 見出しのレベル {\z@} {1.5\Cvs \@plus.5\Cdp \@minus.2\Cdp} {-1cm} {\reset@font\Large\bfseries} } \makeatother \section{BBB} \shownoskipsec \end{document}
\gdef\@notdefinable{% \@latex@error{% Command \@backslashchar\reserved@a\space already defined.\MessageBreak Or name \@backslashchar\@qend... illegal, see p.192 of the manual}\@eha}
サイト管理者:yap(s0824088@mmm.muroran-it.ac.jp)