summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/tex/latex/sanitize-umlaut/sanitize-umlaut.sty
blob: 65041d21126fb3728bbe711d763ac8d06aed24c5 (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
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
%% The LaTeX package sanitize-umlaut - version 1.2.1 (2022/06/29)
%% sanitize-umlaut.sty: Sanitize umlauts for makeindex
%%
%% -------------------------------------------------------------------------------------------
%% Copyright (c) 2016-2022 by Prof. Dr. Dr. Thomas F. Sturm <thomas dot sturm at unibw dot de>
%% -------------------------------------------------------------------------------------------
%%
%% 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
%%   https://www.latex-project.org/lppl.txt
%% and version 1.3c or later is part of all distributions of LaTeX
%% version 2005/12/01 or later.
%%
%% This work has the LPPL maintenance status `author-maintained'.
%%
%% This work consists of all files listed in README
%%
\NeedsTeXFormat{LaTeX2e}
\ProvidesPackage{sanitize-umlaut}[2022/06/29 version 1.2.1 sanitize umlauts]

\def\sanitize@unicode@char#1#2{%
  \@namedef{u8:\detokenize{#1}}{#2}%
}


% BEGIN: patch for 'utf8.def'
\long\def\sanitize@umlaut@UTFviii@two@octets{%
  \ifincsname
    \expandafter \UTF@two@octets@string
  \fi
  \UTFviii@two@octets@combine
}

\begingroup
\catcode`\~13
\catcode`\"12
\gdef\sanitize@umlaut@local@UTFviii@redefinition{%
  \def\UTFviii@tmp{\edef~{\noexpand\sanitize@umlaut@UTFviii@two@octets\noexpand~}}%
  \uccode`\~"C3%
  \uppercase\expandafter{\UTFviii@tmp}%
}
\endgroup
% END: patch for 'utf8.def'


\begingroup
\catcode`\"=12

\gdef\sanitize@umlaut@utfviii{%
  \sanitize@umlaut@local@UTFviii@redefinition%
  \sanitize@unicode@char{^^c3^^a4}{"a}%
  \sanitize@unicode@char{^^c3^^b6}{"o}%
  \sanitize@unicode@char{^^c3^^bc}{"u}%
  \sanitize@unicode@char{^^c3^^84}{"A}%
  \sanitize@unicode@char{^^c3^^96}{"O}%
  \sanitize@unicode@char{^^c3^^9c}{"U}%
  \sanitize@unicode@char{^^c3^^9f}{"s}%
}

\gdef\sanitize@umlaut@utfviii@old{%
  \sanitize@unicode@char{^^c3^^a4}{"a}%
  \sanitize@unicode@char{^^c3^^b6}{"o}%
  \sanitize@unicode@char{^^c3^^bc}{"u}%
  \sanitize@unicode@char{^^c3^^84}{"A}%
  \sanitize@unicode@char{^^c3^^96}{"O}%
  \sanitize@unicode@char{^^c3^^9c}{"U}%
  \sanitize@unicode@char{^^c3^^9f}{"s}%
}

\gdef\sanitize@umlaut@latini{%
  \DeclareInputText{228}{"a}%
  \DeclareInputText{246}{"o}%
  \DeclareInputText{252}{"u}%
  \DeclareInputText{196}{"A}%
  \DeclareInputText{214}{"O}%
  \DeclareInputText{220}{"U}%
  \DeclareInputText{223}{"s}%
}

\gdef\sanitize@umlaut@applemac{%
  \DeclareInputText{138}{"a}%
  \DeclareInputText{154}{"o}%
  \DeclareInputText{159}{"u}%
  \DeclareInputText{128}{"A}%
  \DeclareInputText{133}{"O}%
  \DeclareInputText{134}{"U}%
  \DeclareInputText{167}{"s}%
}

\endgroup


\ifdefined\inputencodingname
  \def\@tempa{utf8}\ifx\inputencodingname\@tempa
    \let\sanitize@umlaut\sanitize@umlaut@utfviii
    \PackageInfo{sanitize-umlaut}{encoding utf8 selected}
  \else\def\@tempa{utf8-2018}\ifx\inputencodingname\@tempa
    \let\sanitize@umlaut\sanitize@umlaut@utfviii@old
    \PackageInfo{sanitize-umlaut}{encoding utf8-2018 selected}
  \else\def\@tempa{latin1}\ifx\inputencodingname\@tempa
    \let\sanitize@umlaut\sanitize@umlaut@latini
    \PackageInfo{sanitize-umlaut}{encoding latin1 selected}
  \else\def\@tempa{ansinew}\ifx\inputencodingname\@tempa
    \let\sanitize@umlaut\sanitize@umlaut@latini
    \PackageInfo{sanitize-umlaut}{encoding latin1 selected}
  \else\def\@tempa{cp1252}\ifx\inputencodingname\@tempa
    \let\sanitize@umlaut\sanitize@umlaut@latini
    \PackageInfo{sanitize-umlaut}{encoding latin1 selected}
  \else\def\@tempa{applemac}\ifx\inputencodingname\@tempa
    \let\sanitize@umlaut\sanitize@umlaut@applemac
    \PackageInfo{sanitize-umlaut}{encoding applemac selected}
  \else
    \def\sanitize@umlaut{}%
    \PackageWarning{sanitize-umlaut}{encoding \inputencodingname\space is not supported}
  \fi\fi\fi\fi\fi\fi
\else
  \let\sanitize@umlaut\sanitize@umlaut@utfviii
  \PackageWarning{sanitize-umlaut}{encoding unknown. utf8 is selected as fallback (possibly nonsense)}
\fi

\AtBeginDocument{\edef\@sanitize{\unexpanded\expandafter{\@sanitize}\unexpanded\expandafter{\sanitize@umlaut}}}