名前: しっぽ愛好家 日時: 2004-08-09 21:07:16 IPアドレス: 210.224.215.*
>>30767 \section を次のように再定義なさっている,とのことですが, (*) というコメントをつけた行で何をなさっていますか? %%% なお,\bf は時代遅れの形式です.\bfseries を用いましょう. \renewcommand{\section}[1]{% \refstepcounter{section}% \setbox0=\hbox{#1}% \addcontentsline{toc}{section}{% \protect\numberline{\thesection}#1}% {\large\bf\arabic{chapter}.\arabic{section}}%%% (*) {\bf\hspace{1zw}#1}\par}% その行では,\section の番号として カウンタ chapter の値を算用数字で10進表記したもの + ピリオド + カウンタ section の値を算用数字で10進表記したもの を用いるように“直接表記”しているのですから, \thesection を再定義しても反映しないのは当然ですね. ここでは,\section の番号に相当する箇所にはすべて \thesection を用いて, その上で \thesection の方を章番号を含めた形になるように再定義するのが ひとつの手です. 例えば,次のようにすることになります. %%% 丁寧に定義するなら“オプション引数”の処理なども必要です(ここでは省略). \def\section#1{% %%% 次の 2 行は \section の番号の形式とは関係ありませんが,不可欠な処理です. \if@noskipsec \leavevmode \fi \ifhmode \par \fi \refstepcounter{section}% \setbox0=\hbox{#1}%%% この行の存在理由は? %%% \box0 は使用されていないようですが? \addcontentsline{toc}{section}{\protect\numberline{\thesection}#1}% {\large\bfseries \thesection}% %%% \section の番号には,原則として \thesection を使用 {\bfseries\hspace{1zw}#1}\par %%% 次の行も,番号の形式とは関係ありませんが,“お約束”です. \@afterindenttrue \@afterheading}% \def\thesection{\altarabic{chapter}.\altarabic{section}} ただし,\thesection を再定義すると \section の番号を相互参照したような 箇所にも影響が及びます. “\section によって作成する見出し部分に限り番号に用いる数字を 和文文字にする”ような場合には,(例外的な扱いですが) \section の定義中で番号部分を直接記述しても構いません. %%% その場合には,先程定義した \altarabic の意味をつかんでいれば, %%% 引用なさった定義中の \arabic を \altarabic に変えればだいたい済む, %%% ということの見当がつくことでしょう. e.g. \def\section#1{% \if@noskipsec \leavevmode \fi \ifhmode \par \fi \refstepcounter{section}% %%% \setbox0=\hbox{#1}% \addcontentsline{toc}{section}{\protect\numberline{\thesection}#1}% {\large\bfseries \altarabic{chapter}.\altarabic{section}}% {\bfseries\hspace{1zw}#1}\par \@afterindenttrue \@afterheading}% \def\thesection{\arabic{chapter}.\arabic{section}}
この書き込みへの返事: