[Tex/LaTex] If not DeclareOption

conditionalspackage-options

I have some documents using a same custom package. That "header" package loads by default the package fullpage. But I would like to write a new LaTeX document, using the same header, but without loading fullpage, and I don't want to change old files.

Is there a way to add an "if false" condition about options? I mean. I have currently:

\DeclareOption{fullpage}{
  \usepackage{fullpage}
}

But that implies to change all of my old documents to add the fullpage option to my package. I want however to make something like:

if-not-nofullpage {%
  \usepackage{fullpage}
}

And in my new document:

\usepackage[nofullpage]{my-header}

Or perhaps a way to "unload" a previously loaded package:

\usepackage{fullpage} % inconditionally

\DeclareOption{nofullpage} {%
    unload-or-revert-the-fullpage-inclusion
}

How can I do that? (if plain TeX macros are used in your answers, please, with little explanations).

Best Answer

You have to load fullpage after \ProcessOptions, first of all.

Here's the scheme:

\ProvidesPackage{mypackage}
\newif\ifmypackage@fullpage
\DeclareOption{fullpage}{\mypackage@fullpagetrue}
\DeclareOption{nofullpage}{\mypackage@fullpagefalse}

\ExecuteOptions{fullpage} % default is fullpage

\ProcessOptions\relax

\ifmypackage@fullpage
  \RequirePackage{fullpage}
\fi

Then a document calling either

\usepackage{myclass}

or

\usepackage[fullpage]{myclass}

will load fullpage; a document calling

\usepackage[nofullpage]{myclass}

won't.

Thus you won't have to change your old document, but new ones will be able to avoid loading of fullpage.