[texhax] package option with arguments

Joseph Wright joseph.wright at morningstar2.co.uk
Mon Aug 3 20:26:33 CEST 2009

Arno Trautmann wrote:
> Hi!
> I’m trying to set up a package that has one optional argument. This
> option can have several values that can be combined, like
> \usepackage[exclude={greek,math}]{package}
> Later I want to check if the argument has a certain string in it, in
> this case e.g. if ”greek“ is given. I tried it with \in@ but had no
> success. This is my code:
> \DeclareOptionX{exclude}{\def\excludeoptions{#1}}
> \ProcessOptionsX
> \in@{greek}{\excludeoptions}
> \ifin@ \AtBeginDocument{greek is in}\fi
> I use xkeyval for option processing.
> \excludeoptions contains the expected string, but I did not manage to
> get a true \ifin@, no matter how I used \expandafter or similar things.
> Is this a total wrong way to do the task? Is there a tool that does it
> less low-leve? I am totally clueless at the moment :(
> cheers
> Arno

Is something like (I'm assuming e-TeX):

\def\package at test@exclude{%
    \ifcsname package at option@\@tempa\endcsname
      \@nameuse{package at option@\@tempa}%
  \expandafter\package at test@exclude

a possible?  This of course assumes each potential exclusion is created
as a macro. (You could then trap unknowns by, for example, using
something else in place of \@tempa and ensuring that each option will
clear it, so if after the \do loop there is still something in the
variable then it's not been matched.)
Joseph Wright

More information about the texhax mailing list