\numberwithinについて

\numberwithinについて

- にんじん の投稿
返信数: 3
amsmathの\numberwithinを利用していて困ったことがあったので質問させてください。
章番号や表番号などにおいて,1.1のような[全角数字].[全角数字]での表記にしたいと思っています。そこで以下のようなテーブルとマクロを作ることにしました。なお処理系はpLaTeXで,ドキュメントクラスはjsarticleです。
% 全角数字のテーブルを定義

\makeatletter

\def\@arabicz#1{%

\ifcase#1 0\or 1\or 2\or 3\or 4\or 5\or 6\or 7\or 8\or 9\or 10\or

11\or 12\or 13\or 14\or 15\or 16\or 17\or 18\or 19\or 20\or

21\or 22\or 23\or 24\or 25\or 26\else\@ctrerr\fi}

\def\arabicz#1{\expandafter\@arabicz\csname c@#1\endcsname}%123 全角

\makeatother


\renewcommand{\thesection}{\arabicz{section}}

\renewcommand{\thesubsection}{\arabicz{subsection}}

\renewcommand{\thefigure}{\arabicz{figure}}

\renewcommand{\thetable}{\arabicz{table}}

\renewcommand{\theequation}{\arabicz{equation}}


% 式,図,表番号を(1.1)などに変更

\numberwithin{figure}{section}

\numberwithin{table}{section}

\numberwithin{equation}{section}

しかしながら,これでやると章番号のみが意図通り動作して1,2などの全角の番号が付き,ほかの例えば節は1,2のように全角節番号のみが現れ1.2のように章番号も並んだ形にはなりません。図番号や表の番号は1.1のように章に対応する番号のみが全角となり,図番号の部分は半角になります。

古典的(?)な方法である,マニュアルで\thefigure等のプリミティブを\renewcommandする方法ではうまくいっているのでなぜこのような動作の違いが起こるのか気になっています。理由が分かる方がいらっしゃったら教えていただけると幸いです。よろしくお願いいたします。

にんじん への返信

Re: \numberwithinについて

- 帯田 木偶太 の投稿
 
文脈からして、\section を章、\subsection を節と呼んでおられるものと仮定しますが…
※ LaTeX 近辺では、\chapter を章、\sectionを節、\subsection を小節ないし項と
訳すことが多いように思います。

》 ほかの例えば節は1,2のように全角節番号のみが現れ1.2のように章番号も並んだ形にはなりません。

\thesubsection の定義中で section 番号を参照していないからでしょう。
\renewcommand{\thesubsection}{\thesection.\arabicz{subsection}}
とでもすればよかろうかと。


》 図番号や表の番号は1.1のように章に対応する番号のみが全角となり,図番号の部分は半角になります。

こちらは、
\numberwithin[\arabicz]{figure}{section}
のように、\numberwithin にオプション引数を付けると解決するようです。


なお、\thefigure はマクロです。プリミティブではありません。
帯田 木偶太 への返信

Re: \numberwithinについて

- 帯田 木偶太 の投稿
補足です。

subsection の番号に section 番号が前置されない問題は、
\thesubsection の定義をいじらないでも
        \numberwithin[\arabicz]{subsection}{section}
で解決できます。
帯田 木偶太 への返信

Re: \numberwithinについて

- にんじん の投稿
教えていただきありがとうございました。
\numberwithinが引数を三つ要求していたのがなんだろうと思っていたのですが,教えていただいたことをもとに考えたら理解できました。そしてきちんと求めた体裁になりました。それから,\chapter等の呼び方や\thesectionなどがマクロであるとの指摘も勉強になりました。ありがとうございました。