macro - problemas com comando de renovação

macro - problemas com comando de renovação

Estou usando a classe book e quero renovar seu comando existente \@makechapterhead. O comando original é mostrado na página 32 doesse documento. Em particular, quero alterar o espaçamento na linha 811 de 50 para 30, então fiz o seguinte

\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@
    }}
}

Mas recebi um erro dizendo número de parâmetro ilegal na definição de \@makechapterhead. Como faço para corrigir isso?

Obrigado.

Responder1

Você pode adicionar no preâmbulo do seu documento:

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

A definição original de \@makechapterheadé armazenada em backup em \@makechapterhead@ori. A seguir, uma vertical negativa de 20pt é adicionada e então o original \@makechapterheadé aplicado. Como resultado, você obteve um espaço vertical de 50-20 = 30pt, conforme desejado.

informação relacionada