
inas@mib.harz.de (Andreas Schlechte) wrote on Fri, 14 Mar 1997 15:50:13 +0100 (MET):
: > \usepackage{german}
: > results in something like
: > (indexentry :tkey ( ( \active@dq \dq@prtct{E}uler\errhelp {Use `` for
: > a simple double quote character.}\errmessage {german: The command ")
German-Style makes the " an active character which expands to a
serious of unexpandable tokens... if in expand-only mode. I.e., the
active " is a `fragile' command (to use LaTeX's words).
: You surley typed
:
: \usepackage{german}
: \usepackage{xindy}
:
: If you reverse the order, the output is correct. I don't know why,
: but xindy MUST be included before german is loaded.
No, Andi, what should be done in your xindy.sty is to ensure that all
punctuation characters (think of `french.sty' for an active colon ":"
or `spanish.sty/.ldf' for activated single quotes), which are used as
part of the generated xindy raw index file, should be read using
category code `other' ...or should be prefixed by \string.
Mmmmh, you should look at the code of \index ("ltidxglo.dtx"), which
uses \@sanitize before reading its arguments to ensure that all
characters will have the expected category codes (and which fails each
time \index{...} is used inside a user-defined macro).
If the same is done in \indexindy, the currently used \mdqoff and
\ifx\@undefined\germanTeX switch isn't needed anymore (because
`german.sty' adds " to the list of characters to be \@sanitize'd).
I.e., \indexindy should be defined as
\def\indexindy{%
\begingroup
\toks@{}
\ifx\@undefined\germanTeX%
\catcode`\\=\active
\expandafter\indexindy@%
\else%
\mdqoff\catcode`\\=\active
\expandafter\indexindy@%
\fi}
\newcommand{\indexindy}{%
\@bsphack %% to handle `space factor' etc.
\begingroup
\toks@{}%
\@sanitize \catcode`\\=\active
\indexindy@
}
and after the "\endgroup" of \indexindy@ a "\@esphack" should be added
for completion, read "ltspace.dtx" for comments about spacing and
\@bsphack/\@esphack.
Best wishes,
-bernd