% This is UMLAUT.TeX as of 14-JUL-1995 by Miroslav Lednicky
%
% Kamenickych Czech Umlaut keys for Atari ST Computer with TeX 3.* // *.*cs
%
% Version 1.1  24.04.1991  now compatible with AmS-TeX 2.0
% Version 1.2  08.06.1991  remove some errors introduced at 24.04.1991
% Version 1.3  29.10.1991  some cosmetic changes
% Version 2.0  15.02.1992  solved problems with MakeIndex et alia
% Version 2.1  31.03.1992  made it independent of `german.sty'
% Version 2.2  23.04.1992  solved problems with math mode
%
% This file contains - together with TEX.TTP - the coding of the Cork table.
% If you want to see the cork codes, you must install an appropriate system
% font with FONT.PRG first.
%
% Currently this file works with the standard fonts. For Cork fonts - when they
% become available some day - a different file must be used.
%
% The first part works with both: AtariTeX 2.98 // 1.4 and AtariTeX 3.x // y.z
%
\message{Atari ST umlaut keys -- Version 2.2, Kamenickych Czech  of 14 JULY 1995}
%
\ifx\protect\undefined\let\protect=\relax\fi
\ifx\allowhyphens\undefined\bgroup\catcode`@=11 % letter
\gdef\allowhyphens{\penalty\@M \hskip\z@skip}\egroup\fi
%
% Umlaut chars should act like normal characters so we define upper and
% lower case codes.
%
\lccode`�=`� \uccode`�=`� \lccode`�=`� \uccode`�=`�
\lccode`�=`� \uccode`�=`� \lccode`�=`� \uccode`�=`�
\lccode`�=`� \uccode`�=`� \lccode`�=`� \uccode`�=`�
\lccode`�=`� \uccode`�=`� \lccode`�=`� \uccode`�=`�
\lccode`�=`� \uccode`�=`� \lccode`�=`� \uccode`�=`�
\lccode`�=`� \uccode`�=`� \lccode`�=`� \uccode`�=`�
\lccode`�=`� \uccode`�=`� \lccode`�=`� \uccode`�=`�
\lccode`�=`� \uccode`�=`� \lccode`�=`� \uccode`�=`�
\lccode`�=`� \uccode`�=`� \lccode`�=`� \uccode`�=`�
\lccode`�=`� \uccode`�=`� \lccode`�=`� \uccode`�=`�
\lccode`�=`� \uccode`�=`� \lccode`�=`� \uccode`�=`�
\lccode`�=`� \uccode`�=`� \lccode`�=`� \uccode`�=`�
\lccode`�=`� \uccode`�=`� \lccode`�=`� \uccode`�=`�
\lccode`�=`� \uccode`�=`� \lccode`�=`� \uccode`�=`�
\lccode`�=`� \uccode`�=`� \lccode`�=`� \uccode`�=`�
\lccode`�=`� \uccode`�=`� \lccode`�=`� \uccode`�=`�
\lccode`�=`� \uccode`�=`� \lccode`�=`� \uccode`�=`�
\lccode`�=`� \uccode`�=`� \lccode`�=`� \uccode`�=`�
\lccode`�=`� \uccode`�=`� % `�' is uppercase `�' in our cork table coding
%
% � -> "a   does not work with MakeIndex
% � -> \"a  does not work in math mode
% ... so we need our own macros ...
%
\def\UmLaut#1{\ifmmode\ddot{#1}\else\"#1\fi}
\def\EsZett{\ifmmode\mathchar'72031\else\ss\fi} % "7419 = '72031
%
% For cork fonts the following must be reversed, i.e. "a would expand into �
%
\catcode`�=\active \def�{\protect\UmLaut a}
\catcode`�=\active \def�{\protect\UmLaut o}
\catcode`�=\active \def�{\protect\UmLaut u}
\catcode`�=\active \def�{\protect\UmLaut A}
\catcode`�=\active \def�{\protect\UmLaut O}
\catcode`�=\active \def�{\protect\UmLaut U}
% \catcode`�=\active \def�{\protect\EsZett{}}% es-zet code; NOT beta !
\catcode`�=\active \def�{\protect\S{}}
%
% In old TeX we cannot do any more
%
\ifx\inputlineno\undefined
 \message{Your TeX is old. Please upgrade to TeX 3.0}\endinput\fi
\ifnum\inputlineno=-1
 \message{Your TeX is old. Please upgrade to TeX 3.0}\endinput\fi
%
% The following works for TeX 3.0 (and up) only.
%
% Some upper- and lower-case conversions for are already defined above and
% below. These are commented out here:
%
\lccode`�=`� \uccode`�=`� \lccode`�=`� \uccode`�=`�
\lccode`�=`� \uccode`�=`� \lccode`�=`� \uccode`�=`�
\lccode`�=`� \uccode`�=`� \lccode`�=`� \uccode`�=`�
\lccode`�=`� \uccode`�=`� \lccode`�=`� \uccode`�=`�
\lccode`�=`� \uccode`�=`� \lccode`�=`� \uccode`�=`�
\lccode`�=`� \uccode`�=`� \lccode`�=`� \uccode`�=`�
\lccode`�=`� \uccode`�=`� \lccode`�=`� \uccode`�=`�
\lccode`�=`� \uccode`�=`� \lccode`�=`� \uccode`�=`�
\lccode`�=`� \uccode`�=`� \lccode`�=`� \uccode`�=`�
\lccode`�=`� \uccode`�=`� \lccode`�=`� \uccode`�=`�
\lccode`�=`� \uccode`�=`� \lccode`�=`� \uccode`�=`�
\lccode`�=`� \uccode`�=`� \lccode`�=`� \uccode`�=`�
\lccode`�=`� \uccode`�=`� \lccode`�=`� \uccode`�=`�
\lccode`�=`� \uccode`�=`� \lccode`�=`� \uccode`�=`�
\lccode`�=`� \uccode`�=`� \lccode`�=`� \uccode`�=`�
\lccode`�=`� \uccode`�=`� \lccode`�=`� \uccode`�=`�
\lccode`�=`� \uccode`�=`� \lccode`�=`� \uccode`�=`�
\lccode`�=`� \uccode`�=`� \lccode`�=`� \uccode`�=`�
\lccode`�=`� \uccode`�=`� \lccode`�=`� \uccode`�=`�
\lccode`�=`� \uccode`�=`� \lccode`�=`� \uccode`�=`�
\lccode`�=`� \uccode`�=`� \lccode`�=`� \uccode`�=`�
\lccode`�=`� \uccode`�=`� \lccode`�=`� \uccode`�=`�
\lccode`�=`� \uccode`�=`� \lccode`�=`� \uccode`�=`�
\lccode`�=`� \uccode`�=`� \lccode`�=`� \uccode`�=`�
\lccode`�=`� \uccode`�=`� \lccode`�=`� \uccode`�=`�
\lccode`�=`� \uccode`�=`� \lccode`�=`� \uccode`�=`�
\lccode`�=`� \uccode`�=`� \lccode`�=`� \uccode`�=`�
\lccode`�=`� \uccode`�=`� \lccode`�=`� \uccode`�=`�
\lccode`�=`� \uccode`�=`� \lccode`�=`� \uccode`�=`�
%% \lccode`�=`� \uccode`�=`� \lccode`�=`� \uccode`�=`� % useless
%% \lccode`�=`� \uccode`�=`� \lccode`�=`� \uccode`�=`� % useless
%% \lccode`�=`� \uccode`�=`� \lccode`�=`� \uccode`�=`� % useless
%% \lccode`�=`� \uccode`�=`� \lccode`�=`� \uccode`�=`�
%% \lccode`�=`� \uccode`�=`� \lccode`�=`� \uccode`�=`�
%% \lccode`�=`� \uccode`�=`� \lccode`�=`� \uccode`�=`�
%% \lccode`�=`� \uccode`�=`� \lccode`�=`� \uccode`�=`�
%% \lccode`�=`� \uccode`�=`� \lccode`�=`� \uccode`�=`� % see above
%% \lccode`�=`� \uccode`�=`� \lccode`�=`� \uccode`�=`�
%% \lccode`�=`� \uccode`�=`� \lccode`�=`� \uccode`�=`�
%% \lccode`�=`� \uccode`�=`� \lccode`�=`� \uccode`�=`�
%% \lccode`�=`� \uccode`�=`� \lccode`�=`� \uccode`�=`�
%% \lccode`�=`� \uccode`�=`� \lccode`�=`� \uccode`�=`�
%% \lccode`�=`� \uccode`�=`� \lccode`�=`� \uccode`�=`�
%% \lccode`�=`� \uccode`�=`� \lccode`�=`� \uccode`�=`�
%% \lccode`�=`� \uccode`�=`� \lccode`�=`� \uccode`�=`�
%% \lccode`�=`� \uccode`�=`� \lccode`�=`� \uccode`�=`�
\lccode`�=`� \uccode`�=`� \lccode`�=`� \uccode`�=`�
%% \lccode`�=`� \uccode`�=`� \lccode`�=`� \uccode`�=`�
\lccode`�=`� \uccode`�=`� \lccode`�=`� \uccode`�=`�
\lccode`�=`� \uccode`�=`� \lccode`�=`� \uccode`�=`�
%% \lccode`�=`� \uccode`�=`� \lccode`�=`� \uccode`�=`�
%% \lccode`�=`� \uccode`�=`� \lccode`�=`� \uccode`�=`�
\lccode`�=`� \uccode`�=`� \lccode`�=`� \uccode`�=`�
\lccode`�=`� \uccode`�=`� \lccode`�=`� \uccode`�=`�
% \lccode`�=`� \uccode`�=`� \lccode`�=`� \uccode`�=`� % see above
\lccode`�=`� \uccode`�=`� \lccode`�=`� \uccode`�=`�
\lccode`�=`� \uccode`�=`� \lccode`�=`� \uccode`�=`�
%% \lccode`�=`� \uccode`�=`� \lccode`�=`� \uccode`�=`�
%% \lccode`�=`� \uccode`�=`� \lccode`�=`� \uccode`�=`�
%% \lccode`�=`� \uccode`�=`� \lccode`�=`� \uccode`�=`�
% \lccode`�=`� \uccode`�=`� \lccode`�=`� \uccode`�=`� % see above
%% \lccode`�=`� \uccode`�=`� \lccode`�=`� \uccode`�=`�
%% \lccode`�=`� \uccode`�=`� \lccode`�=`� \uccode`�=`�
% \lccode`�=`� \uccode`�=`� \lccode`�=`� \uccode`�=`� % see above and below
%
% The following definitions come directly from the Cork table:
%
\ifx\pounds\undefined
 \def\UMLpounds{\protect\UMLppounds}
% Avoid \mathchar"424 since `"' may be active; use "424='2044
 \def\UMLppounds{\relax\ifmmode\mathchar'2044\else{\it \char'44}\fi}
