以下 M(n)WE 指出,通过 传递给类的fleqn
(以及)选项将被考虑,除非包被加载(如果通过或 作为选项传递选项则没有问题):leqno
\PassOptionsToClass
kpfonts
\@classoptionslist
\documentclass
% \makeatletter
% \def\@classoptionslist{fleqn}
% \makeatother
\PassOptionsToClass{fleqn}{article}%
\documentclass%[fleqn]
{article}
% \usepackage{kpfonts}
%
\begin{document}
Foo
\[
F
\]
\end{document}
有趣的是,如果kpfonts
加载了noamsmath
选项,则不会出现问题(但命令将kpfonts
无法\widering
使用)。
你知道发生了什么吗?
答案1
kpfonts
除了加载之外,实际上没有涉及其他内容amsmath
,如果直接加载,则会看到相同的内容amsmath
。
amsmath
重新定义左对齐,因此您需要将选项传递给包:
% \makeatletter
% \def\@classoptionslist{fleqn}
% \makeatother
%\PassOptionsToClass{fleqn}{article}%
\PassOptionsToPackage{fleqn}{amsmath}%
\documentclass%[fleqn]
{article}
\usepackage{amsmath}
%
\begin{document}
Foo
\[
F
\]
\end{document}
如果你将一个选项传递给班级,那么只是类的一个选项,与显式列表中的选项不同,[..]
它不是所有包都看到的全局选项,因此您需要传递fleqn
给amsmath
而不是article
。