読者です 読者をやめる 読者になる 読者になる

LaTeX覚書その3

{\LaTeX}のマクロを用いて\sectionの番号部分を変更する

問題と解決

  • \sectionを使うと番号の部分が1,2,3...と表示される
  • これを例えば問題1,問題2,問題3としたいときどうするか
  • 最近覚えた{\LaTeX}のマクロを使って解決する

{\TeX}のマクロを使ってなんとかしてみる

とりあえず覚えたてなので俺の知ってるコマンドだけでなんとかしてみる。

\makeatletter
\newcommand{\Section}[1]{{%
        \newcount\@m
        \@m = 1
        \section*{問題 \the\@m #1}%
        \advance \@m by 1
}}%
\makeatother
\documentclass{jsarticle}
\begin{document}
\Section{ほげ}
\Section{ふが}
\end{document}

結果...失敗した
二回目に\Sectionを使うときでも番号がカウントされない
というわけで調べました。
{\LaTeX}のマクロコマンドに\refstepcounterなるものがあるらしい。
これがあるとコマンドを実行するたびに変数の値を一回カウントするという。しかも\labelによるラベル付と\refによる参照も可能である。 これを用いて書きなおすと次のような感じになった。

\makeatletter
\newcounter{m}
\setcounter{m}{0}
\newcommand{\Section}[2][]{{%
        \refstepcounter{m}#1
        \section*{問題 \arabic{m} #2}%
}}%
\makeatother
\documentclass{jsarticle}
\begin{document}
\Section[\label{hoge}]{ほげ}
\Section{ふが}
\end{document}

これできちんと番号がカウントされるようになった。