% This is FCUSE.STY 
% Version 1.1 
% Date 8-MAY-1993
% 
% (c) 1992, 1993 by J"org Knappen
% This file is part of the fc-package 
% See fc.rme for more information
%
% J"org Knappen
% Institut f"ur Kernphysik
% Postfach 39 80
% D-W 6500 Mainz
% knappen@vkpmzd.kph.uni-mainz.de
%
% The african zusatz letters are made more typeable by this style. This is
% achieved by making three characters active: + = /
% All these characters keep their usual meaning in math mode, type $+$ to get
% a plus in text. By duplication, you also get the escape character.
%
% the plus has the heaviest load:
% +b: hooktop b
% +c: hooktop c
% +d: hooktop d
% +e: open e
% +f: long f
% +g: ipa gamma
% +i: latin iota
% +j: enj
% +k: hooktop k
% +n: eng
% +o: open o
% +p: hooktop p
% +s: esh
% +t: hooktop t
% +u: variant u
% +v: round v (variant u)
% +y: hooktop y
% +z: ezh
% ++: plus sign
% ...and the uppercase ones
%
% The slash produces some crossed forms:
% /d: crossed d
% /h: crossed h
% /t: crossed t
% //: slash
% ...and the uppercase ones
%
% The rest is left to the equals sign:
% =d: d with tail
% =e: inverted e
% =t: long t
% ==: equals sign
% ...and the uppercase ones
%


% Add the active characters to \do and \sanitize
\begingroup
  \def\do{\noexpand\do\noexpand}%
  \edef\next{\endgroup
   \def\noexpand\dospecials{\dospecials\do\+\dospecials\do\=\dospecials\do\/}}%
\next
  \begingroup
    \def\@makeother{\noexpand\@makeother\noexpand}%
    \edef\next{\endgroup
      \def\noexpand\@sanitize{\@sanitize\@makeother\+\@sanitize\@makeother\=%
      \@sanitize\@makeother\/}}%
\next


%
%  active character mechanism
%  ----------------------------
%
\def\activecharactersoff{%
  \catcode`\==12 \catcode`\+=12 \catcode`\/=12 }
\def\activecharacterson{%
  \catcode`\==\active\catcode`\+=\active\catcode`\/=\active}

\begingroup \activecharactersoff
\def\next{\endgroup
  \def\originalplus{+}
  \def\originalequals{=}
  \def\originalslash{/}}
\next


