TeXの記憶(17) —オートナンバリング

TeXの記憶(16)—PSTricksで見出し付きの囲みを作る(2)の囲みに指定したのは「例題」でした。

実際には「例題1」とか「例題1.3」といった番号が付くのが普通です。これを手動で指定していたのではTeXを使っている意味が半減してしまいます。とうぜんですが、ナンバリングを自動でできるようにしましょう。

img0817-1

とりあえず前回の囲みを無視して文字だけ表示させた環境を作ります。ついでに\refで参照もできるようにしましょう。

img0817-2

まずは、reidai専用カウンタを定義します。

\newcounter{reidaicnt}[chapter]

例題のカウンタは章ごとにリセットされるように[chapter]を付けました。

数字は「章.例題番号」の形式にします。章の番号を表すのは「\thechapter」なのでこのまま使い、例題番号は新しく作ったカウンタを使って「\arabic{reidaicnt}」で表せます(\thechapterもクラスファイルの中で同じように定義されています)。

reidai環境が呼ばれたときに、カウンタを1増やすのは

\stepcounter{reidaicnt}

\refで参照するための設定は、

 \protected@edef\@currentlabel{\thechapter.\arabic{reidaicnt}}

です。

全部合わせた簡単な例題環境です。

\newcounter{reidaicnt}[chapter]
\newenvironment{reidai}
{\stepcounter{reidaicnt}%
  \protected@edef\@currentlabel{\thechapter.\arabic{reidaicnt}}
  {\bf 例題\thecapter.\arabic{reidaicnt}}\hskip1zw}%
{}

最後の{}は環境を閉じるときの{}です。何も書くことがないから空欄です。

本文の入力

% とりあえず章番号だけ設定しておく
\setcounter{chapter}{1}

\begin{reidai}\label{foo}
□□□□□□□□□□□□□□□□
\end{reidai}

\begin{reidai}
□□□□□□□□□□□□□□□□
\end{reidai}

□□□□□□□□□□□□□□□□□□□□□□□
□□例題\ref{foo}参照...□□□□□□□□□□□□□□□□□□
□□□□□□□□□□□□□□□□□□□□□□□

\setcounter{chapter}{2}

\begin{reidai}
□□□□□□□□□□□□□□□□
\end{reidai}

回のマクロにカウンタと参照設定を付け加えたバージョンは上の設定を付け加えただけになります。

\def\reidai#1{%
  \BoxST{1zw}{.3mm}{black}{iro2}{3mm}{3mm}{3.6mm}{0mm}{%
    \hbox to\z@{\color{iro1}\hskip-3.7mm
      \rule[-.5mm]{3mm}{3mm}\hss}\hskip.5mm
    \stepcounter{reidaicnt}%
    \protected@edef\@currentlabel{\thechapter.\arabic{reidaicnt}}
    {\bf 例題\thechapter.\arabic{reidaicnt}}\hskip2mm
    \hbox to \z@{\color{iro1}\rule[-.5mm]{3mm}{3mm}\hss}}}
\def\endreidai{\endBoxST}

コメント