макрос - проблемы с renewcommand

макрос - проблемы с renewcommand

Я использую класс книги и хочу обновить его существующую команду \@makechapterhead. Исходная команда показана на стр.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, как и требовалось.

Связанный контент