summaryrefslogtreecommitdiff
path: root/macros/latex/contrib/sanitize-umlaut/sanitize-umlaut.sty
blob: 86918c3baa1c1643d612610ffabe83bad71b6401 (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
%% The LaTeX package sanitize-umlaut - version 1.10 (2020/01/01)
%% sanitize-umlaut.sty: Sanitize umlauts for makeindex
%%
%% -------------------------------------------------------------------------------------------
%% Copyright (c) 2016-2020 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
%%   http://www.latex-project.org/lppl.txt
%% and version 1.3 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}[2020/01/01 version 1.10 sanitize umlauts]

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

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

\begingroup
\catcode`\"=12

\gdef\sanitize@umlaut@utfviii{%
  \let\UTFviii@two@octets\sanitize@umlaut@UTFviii@two@octets%
  \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}}}