summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--Master/texmf-dist/doc/latex/sanitize-umlaut/README41
-rw-r--r--Master/texmf-dist/doc/latex/sanitize-umlaut/german.ist3
-rw-r--r--Master/texmf-dist/doc/latex/sanitize-umlaut/sanitize-umlaut.doc.sty84
-rw-r--r--Master/texmf-dist/doc/latex/sanitize-umlaut/sanitize-umlaut.pdfbin0 -> 414201 bytes
-rw-r--r--Master/texmf-dist/doc/latex/sanitize-umlaut/sanitize-umlaut.tex316
-rw-r--r--Master/texmf-dist/tex/latex/sanitize-umlaut/sanitize-umlaut.sty88
-rwxr-xr-xMaster/tlpkg/bin/tlpkg-ctan-check3
-rw-r--r--Master/tlpkg/tlpsrc/collection-latexextra.tlpsrc1
-rw-r--r--Master/tlpkg/tlpsrc/sanitize-umlaut.tlpsrc0
9 files changed, 535 insertions, 1 deletions
diff --git a/Master/texmf-dist/doc/latex/sanitize-umlaut/README b/Master/texmf-dist/doc/latex/sanitize-umlaut/README
new file mode 100644
index 00000000000..3ec7151a8c0
--- /dev/null
+++ b/Master/texmf-dist/doc/latex/sanitize-umlaut/README
@@ -0,0 +1,41 @@
+%% The LaTeX package sanitize-umlaut - version 1.00 (2016/05/28)
+%%
+%% --------------------------------------------------------------------------------------
+%% Copyright (c) 2016 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
+%%
+
+The packages sanitizes umlauts to be used directly in index entries for
+MakeIndex and friends with pdflatex. This means, that inside '\index' an umlaut
+can be used as "U or directly. In both cases, the letter is written as "U into
+the raw index file for correct processing with MakeIndex and pdflatex.
+
+Contents of the package
+=======================
+ 'README' this file
+ 'sanitize-umlaut.sty' LaTeX package file (style file)
+ 'sanitize-umlaut.pdf' Documentation
+ 'sanitize-umlaut.tex' Source code of the documentation (main file)
+ '*.doc.*' Source code of the documentation (include files)
+ 'german.ist' MakeIndex style
+
+Installation
+============
+Copy the contents of the 'sanitize-umlaut.tds.zip' from CTAN to your local TeX file tree.
+
+Alternatively, put the files to their respective locations within the TeX installation:
+ 'sanitize-umlaut.sty' -> /tex/latex/sanitize-umlaut
+
+ all other files -> /doc/latex/sanitize-umlaut
diff --git a/Master/texmf-dist/doc/latex/sanitize-umlaut/german.ist b/Master/texmf-dist/doc/latex/sanitize-umlaut/german.ist
new file mode 100644
index 00000000000..6156f54cc3e
--- /dev/null
+++ b/Master/texmf-dist/doc/latex/sanitize-umlaut/german.ist
@@ -0,0 +1,3 @@
+actual '=' % instead of @
+quote '!' % instead of "
+level '>' % instead of !
diff --git a/Master/texmf-dist/doc/latex/sanitize-umlaut/sanitize-umlaut.doc.sty b/Master/texmf-dist/doc/latex/sanitize-umlaut/sanitize-umlaut.doc.sty
new file mode 100644
index 00000000000..6d99b4ddc00
--- /dev/null
+++ b/Master/texmf-dist/doc/latex/sanitize-umlaut/sanitize-umlaut.doc.sty
@@ -0,0 +1,84 @@
+% !TeX root = sanitize-umlaut.tex
+% include file (style) of sanitize-umlaut.tex (manual of the LaTeX package sanitize-umlaut)
+\renewcommand*\l@subsection{\@dottedtocline{2}{1.5em}{2.7em}}
+\renewcommand*\l@subsubsection{\@dottedtocline{3}{4.2em}{3.2em}}
+
+\RequirePackage[T1]{fontenc}
+\RequirePackage[utf8]{inputenc}
+\RequirePackage[english]{babel}
+\RequirePackage{lmodern,parskip,array}
+\RequirePackage[svgnames,table,hyperref]{xcolor}
+\RequirePackage{tikz}
+\RequirePackage{varioref}
+\RequirePackage[pdftex,bookmarks,raiselinks,pageanchor,hyperindex,colorlinks]{hyperref}
+\RequirePackage{varwidth,cleveref,incgraph}
+
+\RequirePackage[a4paper,left=2.5cm,right=2.5cm,top=1.5cm,bottom=1.5cm,
+ marginparsep=3mm,marginparwidth=18mm,
+ headheight=0mm,headsep=0cm,
+ footskip=1.5cm,includeheadfoot%,showframe
+ ]{geometry}
+\RequirePackage{fancyhdr}
+\fancyhf{}
+\fancyfoot[C]{\thepage}%
+\renewcommand{\headrulewidth}{0pt}
+\renewcommand{\footrulewidth}{0pt}
+\pagestyle{fancy}
+\tolerance=2000%
+\setlength{\emergencystretch}{20pt}%
+
+\RequirePackage{array,tabularx,booktabs}
+\RequirePackage{lipsum}
+\RequirePackage[extendedchars,encoding,filenameencoding=utf-8]{grffile}
+
+\RequirePackage{tcolorbox}
+
+\tcbuselibrary{skins,xparse,minted,breakable,documentation,raster}
+
+\definecolor{Green_Dark}{rgb}{0.078431,0.407843,0.176471}
+\definecolor{Blue_Dark}{rgb}{0.090196,0.211765,0.364706}
+\definecolor{Blue_Bright}{rgb}{0.858824,0.898039,0.945098}
+
+
+\tcbset{skin=enhanced,
+ doc head={colback=yellow!10!white,interior style=fill},
+ doc head key={colback=magenta!5!white,interior style=fill},
+ color key=DarkViolet,
+ color value=Teal,
+ color color=Teal,
+ color counter=Orange!85!black,
+ color length=Orange!85!black,
+ index colorize,
+ index annotate,
+ beforeafter example/.style={
+ before skip=4pt plus 2pt minus 1pt,
+ after skip=8pt plus 4pt minus 2pt
+ },
+ docexample/.style={bicolor,
+ beforeafter example,
+ arc is angular,fonttitle=\bfseries,
+ fontlower=\footnotesize,
+ colframe=Blue_Dark,
+ colback=Blue_Bright!25,
+ colbacklower=white,
+ drop fuzzy shadow,
+ listing engine=minted,
+ documentation minted style=colorful,
+ },
+}
+\urlstyle{sf}
+
+\newtcblisting{fullexample}[1]{docexample,minted style=colorful,
+ listing and comment,pdf comment,compilable listing,#1}
+
+\DeclareTotalTCBox{\myverb}{ O{} v }{tile,fontupper=\ttfamily,nobeforeafter,
+ tcbox raise base,boxsep=0.5mm,top=0pt,bottom=0pt,left=0pt,right=0pt,boxrule=0.3mm,
+ colback=yellow!10,
+ borderline horizontal={0.3mm}{0pt}{red!50},
+ #1}{#2}
+
+
+% patch for tcolorbox older than 3.92
+\tcbset{
+ compilable listing/.style={listing file={\jobname-listing-\thetcblistingcount.tex}},
+}
diff --git a/Master/texmf-dist/doc/latex/sanitize-umlaut/sanitize-umlaut.pdf b/Master/texmf-dist/doc/latex/sanitize-umlaut/sanitize-umlaut.pdf
new file mode 100644
index 00000000000..732f1095609
--- /dev/null
+++ b/Master/texmf-dist/doc/latex/sanitize-umlaut/sanitize-umlaut.pdf
Binary files differ
diff --git a/Master/texmf-dist/doc/latex/sanitize-umlaut/sanitize-umlaut.tex b/Master/texmf-dist/doc/latex/sanitize-umlaut/sanitize-umlaut.tex
new file mode 100644
index 00000000000..653bb72f00a
--- /dev/null
+++ b/Master/texmf-dist/doc/latex/sanitize-umlaut/sanitize-umlaut.tex
@@ -0,0 +1,316 @@
+% \LaTeX-Main\
+% !TeX encoding=UTF-8
+% !TeX spellcheck=en_US
+%%
+%% The LaTeX package sanitize-umlaut - version 1.00 (2016/05/28)
+%% sanitize-umlaut.tex: Manual
+%%
+%% --------------------------------------------------------------------------------------
+%% Copyright (c) 2016 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
+%%
+\documentclass[a4paper,11pt]{ltxdoc}
+
+\usepackage{sanitize-umlaut.doc}
+\usepackage{%
+ sanitize-umlaut}
+
+\def\version{1.00}%
+\def\datum{2016/05/28}%
+
+\hypersetup{
+ pdftitle={Manual for the sanitize-umlaut package},
+ pdfauthor={Thomas F. Sturm},
+ pdfsubject={sanitize umlauts for makeindex},
+ pdfkeywords={index, umlauts, makeindex, pdflatex}
+}
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\begin{document}
+
+\begin{center}
+\begin{tcolorbox}[enhanced,hbox,tikznode,left=8mm,right=8mm,boxrule=0.4pt,
+ colback=white,colframe=black!50!yellow,
+ drop lifted shadow=black!50!yellow,arc is angular,
+ before=\par\vspace*{5mm},after=\par\bigskip]
+{\bfseries\LARGE The \texttt{sanitize-umlaut} package}\\[3mm]
+{\large Manual for version \version\ (\datum)}
+\end{tcolorbox}
+{\large Thomas F.~Sturm%
+ \footnote{Prof.~Dr.~Dr.~Thomas F.~Sturm, Institut f\"{u}r Mathematik und Informatik,
+ Universit\"{a}t der Bundeswehr M\"{u}nchen, D-85577 Neubiberg, Germany;
+ email: \href{mailto:thomas.sturm@unibw.de}{thomas.sturm@unibw.de}}\par\medskip
+\normalsize\url{http://www.ctan.org/pkg/sanitize-umlaut}\par
+\url{https://github.com/T-F-S/sanitize-umlaut}
+}
+\end{center}
+\bigskip
+\begin{absquote}
+ \begin{center}\bfseries Abstract\end{center}
+ The packages sanitizes umlauts to be used directly in index entries for
+ MakeIndex and friends with |pdflatex|. This means, that inside |\index| an umlaut can
+ be used as \texttt{"U} or \texttt{Ü}. In both cases, the letter is written
+ as \texttt{"U} into the raw index file for correct processing with MakeIndex
+ and |pdflatex|.
+\end{absquote}
+
+\begin{tcolorbox}[breakable,enhanced jigsaw,title={Contents},fonttitle=\bfseries\Large,
+ colback=yellow!10!white,colframe=red!50!black,before=\par\bigskip\noindent,
+ colbacktitle=red!50!yellow!75!black,
+ enlargepage flexible=\baselineskip,pad at break*=3mm,
+ attach boxed title to top center={yshift=-0.25mm-\tcboxedtitleheight/2,yshifttext=2mm-\tcboxedtitleheight/2},
+ boxed title style={enhanced,boxrule=0.5mm,
+ frame code={ \path[tcb fill frame] ([xshift=-4mm]frame.west) -- (frame.north west)
+ -- (frame.north east) -- ([xshift=4mm]frame.east)
+ -- (frame.south east) -- (frame.south west) -- cycle; },
+ interior code={ \path[tcb fill interior] ([xshift=-2mm]interior.west)
+ -- (interior.north west) -- (interior.north east)
+ -- ([xshift=2mm]interior.east) -- (interior.south east) -- (interior.south west)
+ -- cycle;} },
+ drop fuzzy shadow]
+\makeatletter
+\@starttoc{toc}
+\makeatother
+\end{tcolorbox}
+
+\clearpage
+\section{Purpose of the Package}%
+The packages sanitizes umlauts to be used directly in index entries for
+|makeindex| and friends with |pdflatex|. This means, that inside |\index| an umlaut can
+be used as \myverb{"U} or \myverb{Ü}. In both cases, the letter is written
+as \myverb{"U} into the raw index file for correct processing with |makeindex|
+and |pdflatex|.
+
+The package is intended
+\begin{itemize}
+\item for documents in german language using the babel package with a setting
+ identical or similar to \myverb{\usepackage[ngerman]{babel}}.
+\item for documents which are processed by |latex| or |pdflatex| (not |lualatex| or |xelatex|).
+\item for documents with an index which is processed using the
+ MakeIndex program.
+\item for authors who like to use \myverb{\index{Übermaß}} instead of
+ \myverb{\index{"Uberma"s}}.
+\end{itemize}
+
+All these conditions are satisfiable by simply including the |sanitize-umlaut|
+package.
+
+An alternative would be to filter the resulting raw \myverb{.idx} index
+\emph{before} |makeindex| is applied to create the final \myverb{.ind} index.
+Another alternative is to replace MakeIndex by Xindy or another index
+processor.
+
+
+\section{Package Usage}%
+
+\subsection{Prerequisites}
+The source document needs some encoding by |inputenc| since |pdflatex|
+is assumed as engine. For example:
+
+\begin{dispListing}
+\usepackage[utf8]{inputenc}
+\end{dispListing}
+
+Just some few encodings are supported by |sanitize-umlaut|.
+These are the most important for German language texts:
+
+\tcbox[center,size=minimal,enhanced,frame hidden,colback=red!10]{\begin{tabular}{>{\ttfamily}l>{\ttfamily}l}\toprule
+\textnormal{\bfseries encoding} & \textnormal{\bfseries recognized as}\\\midrule
+utf8 & utf8\\
+latin1, ansinew, cp1252 & latin1\\
+applemac & applemac\\\bottomrule
+\end{tabular}}
+
+Further, the |babel| package with German settings is needed:
+
+\begin{dispListing}
+\usepackage[ngerman]{babel}
+\end{dispListing}
+
+\subsection{Package Application}
+Now, the package application is simple. You just put
+
+\begin{dispListing}
+\usepackage{sanitize-umlaut}
+\end{dispListing}
+
+into your document preamble \emph{after} |inputenc| and, maybe, after |babel|.
+That is all.
+
+
+\subsection{Sanitized Characters}
+
+The umlauts and the sharp s are replaced by their |babel| shorthand codes
+which are written to the \myverb{.idx} file.
+
+\tcbox[center,size=minimal,enhanced,frame hidden,colback=red!10]{\begin{tabular}{>{\ttfamily}l>{\ttfamily}l}\toprule
+\textnormal{\bfseries character} & \textnormal{\bfseries replacement}\\\midrule
+ä & "a\\
+ö & "o\\
+ü & "u\\
+Ä & "A\\
+Ö & "O\\
+Ü & "U\\
+ß & "s\\\bottomrule
+\end{tabular}}
+
+
+\subsection{Technical Information}
+
+The package uses \myverb{\inputencodingname} (set by the |inputencoding| package)
+to determine the current encoding.
+
+The package redefines the \myverb{\@sanitize} macro at the begin of the
+document. It adds some encoding redefinitions to this macro.
+\myverb{\@sanitize} is used inside \myverb{\index} in a local group.
+If another package (besides |babel|) also changes this macro or uses it
+outside \myverb{\index}, strange things may happen.
+
+
+\clearpage
+\section{Application Examples}%
+
+\tcbinputlisting{docexample,listing file=german.ist,listing only,minted style=colorful,
+ title={file |"german.ist"| for the examples}}
+
+
+\begin{fullexample}{run arara}
+% !TeX encoding=UTF-8
+% arara: pdflatex
+% arara: makeindex: { style: german.ist, german: true }
+% arara: pdflatex
+\documentclass[a4paper,12pt]{article}
+\usepackage[T1]{fontenc}
+\usepackage[utf8]{inputenc}
+\usepackage[ngerman]{babel}
+\usepackage{makeidx}
+\usepackage{sanitize-umlaut}
+\makeindex
+\begin{document}
+\section{Basic Example}
+Test äöüÄÖÜß.
+\index{Aber} \index{Arg} \index{Ärger}
+\index{Ofen} \index{Ö - wie schön} \index{oberhalb}
+\index{Ufer} \index{Übermaß}
+\index{Latex=\LaTeX} \index{Ärger>Index}
+Test äöüÄÖÜß.
+\printindex
+\end{document}
+\end{fullexample}
+
+
+\begin{fullexample}{run arara}
+% !TeX encoding=UTF-8
+% arara: pdflatex
+% arara: makeindex: { style: german.ist, german: true }
+% arara: pdflatex
+\documentclass[a4paper,12pt]{article}
+\usepackage[T1]{fontenc}
+\usepackage[utf8]{inputenc}
+\usepackage[ngerman]{babel}
+\usepackage{makeidx}
+\usepackage{sanitize-umlaut}
+\usepackage[hyperindex,colorlinks]{hyperref}
+\makeindex
+\begin{document}
+\section{Example with hyperref}
+Test äöüÄÖÜß.
+\index{Aber} \index{Arg} \index{Ärger}
+\index{Ofen} \index{Ö - wie schön} \index{oberhalb}
+\index{Ufer} \index{Übermaß}
+\index{Latex=\LaTeX} \index{Ärger>Index}
+Test äöüÄÖÜß.
+\printindex
+\end{document}
+\end{fullexample}
+
+
+\begin{fullexample}{run arara}
+% !TeX encoding=UTF-8
+% arara: pdflatex
+\documentclass[a4paper,12pt]{article}
+\usepackage[T1]{fontenc}
+\usepackage[utf8]{inputenc}
+\usepackage[ngerman]{babel}
+\usepackage[makeindex]{imakeidx}
+\makeindex[options=-s german.ist -g]
+\usepackage{sanitize-umlaut}
+\begin{document}
+\section{Example with imakeidx}
+Test äöüÄÖÜß.
+\index{Aber} \index{Arg} \index{Ärger}
+\index{Ofen} \index{Ö - wie schön} \index{oberhalb}
+\index{Ufer} \index{Übermaß}
+\index{Latex=\LaTeX} \index{Ärger>Index}
+Test äöüÄÖÜß.
+\printindex
+\end{document}
+\end{fullexample}
+
+
+\begin{fullexample}{run arara}
+% !TeX encoding=UTF-8
+% arara: pdflatex
+\documentclass[a4paper,12pt]{article}
+\usepackage[T1]{fontenc}
+\usepackage[utf8]{inputenc}
+\usepackage[ngerman]{babel}
+\usepackage[makeindex]{imakeidx}
+\makeindex[options=-s german.ist -g]
+\usepackage{sanitize-umlaut}
+\usepackage[hyperindex,colorlinks]{hyperref}
+\begin{document}
+\section{Example with imakeidx and hyperref}
+Test äöüÄÖÜß.
+\index{Aber} \index{Arg} \index{Ärger}
+\index{Ofen} \index{Ö - wie schön} \index{oberhalb}
+\index{Ufer} \index{Übermaß}
+\index{Latex=\LaTeX} \index{Ärger>Index}
+Test äöüÄÖÜß.
+\printindex
+\end{document}
+\end{fullexample}
+
+
+\begin{fullexample}{run arara}
+% !TeX encoding=UTF-8
+% arara: pdflatex
+\documentclass[a4paper,12pt]{article}
+\usepackage[T1]{fontenc}
+\usepackage[utf8]{inputenc}
+\usepackage[ngerman]{babel}
+\usepackage[makeindex]{imakeidx}
+\indexsetup{level=\section*,noclearpage}
+\makeindex[name=personen,title=Personenregister,options=-s german.ist -g]
+\makeindex[name=allgemein,title=Allgemeines Register,options=-s german.ist -g]
+\usepackage{sanitize-umlaut}
+\begin{document}
+\section{Example with multiple indexes}
+Test äöüÄÖÜß.
+\index[personen]{Huber, Hans} \index[personen]{Hübner, Jörg}
+\index[allgemein]{Aber} \index[allgemein]{Arg}
+\index[allgemein]{Ärger} \index[allgemein]{Ofen}
+\index[allgemein]{Ö - wie schön} \index[allgemein]{oberhalb}
+\index[allgemein]{Ufer} \index[allgemein]{Übermaß}
+\index[allgemein]{Latex=\LaTeX} \index[allgemein]{Ärger>Index}
+Test äöüÄÖÜß.
+\clearpage
+\printindex[allgemein]
+\printindex[personen]
+\end{document}
+\end{fullexample}
+
+
+\end{document}
diff --git a/Master/texmf-dist/tex/latex/sanitize-umlaut/sanitize-umlaut.sty b/Master/texmf-dist/tex/latex/sanitize-umlaut/sanitize-umlaut.sty
new file mode 100644
index 00000000000..d48a86874a0
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/sanitize-umlaut/sanitize-umlaut.sty
@@ -0,0 +1,88 @@
+%% The LaTeX package sanitize-umlaut - version 1.00 (2016/05/28)
+%% sanitize-umlaut.sty: Sanitize umlauts for makeindex
+%%
+%% --------------------------------------------------------------------------------------
+%% Copyright (c) 2016 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}[2016/05/28 version 1.00 sanitize umlauts]
+
+\def\define@unicode@char#1#2{%
+ \@namedef{u8:\detokenize{#1}}{#2}%
+}
+
+\begingroup
+\catcode`\"=12
+
+\gdef\sanitize@umlaut@utfviii{%
+ \define@unicode@char{^^c3^^a4}{"a}%
+ \define@unicode@char{^^c3^^b6}{"o}%
+ \define@unicode@char{^^c3^^bc}{"u}%
+ \define@unicode@char{^^c3^^84}{"A}%
+ \define@unicode@char{^^c3^^96}{"O}%
+ \define@unicode@char{^^c3^^9c}{"U}%
+ \define@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{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
+\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}}}
diff --git a/Master/tlpkg/bin/tlpkg-ctan-check b/Master/tlpkg/bin/tlpkg-ctan-check
index 2b0e292b58e..519040d8795 100755
--- a/Master/tlpkg/bin/tlpkg-ctan-check
+++ b/Master/tlpkg/bin/tlpkg-ctan-check
@@ -500,7 +500,8 @@ my @TLP_working = qw(
rrgtrees rsc rsfs rsfso
rterface rtkinenc rtklage rubik ruhyphen rulercompass russ
rviewport rvwrite ryethesis
- sa-tikz sageep sanskrit sanskrit-t1 sansmath sansmathaccent sansmathfonts
+ sa-tikz sageep sanitize-umlaut
+ sanskrit sanskrit-t1 sansmath sansmathaccent sansmathfonts
sapthesis sasnrdisplay sauerj
sauter sauterfonts savefnmark savesym savetrees
scale scalebar scalerel scanpages
diff --git a/Master/tlpkg/tlpsrc/collection-latexextra.tlpsrc b/Master/tlpkg/tlpsrc/collection-latexextra.tlpsrc
index e30b41d035b..cd62a12af62 100644
--- a/Master/tlpkg/tlpsrc/collection-latexextra.tlpsrc
+++ b/Master/tlpkg/tlpsrc/collection-latexextra.tlpsrc
@@ -842,6 +842,7 @@ depend rterface
depend rtkinenc
depend rulercompass
depend rvwrite
+depend sanitize-umlaut
depend sauerj
depend savefnmark
depend savesym
diff --git a/Master/tlpkg/tlpsrc/sanitize-umlaut.tlpsrc b/Master/tlpkg/tlpsrc/sanitize-umlaut.tlpsrc
new file mode 100644
index 00000000000..e69de29bb2d
--- /dev/null
+++ b/Master/tlpkg/tlpsrc/sanitize-umlaut.tlpsrc