\RequirePackage
应该可以正常工作\documentclass
,事实上,以下 MCE 可以很好地工作:
\RequirePackage{url}
\documentclass{article}
\begin{document}
\url{foo}
\end{document}
但是,对于该tocloft
软件包来说,这不起作用。事实上,以下 MCE 无法编译,并显示以下错误消息:
! LaTeX Error: Command \cftdot undefined.
\RequirePackage{tocloft}
\documentclass{article}
\renewcommand{\cftdot}{\ensuremath{\ast}}
\begin{document}
Foo.
\end{document}
这是怎么回事?
答案1
toclosft.sty
在(第 36-45 行)的开头,你会发现
\@ifundefined{chapter}{%
\@cfthaschapterfalse
\@ifundefined{section}{%
\PackageWarning{tocloft}%
{I don't recognize any sectional divisions so I'll do nothing}
\renewcommand{\@cftquit}{\endinput}
}{\PackageInfo{tocloft}{The document has section divisions}}
}{\@cfthaschaptertrue
\PackageInfo{tocloft}{The document has chapter divisions}}
\@cftquit
当然,之前加载的包\documentclass
意味着没有\section
s & Co. 事实上你首先会收到警告
Package tocloft Warning: I don't recognize any sectional divisions so I'll do
nothing on input line 44.
然后\@cftquit
执行,它被定义为\endinput
。包中的其他代码都不会运行,而且你永远不会到达(位于第 162 行)tocloft
的定义。\cftdot