可能重复:
如何撤消 \def(即需要 \undef 功能)
在我的模板中,我测试了章节定义,以防止执行仅对章节类有效的代码部分。但是,如果我加载titlesec
章节,无论使用什么类,它总是会定义。
那么如何才能使\chapter
titlesec执行后变为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