The first group of commands discussed here are those used to identify your class or package file.
\NeedsTeXFormat
{<format-name>} [<release-date>]
This command tells TeX that this file should be processed using a format with name <format-name>. You can use the optional argument <release-date> to further specify the earliest release date of the format that is needed. When the release date of the format is older than the one specified a warning will be generated. The standard <format-name> is LaTeX2e. The date, if present, must be in the form YYYY/MM/DD.
Example:
\NeedsTeXFormat{LaTeX2e}[1994/06/01]
\ProvidesClass
{<class-name>} [<release-info>]
\ProvidesPackage
{<package-name>} [<release-info>]
This declares that the current file contains the definitions for the document class <class-name> or package <package-name>.
The optional <release-info>, if used, must contain:
\LoadClass
or \documentclass
(for classes) or
\RequirePackage
or \usepackage
(for packages) to test that the
release is not too old.
The whole of this <release-info> information is displayed by
\listfiles
and should therefore not be too long.
Example:
\ProvidesClass{article}[1994/06/01 v1.0 Standard LaTeX class] \ProvidesPackage{ifthen}[1994/06/01 v1.0 Standard LaTeX package]
\ProvidesFile
{<file-name>} [<release-info>]
This is similar to the two previous commands except that here the full filename, including the extension, must be given. It is used for declaring any files other than main class and package files.
Example:
\ProvidesFile{T1enc.def}[1994/06/01 v1.0 Standard LaTeX file]
Note that the phrase Standard LaTeX must not be used in the identification banner of any file other than those in the standard LaTeX distribution.