[tex-eplain] optional arguments

Oleg Katsitadze olegkat at gmail.com
Sun Mar 29 05:37:27 CEST 2009


On Sun, Mar 29, 2009 at 06:21:27AM +0300, Oleg Katsitadze wrote:
> Or you could
> make location into a third-level key, but that would look ugly.

Well, there is a way to achieve this effect, but the hack is ugly and
probably will fail you one day:

    \def\finisharchitect{%
      \arch at loc=\expandafter{\@optionalarg}%
      \ifx\@optionalarg\empty
        % No optional argument present.
        \expandafter\sidx\expandafter{\the\arch at name}
      \else
        % One was present.
        \edef\temp{architects!\the\arch at name, \relax{\noexpand\it \the\arch at loc}}%
        \expandafter\sidx\expandafter{\temp}%
        \edef\temp{\the\arch at name, \relax{\noexpand\it architect, \the\arch at loc}}%
        \expandafter\sidx\expandafter{\temp}%
      \fi
    }

All I did was add \relax before location.  This works because it makes
location into a pattern starting with "special symbol" (see the
Ordering section in makeindex docs), and such patterns sort before
letters and numbers.

Best,
Oleg


More information about the tex-eplain mailing list