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
.