# fleqn.clo vs fleqn.sty

Please have a look at this MWE:

\documentclass{JHEP}

\usepackage{fleqn}

\author{me}
\abstract{a}
\title{t}

\begin{document}
$$a = b+1$$
\end{document}


however it works, i got warning

inputting fleqn.clo instead of obsolete fleqn.sty

What is the difference between .clo and .sty? If i use fleqn as a document class option instead of the package, it gets ignored. Why?

My last question, i also got warning

You have requested document class JHEP, but the document class provides JHEP3.

using this class. Why is that?

JHEP here

-
The average age of people answering this question is depressingly high:-) –  David Carlisle May 10 at 21:10

This is (apart from an initial banner which is irrelevant) the contents of fleqn.sty:

\@obsoletefile{fleqn.clo}{fleqn.sty}
\input{fleqn.clo}
\endinput


This is provided because some people might still have LaTeX 2.09 documents with a \documentstyle initial line, where packages were given as option to this command and needed, for this, the .sty extension.

Don't load this file if you're using a specialized class such as JHEP that is meant for submissions to a journal. Either the class provides support for the fleqn option or not, in which case the journal managers won't be happy if you use it.

Actually, the class supports the option, because it has

\DeclareOption{fleqn}{\@OImess{}}   %\input{fleqn.clo}} IGNORED ...


followed by

\newcommand\@OImess[1]{\JHEP@ignol{OPTION '\CurrentOption'#1}}


which simply will tell you that the option is ignored. Loading fleqn.clo anyway would probably result in something bad.

Finally the warning you get is because the class is named JHEP.cls, but it has

\ProvidesClass{JHEP3} [2003/01/03 v3.1.2 LaTeX document class - F.N.]


Thus it's their fault.

-

There is no difference apart from the warning. Prior to LaTeX2e (that is, before 1993) the latex 2.09 syntax was

\documentclass[fleqn,longtable,12pt]{article}


there was no separate \documentclass or \usepackage.

So when converting from LaTeX2.09 to LaTeX2e, most old "options" became packages to be loaded as

\usepackage{longtable}


But the build-in options (12pt and fleqn here) stayed as options. People often got that wrong so fleqn.sty was added so that either syntax worked but with a warning.

-