LATEX provides these commands:
\LoadClass \LoadClassWithOptions \RequirePackage \RequirePackageWithOptionsfor using classes or packages inside other classes or packages. We recommend strongly that you use them, rather than the primitive
% \input
command, for a number of reasons.
Files loaded with % \input <filename>
will not be listed in the
\listfiles
list.
If a package is always loaded with \RequirePackage...
or \usepackage
then, even if its loading is requested several times, it will be
loaded only once. By contrast, if it is loaded with % \input
then it
can be loaded more than once; such an extra loading may waste time and
memory and it may produce strange results.
If a package provides option-processing then, again, strange results
are possible if the package is % \input
rather than loaded by means of
\usepackage
or \RequirePackage...
.
If the package foo.sty
loads the package baz.sty
by use of
% \input baz.sty
then the user will get a warning:
LaTeX Warning: You have requested package `foo', but the package provides `baz'.Thus, for several reasons, using
% \input
to load packages is not a
good idea.
Unfortunately, if you are upgrading the file myclass.sty
to a class
file then you have to make sure that any old files which contain
% \input myclass.sty
still work.
This was also true for the standard classes (article
, book
and
report
), since a lot of existing LATEX 2.09 document styles contain
% \input article.sty
. The approach which we use to solve this is
to provide minimal files article.sty
, book.sty
and report.sty
,
which simply load the appropriate class files.
For example, article.sty
contains just the following lines:
\NeedsTeXFormat{LaTeX2e} \@obsoletefile{article.cls}{article.sty} \LoadClass{article}You may wish to do the same or, if you think that it is safe to do so, you may decide to just remove
myclass.sty
.