マクロ - renewcommand の問題

マクロ - renewcommand の問題

私はbookクラスを使っていて、既存のコマンド\@makechapterheadを更新したいと思っています。元のコマンドはp.32に示されています。このドキュメント特に、811行目の間隔を50から30に変更したいので、次のようにしました。

\renewcommand{\@makechapterhead}{
     \def\@makechapterhead#1{%
        \vspace*{30\p@}%
        {\parindent \z@ \raggedright \normalfont
     \ifnum \c@secnumdepth >\m@ne
 ⟨book⟩     \if@mainmatter
         \huge\bfseries \@chapapp\space \thechapter
         \par\nobreak
         \vskip 20\p@
      \fi
⟨book⟩    \fi
    \interlinepenalty\@M
      \Huge \bfseries #1\par\nobreak
      \vskip 40\p@
    }}
}

しかし、\@makechapterhead の定義に不正なパラメータ番号があるというエラーが発生しました。どうすれば修正できますか?

ありがとう。

答え1

ドキュメントの序文に次の内容を追加できます:

\makeatletter
\let\@makechapterhead@ori\@makechapterhead
\renewcommand{\@makechapterhead}[1]{\vspace*{-20\p@}\@makechapterhead@ori{#1}}
\makeatother

の元の定義は\@makechapterheadにバックアップされます\@makechapterhead@ori。次に、負の垂直方向の 20pt が追加され、元の定義\@makechapterheadが適用されます。その結果、希望どおり、垂直方向のスペースは 50-20 = 30pt になりました。

関連情報