![宏-renewcommand 的问题](https://linux22.com/image/348117/%E5%AE%8F-renewcommand%20%E7%9A%84%E9%97%AE%E9%A2%98.png)
我正在使用书籍类,我想更新其现有命令 \@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 的垂直空间。