% For all arguments of an active character which should be treated in
% a special way, we define a macro with the argument text in the name.
%
% \ch@macro#1 constructs this name.   (Where ch is either
% plus, equals or slash)
%
% (If the expansion of \ch@macro results in another call of \ch@macro
% the inner macro shouldn't contain unexpandable primitives like
% \relax.  Otherwise TeX warns about a "Missing \endcsname inserted."
% 
%
\def\plus@macro#1{\csname @plus@\string #1@plus@\endcsname}
\def\equals@macro#1{\csname @equals@\string #1@equals@\endcsname}
\def\slash@macro#1{\csname @slash@\string #1@slash@\endcsname}

% The definition of the active character macro:
%
%
\def\@active@plus#1{\expandafter\expandafter\expandafter
  \ifx\plus@macro{#1}\relax
    \expandafter\normal@plus
  \else
    \expandafter\protect\expandafter\active@plus
  \fi {#1}}
\def\@active@equals#1{\expandafter\expandafter\expandafter
  \ifx\equals@macro{#1}\relax
    \expandafter\normal@equals
  \else
    \expandafter\protect\expandafter\active@equals
  \fi {#1}}
\def\@active@slash#1{\expandafter\expandafter\expandafter
  \ifx\slash@macro{#1}\relax
    \expandafter\normal@slash
  \else
    \expandafter\protect\expandafter\active@slash
  \fi {#1}}


% The braces of {#1} in \@active@ch are necessary if someone wants to
% define a active character macro for things like "{}.  They ensure that
% \active@ch is called with the correct argument.
% For \normal@ch we have to delete the braces and insert a normal
% character.
%
\def\normal@plus#1{\originalplus #1}
\def\normal@equals#1{\originalequals #1}
\def\normal@slash#1{\originalslash #1}


% For combinations +x, =x, /x which should be treated in a special way,
% \active@ch is called with `x' as argument.
% In the current implementation the actions for argument #1 are saved
% in macro with name \ch@macro{#1}.  These macro expand to two groups
% containing the action for text and for math mode.
% The support of other ``modes''  can be implemented
% in this macro.
% +
\def\active@plus#1{%
  \csname plus@\ifmmode second\else first\fi
%     \plus@macro has to be expanded three times:
%     1. \plus@macro       --> \csname...
%     2. \csname...      --> control seqence
%     3. control seqence --> {text mode}{math mode}
    \expandafter\expandafter\expandafter\expandafter
    \expandafter\expandafter\expandafter
  \endcsname
  \plus@macro{#1}}
%
\def\plus@first#1#2{#1}
\def\plus@second#1#2{#2}
% =
\def\active@equals#1{%
  \csname equals@\ifmmode second\else first\fi
%     \equals@macro has to be expanded three times:
%     1. \equals@macro       --> \csname...
%     2. \csname...      --> control seqence
%     3. control seqence --> {text mode}{math mode}
    \expandafter\expandafter\expandafter\expandafter
    \expandafter\expandafter\expandafter
  \endcsname
  \equals@macro{#1}}
%
\def\equals@first#1#2{#1}
\def\equals@second#1#2{#2}
% /
\def\active@slash#1{%
  \csname slash@\ifmmode second\else first\fi
%     \slash@macro has to be expanded three times:
%     1. \slash@macro       --> \csname...
%     2. \csname...      --> control seqence
%     3. control seqence --> {text mode}{math mode}
    \expandafter\expandafter\expandafter\expandafter
    \expandafter\expandafter\expandafter
  \endcsname
  \slash@macro{#1}}
%
\def\slash@first#1#2{#1}
\def\slash@second#1#2{#2}


% The definition of a ch-macro is done with...
%
% +
%
\def\def@plusmacro#1#2#3{\expandafter\expandafter\expandafter
  \def\plus@macro{#1}{{#2}{#3}}}

\def\let@plusmacro#1#2{\begingroup
  \edef\next{\endgroup \let
    \expandafter\expandafter\expandafter\noexpand\plus@macro{#1}%
    \expandafter\expandafter\expandafter\noexpand\plus@macro{#2}}%
  \next}
% =
\def\def@equalsmacro#1#2#3{\expandafter\expandafter\expandafter
  \def\equals@macro{#1}{{#2}{#3}}}

\def\let@equalsmacro#1#2{\begingroup
  \edef\next{\endgroup \let
    \expandafter\expandafter\expandafter\noexpand\equals@macro{#1}%
    \expandafter\expandafter\expandafter\noexpand\equals@macro{#2}}%
  \next}
% /
\def\def@slashmacro#1#2#3{\expandafter\expandafter\expandafter
  \def\slash@macro{#1}{{#2}{#3}}}

\def\let@slashmacro#1#2{\begingroup
  \edef\next{\endgroup \let
    \expandafter\expandafter\expandafter\noexpand\slash@macro{#1}%
    \expandafter\expandafter\expandafter\noexpand\slash@macro{#2}}%
  \next}


% Definitions for all active character macros...
% (The empty groups after some macro are necessary for \write commands,
% otherwise spaces after these macro will be ignored.)
%
%     +
%
\def@plusmacro{b}{^^a0}{\originalplus b}
\def@plusmacro{c}{^^b0}{\originalplus c}
\def@plusmacro{d}{^^a1}{\originalplus d}
\def@plusmacro{e}{^^a2}{\originalplus e}
\def@plusmacro{f}{^^a4}{\originalplus f}
\def@plusmacro{g}{^^a6}{\originalplus g}
\def@plusmacro{i}{^^e0}{\originalplus i}
\def@plusmacro{j}{^^a9}{\originalplus j}
\def@plusmacro{k}{^^a8}{\originalplus k}
\def@plusmacro{n}{^^ad}{\originalplus n}
\def@plusmacro{o}{^^aa}{\originalplus o}
\def@plusmacro{p}{^^b1}{\originalplus p}
\def@plusmacro{s}{^^ac}{\originalplus s}
\def@plusmacro{t}{^^ba}{\originalplus t}
\def@plusmacro{u}{^^ae}{\originalplus u}
\def@plusmacro{v}{^^ae}{\originalplus v}
\def@plusmacro{y}{^^af}{\originalplus y}
\def@plusmacro{z}{^^b6}{\originalplus z}
\def@plusmacro{+}{\originalplus}{\originalplus\originalplus}
\def@plusmacro{B}{^^80}{\originalplus B}
\def@plusmacro{C}{^^90}{\originalplus C}
\def@plusmacro{D}{^^81}{\originalplus D}
\def@plusmacro{E}{^^82}{\originalplus E}
\def@plusmacro{F}{^^84}{\originalplus F}
\def@plusmacro{G}{^^86}{\originalplus G}
\def@plusmacro{I}{^^c0}{\originalplus I}
\def@plusmacro{J}{^^89}{\originalplus J}
\def@plusmacro{K}{^^88}{\originalplus K}
\def@plusmacro{N}{^^8d}{\originalplus N}
\def@plusmacro{O}{^^8a}{\originalplus O}
\def@plusmacro{P}{^^91}{\originalplus P}
\def@plusmacro{S}{^^8c}{\originalplus S}
\def@plusmacro{T}{^^9a}{\originalplus T}
\def@plusmacro{U}{^^8e}{\originalplus U}
\def@plusmacro{V}{^^8e}{\originalplus V}
\def@plusmacro{Y}{^^8f}{\originalplus Y}
\def@plusmacro{Z}{^^96}{\originalplus Z}

% =
\def@equalsmacro{d}{^^f0}{\originalequals d}
\def@equalsmacro{D}{^^d0}{\originalequals D}
\def@equalsmacro{t}{^^bb}{\originalequals t}
\def@equalsmacro{T}{^^9b}{\originalequals T}
\def@equalsmacro{e}{^^a3}{\originalequals e}
\def@equalsmacro{E}{^^83}{\originalequals E}
\def@equalsmacro{=}{\originalequals}{\originalequals\originalequals}

% /
\def@slashmacro{d}{^^9e}{\originalslash d}
\def@slashmacro{D}{^^d0}{\originalslash D}
\def@slashmacro{h}{^^a7}{\originalslash h}
\def@slashmacro{H}{^^87}{\originalslash H}
\def@slashmacro{t}{^^b7}{\originalslash t}
\def@slashmacro{T}{^^97}{\originalslash T}
\def@slashmacro{/}{\originalslash}{\originalslash\originalslash}
%
\activecharacterson
\let+\@active@plus
\let=\@active@equals
\let/\@active@slash
\endinput