\else
 \let\UMLpounds=\pounds
\fi
%
\font\UMLminisan=cmss10
\font\UMLsan=cmss10 scaled \magstep1
\font\UMLSan=cmss10 scaled \magstep2
%
\def\UMLeng{{\UMLsan r \hskip-6pt\j}}
\def\UMLEng{{\UMLSan r \hskip-7pt\j}}
\def\UMLthorn{\hbox{\UMLsan\lower3pt\hbox{l} \hskip-7pt\relax b}}
\def\UMLThorn{\hbox{\UMLSan\lower4pt\hbox{l} \hskip-8.5pt\relax b}}
\def\UMLeth{\hbox{\UMLminisan \raise4pt\hbox{$\times$} \hskip-8.5pt\relax o}}
\def\UMLEth{\rlap{\raise0.3ex\hbox{--}}D}
%
\def\UMLogonek#1{\setbox0=\hbox{`}\ooalign{%
  \hidewidth\lower\ht0\copy0\hidewidth\crcr#1\crcr}}
%
% Re-define Accents to allow hyphenation in words with special characters:
% \" should not be redefined.
%
\def\`#1{\leavevmode\allowhyphens{\accent18 #1}\allowhyphens}
\def\'#1{\leavevmode\allowhyphens{\accent19 #1}\allowhyphens}
\def\v#1{\leavevmode\allowhyphens{\accent20 #1}\allowhyphens}
\def\u#1{\leavevmode\allowhyphens{\accent21 #1}\allowhyphens}
\def\=#1{\leavevmode\allowhyphens{\accent22 #1}\allowhyphens}
\def\^#1{\leavevmode\allowhyphens{\accent94 #1}\allowhyphens}
\def\.#1{\leavevmode\allowhyphens{\accent95 #1}\allowhyphens}
\def\H#1{\leavevmode\allowhyphens{\accent125 #1}\allowhyphens}
\def\~#1{\leavevmode\allowhyphens{\accent126 #1}\allowhyphens}
%
% Now here is the rest of the Atari characters
% 
% This table describes how we implement user input codes for the
% cork table. These codes may vary between installations; this will
% be especially true for the characters that are not part of the
% standard Atari ST font layout (similar to IBM PC font layout).
%
% As long as no Cork fonts are available, we must emulate them:
%
\catcode`�=\active \def�{\protect\v R}
\catcode`�=\active \def�{\protect\v C}
\catcode`�=\active \def�{\protect\' e}
\catcode`�=\active \def�{\protect\v d}
\catcode`�=\active \def�{\protect\v D}
\catcode`�=\active \def�{\protect\v T}
\catcode`�=\active \def�{\protect\v c}
\catcode`�=\active \def�{\protect\v e}
\catcode`�=\active \def�{\protect\v E}
\catcode`�=\active \def�{\protect\` e}
\catcode`�=\active \def�{\protect\' I}
\catcode`�=\active \def�{\protect\^ \i}
\catcode`�=\active \def�{\protect\` \i}
\catcode`�=\active \def�{\protect\' A}
\catcode`�=\active \def�{\protect\' E}
\catcode`�=\active \def�{\protect\v z}
\catcode`�=\active \def�{\protect\v Z}
\catcode`�=\active \def�{\protect\^ o}
\catcode`�=\active \def�{\protect\` O}
\catcode`�=\active \def�{\protect\accent23 u}
\catcode`�=\active \def�{\protect\' U}
\catcode`�=\active \def�{\protect\' y}
\catcode`�=\active \def�{\protect\v S}
\catcode`�=\active \def�{\protect\UMLpounds{}}
\catcode`�=\active \def�{\protect\' Y}
\catcode`�=\active \def�{\protect\v t}
\catcode`�=\active \def�{\protect\' a}
\catcode`�=\active \def�{\protect\' \i}
\catcode`�=\active \def�{\protect\' o}
\catcode`�=\active \def�{\protect\' u}
\catcode`�=\active \def�{\protect\v n}
\catcode`�=\active \def�{\protect\v N}
\catcode`�=\active \def�{\protect\accent23 U}
\catcode`�=\active \def�{\protect\^ O}
\catcode`�=\active \def�{\protect\v s}
\catcode`�=\active \def�{\protect\v r}
\catcode`�=\active \def�{\protect\UMLEth}
\catcode`�=\active \def�{\protect\UMLeth}
\catcode`�=\active \def�{!`}
\catcode`�=\active \def�{\protect\` I}
\catcode`�=\active \def�{\protect\' I}
\catcode`�=\active \def�{\protect\~ a}
\catcode`�=\active \def�{\protect\~ o}
\catcode`�=\active \def�{\protect\O}
\catcode`�=\active \def�{\protect\o}
\catcode`�=\active \def�{\protect\oe}
\catcode`�=\active \def�{\protect\OE}
\catcode`�=\active \def�{\protect\` A}
\catcode`�=\active \def�{\protect\~ A}
\catcode`�=\active \def�{\protect\~ O}
\catcode`�=\active \def�{\protect\" I}
\catcode`�=\active \def�{\protect\' A}
\catcode`�=\active \def�{\protect\` E}
\catcode`�=\active \def�{\protect\` U}
\catcode`�=\active \def�{\protect\' y}
\catcode`�=\active \def�{\protect\UMLthorn}
\catcode`�=\active \def�{\protect\UMLThorn}
\catcode`�=\active \def�{ij}
\catcode`�=\active \def�{IJ}
\catcode`�=\active \def�{\protect\' C}
\catcode`�=\active \def�{\protect\v C}
\catcode`�=\active \def�{\protect\v D}
\catcode`�=\active \def�{\protect\v E}
\catcode`�=\active \def�{\protect\UMLogonek E}
\catcode`�=\active \def�{\protect\u G}
\catcode`�=\active \def�{\protect\' L}
\catcode`�=\active \def�{L\kern-2pt'}
\catcode`�=\active \def�{\protect\L}
\catcode`�=\active \def�{\protect\' N}
\catcode`�=\active \def�{\protect\v N}
\catcode`�=\active \def�{\protect\UMLEng}
\catcode`�=\active \def�{\protect\H O}
\catcode`�=\active \def�{\protect\' R}
\catcode`�=\active \def�{\protect\v R}
\catcode`�=\active \def�{\protect\' S}
\catcode`�=\active \def�{\protect\v S}
\catcode`�=\active \def�{\protect\c S}
\catcode`�=\active \def�{\protect\v T}
\catcode`�=\active \def�{\protect\c T}
\catcode`�=\active \def�{\protect\H U}
\catcode`�=\active \def�{\protect\accent23 U}
\catcode`�=\active \def�{\protect\^ I}
\catcode`�=\active \def�{\protect\' Z}
\catcode`�=\active \def�{\protect\v Z}
\catcode`�=\active \def�{\protect\. Z}
\catcode`�=\active \def�{\protect\UMLogonek A}
\catcode`�=\active \def�{\protect\^ A}
\catcode`�=\active \def�{d\llap{\raise0.7ex\hbox{--}}}
\catcode`�=\active \def�{\protect\u a}
\catcode`�=\active \def�{\protect\' c}
\catcode`�=\active \def�{\protect\v c}
\catcode`�=\active \def�{d\kern-1pt'}
\catcode`�=\active \def�{\protect\v e}
\catcode`�=\active \def�{\protect\UMLogonek e}
\catcode`�=\active \def�{\protect\u g}
\catcode`�=\active \def�{\protect\' l}
\catcode`�=\active \def�{l\kern-1pt'}
\catcode`�=\active \def�{\protect\l}
\catcode`�=\active \def�{\protect\' n}
\catcode`�=\active \def�{\protect\v n}
\catcode`�=\active \def�{\protect\UMLeng}
\catcode`�=\active \def�{\protect\H o}
\catcode`�=\active \def�{\protect\' r}
\catcode`�=\active \def�{\protect\v r}
\catcode`�=\active \def�{\protect\' s}
\catcode`�=\active \def�{\protect\v s}
\catcode`�=\active \def�{\protect\c s}
\catcode`�=\active \def�{t\kern-1pt'}
\catcode`�=\active \def�{\protect\c t}
\catcode`�=\active \def�{\protect\H u}
\catcode`�=\active \def�{\protect\accent23 u}
\catcode`�=\active \def�{\protect\" y}
\catcode`�=\active \def�{\protect\' z}
\catcode`�=\active \def�{\protect\v z}
\catcode`�=\active \def�{\protect\. z}
\catcode`�=\active \def�{\protect\u A}
\catcode`�=\active \def�{\protect\" E}
\catcode`�=\active \def�{\protect\^ E}
\catcode`�=\active \def�{\protect\. I}
%
% For compatibility we also define the standard IBM PC codes
% Beta is mapped onto es-zet !
%
% \catcode`�=\active \def�{�}% PC users use beta for es-zet
% \lccode`�=`� \uccode`�=`� % � is uppercase `�' in our cork table coding
\catcode`^^U=\active \def^^U{\protect\S{}}% PC paragraph sign
%
% -eof-
