自作のカウンタを\label{...},\ref{...}で参照する方法

自作のカウンタを\label{...},\ref{...}で参照する方法

- 内田 奏 の投稿
返信数: 2
この度,組み込み系プログラミングのレポートを書く機会がございまして,そのレポートでは「回路図等は図,測定結果等は表,プログラム等はリストとして示し,それぞれに通し番号を振ること」との指定がなされております.

以下のようにリスト番号を格納するカウンタを利用することで番号を振ることはできました.

\newcounter{Cntr}

\setcounter{Cntr}{0}

\newcommand{\programlist}[1]{\begin{center}リスト\the\value{Cntr}\hspace{1zw}#1\stepcounter{Cntr}\end{center}}

これを図表のように\label{...}\ref{...}を用いて参照するにはどのように記述すればよいのでしょうか.
ご存知の方がおられましたらどうかご教授願います.

追記
上記のカウンタの定義をよりシンプルにする方法があれば,それも教えていただけると幸いです.
内田 奏 への返信

Re: 自作のカウンタを\label{...},\ref{...}で参照する方法

- 前田 一貴 の投稿
自分で作るより,プログラムコードの記述と参照ならば listings パッケージを使った方がよいです.
使い方の例は
http://www.biwako.shiga-u.ac.jp/sensei/kumazawa/tex/listings.html
にあります.

\begin{lstlisting}[label=...,caption=...]
... code ...
\end{lstlisting}

としておいて \ref{...} で参照します.

日本語がプログラム中に含まれているならば jlisting も一緒に使って下さい.
https://osdn.jp/projects/mytexpert/releases/p6275
内田 奏 への返信

Re: 自作のカウンタを\label{...},\ref{...}で参照する方法

- 北見 けん の投稿
ほかの方の回答にある通り、出来合いのパッケージを使うのが簡単ですが、
それはそれとして、自作のカウンタを参照する方法について紹介します。

自作カウンタを参照できるようにするには、\stepcounter の代わりに \refstepcounter を使うのがよいです。
LaTeX のソースファイル(latex.ltx)にある定義を読めば違いが分かると思います。
この方向で行くなら、
\newcommand{\programlist}[1]{\begin{center}リスト\the\value{Cntr}\hspace{1zw}#1\stepcounter{Cntr}\end{center}}

\newcommand{\programlist}[1]{\refstepcounter{Cntr}\begin{center}リスト\the\value{Cntr}\hspace{1zw}#1\end{center}}
のようにすればよいでしょうか。

また、「図表のように」ということであれば、figure 環境や table 環境はどちらも
\newenvironment{figure}{\@float{figure}}{\end@float}
のような具合に \@float を使って実装されています。
これを参考にするのが良いでしょう。
(figure 環境などの定義はクラスファイルにあります。例えば article.cls など)
\@float の内部で御膳立てが整えられて \caption が使えるようになり、
\caption を使ったときに内部で \refstepcounter{figure} が呼びだされるので、
\label と \ref で参照できるようになります。
(\@float などの定義は latex.ltx にあります。)

figure の代わりとなるプログラムリストの環境名(例えば plist など)を決めて、
カウンタの名前も環境名と同じにして用意します。