使命令未定义

使命令未定义

可能重复:
如何撤消 \def(即需要 \undef 功能)

在我的模板中,我测试了章节定义,以防止执行仅对章节类有效的代码部分。但是,如果我加载titlesec章节,无论使用什么类,它总是会定义。

那么如何才能使\chaptertitlesec执行后变为undefined呢?

到目前为止我尝试过这个但没有效果:

 \ifcsdef{chapter}{%
   \usepackage{titlesec}%
   % make chapter undefined again
   \let\chapter\relax%
 }{
   \usepackage{titlesec}%
 }

答案1

除了设置\chapter为之外\relax,您还可以将其设置为未定义的序列:

\let\chapter\undefined

答案2

下面的方法应该可以解决问题,它保留在包加载\chapter之前处于活动状态的(已定义或未定义)的定义:titlesec

\makeatletter
\@ifdefinable{\saved@chapter}{%
  \let\saved@chapter\chapter
  \usepackage{titlesec}%
  \let\chapter\saved@chapter
}
\makeatother

相关内容