宏-renewcommand 的问题

宏-renewcommand 的问题

我正在使用书籍类,我想更新其现有命令 \@makechapterhead。原始命令显示在这个文件。具体来说,我想将第 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 的垂直空间。

相关内容