重新定义部分命令,保留带星号的定义

重新定义部分命令,保留带星号的定义

目前,我正在处理基于标准的文档book.cls。我重新定义了部分命令(取消星号)以获得更漂亮的标题。但在执行此操作时,我遇到了一些障碍。

\renewcommand{\section}{\secdef\@section\@ssection}
\newcommand{\@section}[2][?]{...}

显然,我用 重新定义了未加星号的版本\@section,并\secdef修复了目录中的错误(奇怪的重复),并尝试保留加星号版本的定义。简而言之,它不起作用……输出如下:

! Undefined control sequence.
\reserved@a *->\@ssection

有人知道该怎么处理吗?甚至\let在这里也帮不上忙……

答案1

\section不是定义通过\secdef。所以没有\@ssection

这可能有效:

\makeatletter
\let\latex@section\section
\def\section{\secdef\my@section{\latex@section*}}

\def\my@section[#1]#2{...}

\makeatother

因此\section*将调用\latex@section*,而\section{title}将调用

\my@section[title]{title}

while\section[x]{title}将会调用

\my@section[x]{title}

相关内容