TeXのカウンタを相互参照できるようにする

実験のレポートを書いている途中、文章の中でカウンタを使って、参照もできるように書きたくなりました。調べてみるとマクロを使って書くとうまくいくようですね。自分が分かりやすいよう解説しながら書いておきます。

自動的に番号を振るマクロ(LaTeX)から大分情報を引っ張っています。

書式

カウンタ名hoge番号1のように表示させるコマンド\fugaを作りたいときは

プリアンブル内に

%マクロ
\newcounter{hoge}
\setcounter{hoge}{0} 
\newcommand{\fuga}[1][]{\refstepcounter{hoge}#1番号\arabic{hoge}} 

と書き、

documentクラス内に

\fuga[\label{aaaa}]

と書けば

番号1

と表示されます。

解説

\newconter
\newcounter{カウンタ名}

新しいカウンタを宣言する。

\setcounter
\setcounter{カウンタ}{}

カウンタの値を設定する。次にカウンタを呼び出すときは値の一つ先の値が表示される。

\newcommand
\newcommand{コマンド名}[引数の数][オプション]{置き換わる内容}

新しいコマンドを宣言する。置き換わる内容の中で#番号の形で指定し、引数が置き換えることができる。引数を2つ持つときは\hoge[fuga][foo]の形で使う。

\refstepcounter
\refstepcounter{カウンタ}

カウンタをインクリメント。\stepcounterと違いカウンタの値を参照できる。

\arabic
\arabic{カウンタ}

カウンタの値をアラビア数字に設定する。

つまりどういうことかというと

\newcommand{\fuga}[1][]{\refstepcounter{hoge}#1番号\arabic{hoge}} 

は\refstepcounterでカウンタhogeをインクリメントさせながら\arabicで表示させるコマンドを宣言したってことらしいです。

引数を1にするのは\label{}を引数にするからっぽいです。