blob: 84d32e2ff12b1345ca91548f4f95026aa6169bf5 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
|
%D \module
%D [ file=sort-ini,
%D version=2005.08.08,
%D title=\CONTEXT\ Sort Macros,
%D subtitle=Initialization,
%D author=Hans Hagen,
%D date=\currentdate,
%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
%C details.
%D This module replaces existing sort key handling and is meant to be
%D used with the new texutil functionality. This module defines a few
%D auxiliary macros.
%D The sorting method is largely bases on the one used in the old version
%D of texutil but i've changed the interface a bit. It all boils down to
%D a bunch of substitutions. The reimplementation makes it easier to extend
%D the rules. Currently we have multipass substitution and onepass sorting,
%D but we may change this some day. Since there is a plugin mechanism, using
%D an external sorter is also possible.
% test file:
%
% \mainlanguage[sl] \readfile{sort-ini}{}{}
%
% \starttext
% test \index {aa1} test \index {ab1} test \index {aa2}
% test \index {ab2} test \index {aa10} test \index {aa8}
% test \index {aa9} test \index {aa11} test \index {aa10}
% test \index {cccc} test \index {\ccaron ccc} test \index {\cacute ccc}
% test \index {caaa} test \index {\ccaron aaa} test \index {\cacute aaa}
% \placeindex
% \stoptext
% definitions:
%
% \exportsortshortcut{\\\'\\i}{iacute}
% \exportsortshortcut{\\\'i} {iacute}
% \exportsortshortcut{\\\"e} {ediaeresis}
% \exportsortshortcut{\\\'o} {oacute}
%
% \exportsortexpansion{aeligature}{ae}
% \exportsortexpansion{ijligature}{y}
% \exportsortexpansion{oacute} {oz}
% \exportsortexpansion{eacute} {ezzz} % or e3
% \exportsortexpansion{egrave} {ezz} % or e2
% \exportsortexpansion{ediaeresis}{ez} % or e1
% \exportsortexpansion{adiaeresis}{az}
% \exportsortreduction{ch} {c}
% \exportsortreduction{ij} {y}
%
% \exportsortexpansion{ccaron} {cz}
% \exportsortexpansion{cacute} {czz}
% \exportsortexpansion{dstroke} {dz}
% \exportsortexpansion{scaron} {sz}
% \exportsortexpansion{zcaron} {zz}
%
% \exportsortreduction{ch}{c}
% \exportsortreduction{ij}{y}
%
% \exportsortexpansion {ccaron} {c+1}
% \exportsortdivision {c+1} {ccaron}
% ==
% \exportsortrule {ccaron} {c+1}
\unprotect
\let\currentexportclass\empty
\def\exportsortaction#1#2#3%
{\convertargument#2\to\asciia
\convertargument#3\to\asciib
\immediatewriteutility{x #1 {\currentexportclass} {\asciia} {\asciib}}}
\def\exportsortshortcut {\exportsortaction s}
\def\exportsortexpansion{\exportsortaction e}
\def\exportsortreduction{\exportsortaction r}
\def\exportsortdivision {\exportsortaction d}
\def\exportsortrule#1#2%
{\exportsortexpansion{#1}{#2}%
\exportsortdivision {#2}{#1}}
% Next we overload some macros defined in enco-ini and core-uti. This
% will change.
\let\definesortkey\gobblefourarguments
\def\savesortkeys
{\globallet\savesortkeys\relax
\enablemode[sortorder-\currentmainlanguage]%
\readfile{\f!sortprefix new}\donothing\donothing % temporary hacks
\readfile{\f!sortprefix def}\donothing\donothing % defaults
\readfile{\f!sortprefix lan}\donothing\donothing}% language specifics
% already done \prependtoks \savesortkeys \to \everystarttext
\protect \endinput
|