das heißt ja erstmal nur, daß bisher keiner von uns beiden diesen Fall berücksichtigt hat.
Warum natürlich? Das wäre hier doch ein möglicher Ansatz?
zieh das Leerzeichen doch einfach vor den \myindex{.}.Code:\documentclass{article} \usepackage{makeidx} \makeindex \newwrite\myout \makeatletter \InputIfFileExists{\jobname.mix}{}{% \typeout{\jobname.mix doesn't exist yet.}% \typeout{Another LaTeX run may be required before trying MakeIndex.}% }% \immediate\openout\myout=\jobname.mix \AtEndDocument{\immediate\closeout\myout}% \newcommand*\my@index{} \newcommand*\my@iindex{} \newcommand*\my@tmpa{} \newcommand*\my@tmpb{} \def\my@iindex#1[#2][#3]{% \ifx\relax#2\relax \index{#1}% \else \ifx\relax#3\relax \@ifundefined{\detokenize{my@sub@#1}}{% \index{#1 #2}% }{% \index{#1!#2}% }% \else % \@ifundefined{\detokenize{my@ssub@#1@#2}}{% \@ifundefined{\detokenize{my@sub@#1}}{% \index{#1 #2 #3}% }{% \index{#1!#2 #3}% }% }{% \@ifundefined{\detokenize{my@sub@#1}}{% \index{#1 #2!#3}% }{% \index{#1!#2!#3}% }% }% \fi \@ifundefined{\detokenize{my@ssub@tmp@#1@#2}}{}{% \edef\my@tmpa{\@nameuse{\detokenize{my@ssub@tmp@#1@#2}}}% \edef\my@tmpb{#3}% \ifx\my@tmpa\my@tmpb\relax\else \immediate\write\myout{\string\@namedef{\string\detokenize{my@ssub@#1@#2}}{#3}}% \fi }% \global\@namedef{\detokenize{my@ssub@tmp@#1@#2}}{#3}% \fi \@ifundefined{\detokenize{my@sub@tmp@#1}}{}{% \edef\my@tmpa{\@nameuse{\detokenize{my@sub@tmp@#1}}}% \edef\my@tmpb{#2}% \ifx\my@tmpa\my@tmpb\relax\else \immediate\write\myout{\string\@namedef{\string\detokenize{my@sub@#1}}{#2}}% \fi }% \global\@namedef{\detokenize{my@sub@tmp@#1}}{#2}% } \def\my@index#1[#2]{% \@ifnextchar[%] {\my@iindex{#1}[#2]}{\my@iindex{#1}[#2][]}% } \newcommand*\myindex[1]{% \@ifnextchar[%] {\my@index{#1}}{\my@index{#1}[]}% } \makeatother \begin{document} bla\myindex{tight}[measure] \myindex{foo}[a] \myindex{foo}[b] \myindex{blubb} \myindex{drei}[zwei][eins] \myindex{drei}[zwei][zwei] \myindex{vier}[null][nichtig] \myindex{x}[y] \myindex{x}[y][z] \myindex{y} \myindex{y}[z] \myindex{z}[a][b] \myindex{z}[a] \myindex{generator}[of a $\sigma$-algebra] \myindex{$\alpha$}[$\beta$] \myindex{$\alpha$}[$\gamma$] \clearpage b \myindex{tight}[measure]c \printindex \end{document}
Du planst ja, dieses Feature in den \index-Aufruf integrieren zu lassen. Darin müsste man eh die A!B-Schreibweise berücksichtigen, sprich: das Problem mit dem Leerzeichenverschlucken stellt sich dann gar nicht erst.
MfG
Lesezeichen