% kbtest.tex  Jeu d'essai des caracteres accentues 7bits et 8bits      04/28/93
%                           Copyright GUTenberg-Bernard Gaulle as in french.doc
%
% Peut etre compile sous TeX/LaTeX. C'est un fichier << binaire >> ASCII 8bits 
% Il est adapte a << mon >> clavier (voir apres les catcodes)
%============================================================
% Retrait du L scandinave le 7/10/93 pour etre en accord avec keyboard.dat
% NFSS2 ne pouvait pas traiter correctement ce fichier dans certains cas.
%       (bug dans \@accent@use) patch de Rainer Schoepf inclus.   --bg 15/12/93
% Desactivation des caracteres en dehors du test du format cad
%    qd keyboard.sty est appele a nouveau et fait tout le travail.
% Passage par un fichier auxchars.tex pour reintroduire dans la
%    bouche de TeX les caracteres desires.                        --bg 21/12/93
% Accepter le format LaTeX2e.                                     --bg 29/09/94
% Let 2e use \typeout instead of \message, hoping that \typeout
%   could expand in a next future (with a screen encoding).       --bg 11/17/94
% Secure \ier in \todayfrench in case \undefined.                 --bg 12/01/94
% Print correctly our messages containing diacritics under MlTeX. --bg 12/05/94
% More precise comments and s-tzet activated.                     --bg 01/12/95
% Use of i/I instead of \i/\I with 2e.                            --bg 02/07/95
% Last mod done only for T1.                                      --bg 02/08/95
% Correct invalid syntax for token \csname...\endcsname.          --bg 02/10/95
% Remove information printed for lowercase of I, when MlTeX.      --bg 03/07/95
%
%
%%
%%      checksum        = "62655 380 1232 15492"
%%
\let\ifKB\iftrue% commenter cette ligne pour la validation d'un format.
%
\ifx\typeout\undefined\else%
\catcode`\@=11
\let\typeoutORI\typeout%
\ifx\documentclass\undefined\let\@aiguORI=\'\let\@gravORI=\`%
\else%
  \expandafter\let\expandafter\@aiguORI\expandafter=%
               \csname OT\string1\string\'\endcsname%
  \expandafter\let\expandafter\@gravORI\expandafter=%
               \csname OT\string1\string\`\endcsname%
\fi
\def\typeout#1{{\def\@noAc##1{##1}%
        \ifx\charsubdef\undefined\let\protect\string%
        \else%
            \def\'##1{\expandafter\@noAc\@aiguORI##1}%
            \def\`##1{\expandafter\@noAc\@gravORI##1}%
        \fi%
            \edef\@tempa{#1}% expand it now
            \typeoutORI{^^J Message kbtest ==> \@tempa}}}%
\let\message\typeout\fi% better with 2e
\catcode`@=12
%
\expandafter\ifx\csname ^^63\endcsname\c % 128-255 disactivated locally in V3 
\def\Disactivate{
            \catcode`^^80=11\catcode`^^81=11\catcode`^^82=11\catcode`^^83=11
            \catcode`^^90=11\catcode`^^91=11\catcode`^^92=11\catcode`^^93=11
            \catcode`^^a0=11\catcode`^^a1=11\catcode`^^a2=11\catcode`^^a3=11
            \catcode`^^b0=11\catcode`^^b1=11\catcode`^^b2=11\catcode`^^b3=11
            \catcode`^^c0=11\catcode`^^c1=11\catcode`^^c2=11\catcode`^^c3=11
            \catcode`^^d0=11\catcode`^^d1=11\catcode`^^d2=11\catcode`^^d3=11
            \catcode`^^e0=11\catcode`^^e1=11\catcode`^^e2=11\catcode`^^e3=11
            \catcode`^^f0=11\catcode`^^f1=11\catcode`^^f2=11\catcode`^^f3=11
            \catcode`^^84=11\catcode`^^85=11\catcode`^^86=11\catcode`^^87=11
            \catcode`^^94=11\catcode`^^95=11\catcode`^^96=11\catcode`^^97=11
            \catcode`^^a4=11\catcode`^^a5=11\catcode`^^a6=11\catcode`^^a7=11
            \catcode`^^b4=11\catcode`^^b5=11\catcode`^^b6=11\catcode`^^b7=11
            \catcode`^^c4=11\catcode`^^c5=11\catcode`^^c6=11\catcode`^^c7=11
            \catcode`^^d4=11\catcode`^^d5=11\catcode`^^d6=11\catcode`^^d7=11
            \catcode`^^e4=11\catcode`^^e5=11\catcode`^^e6=11\catcode`^^e7=11
            \catcode`^^f4=11\catcode`^^f5=11\catcode`^^f6=11\catcode`^^f7=11
            \catcode`^^88=11\catcode`^^89=11\catcode`^^8a=11\catcode`^^8b=11
            \catcode`^^98=11\catcode`^^99=11\catcode`^^9a=11\catcode`^^9b=11
            \catcode`^^a8=11\catcode`^^a9=11\catcode`^^aa=11\catcode`^^ab=11
            \catcode`^^b8=11\catcode`^^b9=11\catcode`^^ba=11\catcode`^^bb=11
            \catcode`^^c8=11\catcode`^^c9=11\catcode`^^ca=11\catcode`^^cb=11
            \catcode`^^d8=11\catcode`^^d9=11\catcode`^^da=11\catcode`^^db=11
            \catcode`^^e8=11\catcode`^^e9=11\catcode`^^ea=11\catcode`^^eb=11
            \catcode`^^f8=11\catcode`^^f9=11\catcode`^^fa=11\catcode`^^fb=11
            \catcode`^^8c=11\catcode`^^8d=11\catcode`^^8e=11\catcode`^^8f=11
            \catcode`^^9c=11\catcode`^^9d=11\catcode`^^9e=11\catcode`^^9f=11
            \catcode`^^ac=11\catcode`^^ad=11\catcode`^^ae=11\catcode`^^af=11
            \catcode`^^bc=11\catcode`^^bd=11\catcode`^^be=11\catcode`^^bf=11
            \catcode`^^cc=11\catcode`^^cd=11\catcode`^^ce=11\catcode`^^cf=11
            \catcode`^^dc=11\catcode`^^dd=11\catcode`^^de=11\catcode`^^df=11
            \catcode`^^ec=11\catcode`^^ed=11\catcode`^^ee=11\catcode`^^ef=11
            \catcode`^^fc=11\catcode`^^fd=11\catcode`^^fe=11\catcode`^^ff=11
            }
