summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/tex/optex/base/makeindex.opm
diff options
context:
space:
mode:
Diffstat (limited to 'Master/texmf-dist/tex/optex/base/makeindex.opm')
-rw-r--r--Master/texmf-dist/tex/optex/base/makeindex.opm35
1 files changed, 27 insertions, 8 deletions
diff --git a/Master/texmf-dist/tex/optex/base/makeindex.opm b/Master/texmf-dist/tex/optex/base/makeindex.opm
index 36b4a48c08d..d939d9ea641 100644
--- a/Master/texmf-dist/tex/optex/base/makeindex.opm
+++ b/Master/texmf-dist/tex/optex/base/makeindex.opm
@@ -1,6 +1,6 @@
%% This is part of the OpTeX project, see http://petr.olsak.net/optex
-\_codedecl \makeindex {Makeindex and sorting <2022-06-28>} % preloaded in format
+\_codedecl \makeindex {Makeindex and sorting <2023-03-12>} % preloaded in format
\_doc -----------------------------
\^`\makeindex` implements sorting algorithm at \TeX/ macro-language level.
@@ -410,24 +410,42 @@
The \^`\everyii` tokens register is applied before `\noindent`. User can
declare something special here.
- The \`\_newiiletter``{<letter>}` macro is empty by default. It is invoked if first
- letter of index entries is changed. You can declare a design between
+ The \`\_newiiletter``{<letter>}{<word>}` macro is empty by default. It is invoked
+ if first letter of index entry is changed. You can declare a design between
index entries here. You can try, for example:
\begtt
\def\_newiiletter#1#2{%
- \bigskip \hbox{\setfontsize{at15pt}\bf\uppercase{#1}}\medskip}
+ \bigskip \hbox{\setfontsize{at15pt}\bf #1}\nobreak\medskip}
+ \endtt
+ \`\_definefirstii` `<word>&` macro defines \`\_firstii` which is used as the
+ <letter> parameter of the macro \^`\_newiiletter` and for testing if the
+ \"first letter" of the index entry was changed.
+ The `\uppercase` of the real first letter is used by default here.
+ You can re-implement \^`\_definefirstii` if you want. For example,
+ you want to ignore accents above letters for index sub-headers:
+ \begtt
+ \def\_definefirstii#1#2&{%
+ \uppercase{\bgroup \iicodes \uppercase{\egroup\def\_firstii{#1}}}}
+ \def\iicodes{}
+ \def\setiicodes #1#2,{\_ifx^#1^\_else
+ \foreach #2\do{\_addto\iicodes{\uccode`##1=`#1}}
+ \_ea\setiicodes \_fi
+ }
+ \setiicodes AÀÂÄÁ,ĆČ,DĎ,EÈÉËÊĚ,IÍÏÎ,LĹĽ,OÖÓÔ,RŔ,ŚŠ,TŤ,UÙÛÜÚŮŰ,YÝŸ,{},
\endtt
\_cod -----------------------------
-\_def\_printii #1#2&{%
- \_ismacro\_lastii{#1}\_iffalse \_newiiletter{#1}{#2}\_def\_lastii{#1}\_fi
- \_gdef\_currii{#1#2}\_the\_everyii\_noindent
- \_hskip-\_iindent \_ignorespaces\_printiiA#1#2//}
+\_def\_printii #1&{\_definefirstii #1&%
+ \_ifx\_firstii\_lastii\_else
+ \_ea\_newiiletter\_ea{\_firstii}{#1}\_let\_lastii=\_firstii\_fi
+ \_gdef\_currii{#1}\_the\_everyii\_noindent
+ \_hskip-\_iindent \_ignorespaces\_printiiA#1//}
\_def\_printiiA #1/{\_if^#1^\_let\_previi=\_currii \_else
\_ea\_scanprevii\_previi/&\_edef\_tmpb{\_detokenize{#1}}%
\_ifx\_tmpa\_tmpb \_iiemdash \_else#1 \_gdef\_previi{}\_fi
\_ea\_printiiA\_fi
}
+\_def\_definefirstii #1#2&{\_uppercase{\_def\_firstii{#1}}}
\_def\_iiemdash{\_kern.1em---\_space}
\_def\_lastii{}
\_def\_newiiletter#1#2{}
@@ -549,6 +567,7 @@
\_endcode % -------------------------------------
+2023-03-12 \_definefirstii introduced
2022-06-28 \_reversewords for French sorting introduced
2022-06-28 \_sortingdatalatin covers more languages
2022-06-28 \_xcompoundchars introduced, comments upgraded (German sorting mentioned)