% +--------------------------------------------------+ % | Typeset ensindex.tex to get the documentation. | % +--------------------------------------------------+ % %% Copyright (C) 1998-2004, 2006, 2008 Javier Bezos %% All Rights Reserved %% http://www.tex-tipografia.com %% %% This work may be distributed and/or modified under the conditions %% of the LaTeX Project Public License, either version 1.3 of this %% license or (at your option) any later version. The latest version %% of this license is in %% http://www.latex-project.org/lppl.txt %% and version 1.3 or later is part of all distributions of LaTeX %% version 2003/12/01 or later. %% %% This work has the LPPL maintenance status "maintained". %% %% This Current Maintainer of this work is Javier Bezos. %% %% This work consists of the files esindex.tex and esindex.sty. % Changes % % 2006-05-12. Bug fixed. Missing accents in multilevel entries. % 2008-09-17. Made compatible with latest LaTeX versions (\IeC). % Added \'\i. % Package option ignorespaces. % Macro \ignorewords. % 2008-09-28. Added \everyesindex. % Macro \esindexsort. \ProvidesPackage{esindex}[2008/09/28 v1.4 Spanish indexes] \def\esx@level{`\!} \def\esx@actual{`\@} \def\esx@encap{`\|} \def\esx@quote{`\"} \def\esx@error{\PackageError{esindex}{Unknown index parameter}% {Except for ignorespaces and replaceindex, options^^J% in this package ave the form parameter=value, where^^J% parameter stands for of the following MakeIndex ones:^^J% encap, level, actual, quote}} \def\esx@process#1=#2\esx@process{% \@ifundefined{esx@#1}{\esx@error}{% \expandafter\edef\csname esx@#1\endcsname {\string`\expandafter\noexpand\csname\string#2\endcsname}}} \DeclareOption*{% \@expandtwoargs\in@{=}{\CurrentOption}% \ifin@ \expandafter\esx@process\CurrentOption\esx@process \else \def\esx@a{ignorespaces} \ifx\esx@a\CurrentOption \def\esx@zapspace#1\esx@zapspace{\zap@space#1 \@empty}% \else\def\esx@a{replaceindex} \ifx\esx@a\CurrentOption \AtBeginDocument{% \let\esx@trueindex\index \let\index\esindex} \else \esx@error \fi \fi \fi} \let\esx@zapspace\@empty \def\esx@trueindex{\index} \ProcessOptions \begingroup \catcode`\|=\catcode\esx@encap \lccode`\|=\esx@encap\relax \catcode`\!=\catcode\esx@level \lccode`\!=\esx@level\relax \catcode`\&=\catcode\esx@actual \lccode`\&=\esx@actual\relax \catcode`\*=13 \lccode`\*=\esx@quote\relax \catcode`\'=13 \catcode`\"=13 \catcode`\~=13 \gdef\esindex#1#{\esx@index{#1}} \lowercase{ \gdef\esx@index#1#2{% \let\esx@g\@empty \esx@bar@idx#2|\@@ \expandafter\esx@@index\esx@b!\@@ \toks@\expandafter{\esx@g}% \protected@edef\esx@g{\noexpand\esx@trueindex#1{\the\toks@\esx@a}}% \esx@g} } \lowercase{ \gdef\esx@bar@idx#1|#2\@@{% \def\esx@b{#1}\def\esx@a{#2}% \ifx\esx@a\@empty\else\esx@bar@eat#2\fi} } \lowercase{ \gdef\esx@bar@eat#1|{\def\esx@a{|#1}} } \lowercase{ \gdef\esx@@index#1!#2\@@{% \begingroup \let\IeC\@firstofone \def\@tabacckludge##1{\csname\string##1\endcsname}% \def\'##1{\@ifundefined{esx@index@q@\string##1}% {##1}% {\csname esx@index@q@\string##1\endcsname}}% \ifnum\catcode`\'=\active \let'\'% \fi \def\~##1{\string##1\string^^ff}% \ifnum\catcode`\~=\active \let~\~% \fi \def\"##1{\@ifundefined{esx@index@qq@\string##1}% {\string"##1}% {\csname esx@index@qq@\string##1\endcsname}}% \ifnum\catcode`\"=\active \let"\"% \fi \def\esx@a{#1}% \@ifundefined{esx@sort@\expandafter\strip@prefix\meaning\esx@a}% {\@temptokena{#1}}% {\@temptokena\expandafter\expandafter\expandafter{% \csname esx@sort@\expandafter\strip@prefix\meaning\esx@a\endcsname}}% \the\everyesindex % Particles \@for\esx@a:=\esx@ignorewords\do{% \expandafter\esx@remwords\expandafter{\esx@a}}% \toks@\expandafter{\esx@g}% % Adds @ and removes spaces. \protected@xdef\esx@g{% \the\toks@ \expandafter\esx@zapspace\the\@temptokena\esx@zapspace \string &}% \endgroup \begingroup \def*##1{% <- its lower case is the quote char (") \ifcat##1a% \@ifundefined{spanish@sh@\string*\string##1@}% {\string*##1}% {\string*\string*##1}% \else \string*\string##1% \fi}% \def\esx@b{#2}% \toks@\expandafter{\esx@g}% \ifx\esx@b\@empty \protected@xdef\esx@g{\the\toks@#1}% \else \protected@xdef\esx@g{\the\toks@#1!}% \esx@@index#2\@@ \fi \endgroup} } \endgroup \def\ignorewords#1{% \protected@edef\esx@ignorewords{\zap@space#1 \@empty}} \let\esx@ignorewords\@empty \def\esx@remwords#1{% \def\esx@c##1 #1 \esx@c{\esx@a##1 #1 \esx@a}% \def\esx@a##1 #1 ##2\esx@a{% \ifx\@empty##2\@empty \@firstofone##1##2% \else \@firstofone##1 \esx@c##2\esx@c \fi}% \expandafter\esx@remwords@ii\expandafter{\the\@temptokena}{#1}}% \def\esx@remwords@ii#1#2{% \protected@xdef\esx@b{\expandafter\esx@a\space#1 #2 \esx@a}% \@temptokena\expandafter{\esx@b}} \def\esindexsort#1{% \def\esx@a{#1}% \@namedef{esx@sort@\expandafter\strip@prefix\meaning\esx@a}} \newtoks\everyesindex \def\esx@index@q@n{n\string^^ff} \def\esx@index@q@N{N\string^^ff} \@namedef{esx@index@q@\string\i}{i} \def\esx@index@qq@o{.o} \def\esx@index@qq@O{.O} \def\esx@index@qq@a{.a} \def\esx@index@qq@A{.A} \def\esx@index@qq@u{u} \def\esx@index@qq@U{U} \def\esx@index@qq@c{c} \def\esx@index@qq@C{C} \endinput