\fi
\let\protect\relax% for plain TeX
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% Liste ci-dessous des caracteres 8bits a tester :
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\catcode`!=13\let!=\string
\newwrite\auxchars\immediate\openout\auxchars=auxchars.tex
\def\minXN{!\def!\minN!{% caracteres 8bits minuscules
            !à !è !ù !é !â !ê !î !ô !û !ä !ë !ï !ü !÷ !æ !å !ø !ß %
            %ª
            !ç
            !}}%
\def\majXN{!\def!\majN!{% caracteres 8bits majuscules
            !À !È !Ù !É !Â !Ê !Î !Ô !Û !Ä !Ë !Ï !Ü !× !Æ !Å !Ø %
            {!\csname! SS!\endcsname} %
            %Š % L barre
            !Ç%
            !}}%
\catcode`\!=12
\immediate\write\auxchars{\minXN}
\immediate\write\auxchars{\majXN}
{\expandafter\ifx\csname ^^63\endcsname\c % 128-255 disactivated locally in V3 
\Disactivate\fi
\catcode`ß=\active% just one char active
\gdef\minD{à è ù é â ê î ô û ä ë ï ü ÷ æ å ø ß %ª 
                                      ç}%caracteres 8bits minuscules
\gdef\majD{À È Ù É Â Ê Î Ô Û Ä Ë Ï Ü × Æ Å Ø %
              {\csname SS\endcsname} %Š % L barre majuscule
                                      Ç}% caracteres 8bits majuscules
}
\def\esoter{½ % ! espagnol
            ¾ % ? espagnol
%             Ÿ % signe paragraph
            © % copyright
            ¶ % pilcrow
            ¿ % livre sterling
%          « » % guillemets <== necessite french.sty
             }% fin caracteres 8 bits speciaux
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\newif\ifECM \ECMfalse
\def\minO{\`%
            a \`%
                e \`%
                    u \'%
                        e \^%
                            a \^%
                                e 
             \ifx\documentclass\undefined\^{\csname i\endcsname} %
                              \else\ifECM\^%
                                           i \else
                                         \^{\csname i\endcsname} \fi\fi
                                  \^%
                                    o \^%
                                        u \"%
                                            a \"%
                                                e  
             \ifx\documentclass\undefined\"{\csname i\endcsname} %
                              \else\ifECM\"%
                                           i \else
                                         \"{\csname i\endcsname} \fi\fi
          \"%
            u {\csname oe\endcsname} {\csname ae\endcsname} 
              {\csname aa\endcsname} {\csname  o\endcsname}
              {\csname ss\endcsname} %{\csname  l\endcsname}
               \c%
                 {c}}
\def\majO{\`%
            A \`%
               E \`%
                   U \'%
                       E \^%
                           A \^%
                               E 
             \ifx\documentclass\undefined\^{\csname I\endcsname} %
                              \else\ifECM\^%
                                           I \else
                                         \^{\csname I\endcsname} \fi\fi
                                  \^%
                                    O \^%
                                        U \"%
                                            A \"%
                                                E  
              \ifx\documentclass\undefined\"{\csname I\endcsname} % 
                              \else\ifECM\"%
                                           I \else
                                         \"{\csname I\endcsname} \fi\fi
          \"%
            U {\csname OE\endcsname} {\csname AE\endcsname} 
              {\csname AA\endcsname} {\csname  O\endcsname} 
              {\csname SS\endcsname} %{\csname  L\endcsname}
              \c%
                {C}}

\def\MYlowercase#1/{\lowercase{#1}}
\def\MYuppercase#1/{\uppercase{#1}}

\def\lowerCase#1{\expandafter\MYlowercase#1/}
\def\upperCase#1{\expandafter\MYuppercase#1/}

\font\ttPLAIN=cmtt10\let\tt\ttPLAIN% pour utilisation ponctuelle

\def\tempfmt{lplain}\ifx\fmtname\tempfmt\else\def\tempfmt{LaTeX2e}\fi
\ifx\fmtname\tempfmt
% QUELLE FONTE, QUEL ENCODAGE, QUEL SCHEMAS DE CHARGEMENT ?
%\def\encodingdefault{T1}% car mon moteur est OT1 par defaut
%\font\rm=dcr10\input dc.sty % a simple way to test with only a dc fonte HERE!
% pour le times sans NFSS (psfonts.sty modifie chez moi pour traiter OT1) :
%%%%%%%%%%%%%%%%%%%%%%%%%
\ifx\DeclareFontShape\undefined% 
       \else% the following is a patch for NFSS2 by Rainer Schoepf 12/15/93
       \catcode`@=11
       \def\@accent@use#1#2#3{%
       \expandafter\ifx \csname @#1@\string#3@#1@\endcsname \relax
                   {\accent#2 #3}%
                   \else  \csname @#1@\expandafter\string#3@#1@\endcsname\fi}
       \catcode`@=12
\fi
%%%%%%%%%%%%%%%%%%%%%%%%%
\documentstyle[titlepage%
%               ,times% pour du times sans NFSS 
%               ,nftimes% du times en NFSS2 : c'est bogue ! ne pas utiliser
              ]{article}
\begin{document}
\let\tt\ttPLAIN 
\noindent {\tt Test LaTeX{}} \ifx\DeclareFontShape\undefined\else + NFSS2 \fi
\else
Test 
\fi
\rm% be sure we use \rm
%\def\encodingdefault{T1}% car mon moteur est OT1 par defaut
%\usefont{T1}{ptm}{m}{n}% pour du times avec NFSS2 
\space des caract\`eres accentu\'es avec 
            \ifx\charsubdef\undefined%
                           \ifx\starthyph\undefined\else le vieux Ml\fi%
            \else Ml\fi\TeX{}
\expandafter\ifx\csname ^^63\endcsname\c V3
                \else V2 
                \fi 
% is ed/dc used ?
   \def\isatDC#1#2#3\relax{\if d#11\fi \if e#11\fi \if c#22\fi}%
   \def\dcdo{% \dcdo code Version 3 as of 01/27/92 on DCFONT discussion list
             \ifnum 12=0\expandafter\isatDC\fontname\font xx\relax\space%
                        \expandafter\dcatfirst%
             \else      \expandafter\dcatsecond%
             \fi}%
        \def\dcatfirst#1#2{#1}%
        \def\dcatsecond#1#2{#2}%
{\rm\dcdo{\global\ECMtrue}{\global\ECMfalse}}% final DC test
%
\def\X{T1}
\ifx\undefined\encodingdefault% re-etablir la verite !
\else\ifx\X\encodingdefault\ECMtrue\fi
\fi  
%
\ifECM \par avec encodage de fontes 
  \ifx\X\encodingdefault
  \else\message{L'encodage actif (\encodingdefault) est modifi\'e 
                pour cette fonte (\fontname\font).}
       \edef\encodingdefault{\X}
  \fi
  \ifx\undefined\encodingdefault DC \else \encodingdefault\space\fi 
             \expandafter\ifx\csname ^^63\endcsname\c % 128-255 disactivated
                         \ifKB\Disactivate\fi% only if keyboard.sty loaded
             \fi
\else
  \ifx\X\encodingdefault
       \message{L'encodage actif (\encodingdefault) est annul\'e 
                pour cette fonte (\fontname\font).}
       \let\encodingdefault\undefined
  \fi
\fi 
%
\def\todayfrench{\ifx\ier\undefined\def\ier{er}\fi%
                 \ifnum\day=1\relax 1\ier%........................ \todayfrench
                 \else \number\day\fi%      (also called in babel: \datefrench)
                 \space\ifcase\month\or janvier\or f\'%
                 evrier\or mars\or 
                 avril\or mai\or juin\or juillet\or ao\^%
                 ut\or septembre\or
                 octobre\or novembre\or d\'%
                 ecembre\fi \space\number\year}%
le \todayfrench.\par \medskip\noindent 

% On peut re-introduire un autre clavier et le tester separement d'initex
% C'est ce qu'il faut faire aussi si on change d'encodage.
\ifx\ifKB\undefined\else\ifKB
\catcode`@=11\input keyboard.sty \par Fichier {\tt keyboard.sty} utilisé.%
\fi\fi
%
\immediate\closeout\auxchars
\input auxchars % re-input chars now

\message{Fonte utilisée : \fontname\font}
        {Fonte utilisée : \fontname\font}\par

\ifECM\else%===================
\ifx\documentclass\undefined
Avertissement : en cas d'utilisation des polices 7bits (CMR)

% Pb disparu 13/1/95.
%-- 2. l'Angstroem majuscule 8-bits n'est pas typographiquement 
%      correct (pourquoi ?) ;

-- 1. le caractère majuscule allemand SS n'existant pas il ne peut être mis 
      correctement en minuscule ;

% solution trouvee le 12/1/95
-- 2. inversement le s-tzet allemand ne peut être mis en majuscule.

\ifx\charsubdef\undefined%
-- 3. le I accentué majuscule ne peut être mis 
      correctement en minuscule puisque
      le I majuscule a pour minuscule i et non \i{} ;
\fi%

\fi

            \ifx\charsubdef\undefined%
                           \ifx\starthyph\undefined\else
                           \fi%
            \fi%
\fi%===================
\let\Edef\edef
\ifx\documentclass\undefine\else\let\Edef\def\fi% no more need of \edef in 2e
\bigskip
--- les 4 expansions suivantes doivent être identiques :

\bigskip


minuscules 7 bits : \minO

minuscules 8 bits : \minN

---

lowercase de 7 bits : \lowerCase\majO

lowercase de 8 bits : \Edef\TT{\lowerCase\majN}\TT

\bigskip
--- les 4 expansions suivantes doivent être identiques :

\bigskip
majuscules 7 bits : \majO

majuscules 8 bits : \majN 

---

uppercase de 7 bits : \upperCase\minO

uppercase de 8 bits : %
{\catcode`\@=11% D. Knuth defined \oalign in a way that we can't use it in
%              % an \edef or \xdef so i changed it temporarily
\ifx\documentclass\undefined%
\def\oalign#1{\leavevmode\vtop{\baselineskip\z@skip \lineskip.25ex%
  \ialign{####\crcr#1\crcr}}}% put characters over each other
\fi%
%%%
\Edef\TT{\upperCase\minN}\TT%
%%%
}

\bigskip
--- caractères 8bits spéciaux : \esoter

NB : verifier dans le fichier kbtest.log que tout est correct jusqu'à ce
     niveau.
\message{ / Fin premi\`ere partie /}\par
********************** Fin première partie **************************\par

\bigskip
\noindent
Ce qui suit n'est vraiment bon que dans un 
environnement entièrement 8-bits où le codage d'entrée et celui
de sortie sont identiques (ISO-Latin-1 en entrée et DC en sortie, 
par exemple). Seuls s-tzet et \string ^\string ^9c 
peuvent \^etre actifs ici :\par
\expandafter\ifx\csname ^^63\endcsname\c % 128-255 disactivated locally in V3 
            \Disactivate\fi

uppercase de 8 bits : \upperCase\minD

lowercase de 8 bits : \lowerCase\majD
\message{/ Fin deuxi\`eme partie /}\par
********************** Fin deuxième partie *************************\par

\bigskip
--- \%\% FIN \%\%

\ifx\fmtname\tempfmt\def\tempa{\end{document}}\else\def\tempa{}\fi
\tempa\bye
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
