summaryrefslogtreecommitdiff
path: root/macros/latex/contrib/codepage
diff options
context:
space:
mode:
authorNorbert Preining <norbert@preining.info>2019-09-02 13:46:59 +0900
committerNorbert Preining <norbert@preining.info>2019-09-02 13:46:59 +0900
commite0c6872cf40896c7be36b11dcc744620f10adf1d (patch)
tree60335e10d2f4354b0674ec22d7b53f0f8abee672 /macros/latex/contrib/codepage
Initial commit
Diffstat (limited to 'macros/latex/contrib/codepage')
-rw-r--r--macros/latex/contrib/codepage/LISEZMOI39
-rw-r--r--macros/latex/contrib/codepage/README59
-rw-r--r--macros/latex/contrib/codepage/codepage.drv79
-rw-r--r--macros/latex/contrib/codepage/codepage.dtx3593
-rw-r--r--macros/latex/contrib/codepage/codepage.ins27
-rw-r--r--macros/latex/contrib/codepage/codepage.pdfbin0 -> 221115 bytes
-rw-r--r--macros/latex/contrib/codepage/frintro.drv136
-rw-r--r--macros/latex/contrib/codepage/frintro.pdfbin0 -> 94768 bytes
8 files changed, 3933 insertions, 0 deletions
diff --git a/macros/latex/contrib/codepage/LISEZMOI b/macros/latex/contrib/codepage/LISEZMOI
new file mode 100644
index 0000000000..43d76cb950
--- /dev/null
+++ b/macros/latex/contrib/codepage/LISEZMOI
@@ -0,0 +1,39 @@
+Ces fichiers forment le paquet codepage. Ce paquet permet de traiter
+les caracteres accentues de plusieurs code de page et avec toutes
+les variantes de TeX.
+
+Cependant, la documentation et l'installation du paquet doit se faire
+avec LaTeX2e. Le repertoire "installe" contient donc une version
+preinstallee du paquet et de sa documentation.
+
+Le fichier "demo.zip" (fichier binaire) contient deux fichiers de texte
+contenant un poeme d'Arthur Rimbaud.
+Un de ces fichiers contient les caracteres accentues du code
+de page 850, l'autre les caracteres accentues du code de page ISO Latin set 1
+(il est donc certain qu'une des deux versions du fichier ne correspondra
+pas au code de page de votre machine).
+Pour mettre en page ces documents, il suffit de les formater avec LaTeX (2.09)
+ou le mode compatible 2.09 de LaTeX2e lorsque les fichiers composant le style
+"codepage" sont installes dans le repertoire ou TeX va chercher ses fichiers.
+
+Pour generer le code TeX du paquet "codepage", il faut taper:
+ latex codepage.ins
+
+Pour imprimer la documentation en francais (juste l'introduction),
+il faut taper:
+ latex frintro.drv
+
+Pour imprimer toute la documentation en anglais (4 pages d'introduction +
+tout le code (avec des commentaires) de l'implementation), il faut taper
+ latex codepage.drv
+
+
+Pour installer le paquet "codepage", il suffit de copier tous
+les fichiers (a l'exception des fichiers DVI) qui se trouvent dans le
+repertoire "installe" a l'endroit ou TeX recherche ses fichiers.
+
+N'hesitez pas a me faire parvenir vos suggestions et remarques a l'adresse
+electronique suivante dans README.
+
+A. Aubord
+
diff --git a/macros/latex/contrib/codepage/README b/macros/latex/contrib/codepage/README
new file mode 100644
index 0000000000..3b2176a451
--- /dev/null
+++ b/macros/latex/contrib/codepage/README
@@ -0,0 +1,59 @@
+These files compound the package "codepage". This package translates all
+the characters above 128 from differents codepage into TeX characters.
+
+It works with all variant of TeX (Plain, LaTeX 2.09, LaTeX2e). However,
+the printing of documentation and the installation of the code need
+LaTeX2e (or a recent version of the DOC package).
+
+The file "demo.zip" (binary file) contain two files with the same poem
+from Arthur Rimbaud (a french poet). The first file is written using the
+code page 850, the second using the code page ISO Latin set 1. Then
+you will have at least a version of the two files which do not correspond
+to your code page. Once all the files from the package "codepage" are installed
+in your TeX's input directory, you can typeset them with LaTeX 2.09
+(since these file were packed on a Unix machine, you should probably
+use the "-a" option when you do the unzip).
+
+To generate all the files of the package "codepage", the following
+command should be issued: latex codepage.ins
+To generate a french introduction to the package, the following command
+should be issued:
+ latex frintro.drv
+To print all the documentation in english (4 pages of introduction on
+how to use the package and 45 pages about the code of package),
+the following command should be issued:
+ latex codepage.drv
+
+send your comment, bug or remarks to alain (dot) aubord (at)
+sourire (dot) ch.
+
+A. Aubord
+-----------------------------------------------------------------------------
+This package is released under the modified BSD license.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are
+met:
+
+ 1. Redistributions of source code must retain the above copyright
+ notice, this list of conditions and the following disclaimer.
+
+ 2. Redistributions in binary form must reproduce the above copyright
+ notice, this list of conditions and the following disclaimer in the
+ documentation and/or other materials provided with the distribution.
+
+ 3. The name of the author may not be used to endorse or promote
+ products derived from this software without specific prior written
+ permission.
+
+THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
+IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT,
+INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
+STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+POSSIBILITY OF SUCH DAMAGE.
diff --git a/macros/latex/contrib/codepage/codepage.drv b/macros/latex/contrib/codepage/codepage.drv
new file mode 100644
index 0000000000..0720ff1bbb
--- /dev/null
+++ b/macros/latex/contrib/codepage/codepage.drv
@@ -0,0 +1,79 @@
+\documentclass{article}
+\usepackage{doc}
+
+%
+%-------------------------------------------Macro used by the documentaion-----------------------------
+%
+\makeatletter
+\def\CarSmaller{\ifx\@currsize\normalsize
+ \small
+ \else
+ \ifx\@currsize\small
+ \footnotesize
+ \else
+ \ifx\@currsize\footnotesize
+ \scriptsize
+ \else
+ \ifx\@currsize\scriptsize
+ \tiny % we cannot have less
+ \fi
+ \fi
+ \fi
+ \fi
+ \ifx\@currsize\large
+ \normalsize
+ \else
+ \ifx\@currsize\Large
+ \large
+ \else
+ \ifx\@currsize\LARGE
+ \Large
+ \else
+ \ifx\@currsize\huge
+ \LARGE
+ \else
+ \ifx\@currsize\Huge
+ \huge
+ \fi
+ \fi
+ \fi
+ \fi
+ \fi
+ }% \CarSmaller
+\makeatother
+
+\let\iffrench=\iffalse
+\let\ifenglish=\iftrue
+
+\chardef\Circonflexe="5E
+\chardef\TildeChar="7E
+\chardef\bslash='134
+\let\ft=\footnote
+\def\Fich#1{{\CarSmaller\sf #1}} % write a file name
+\def\Comm#1{{\CarSmaller\tt\bslash #1}}
+
+%
+%------------------------------------------Page dimensions---------------------------------------------
+%
+% Suppression of the standard TeX offset
+\hoffset=-1in
+\voffset=-1in
+
+\setlength{\parindent}{0pt}
+\setlength{\oddsidemargin}{4.5cm}
+\setlength{\marginparwidth}{4cm}
+\setlength{\textwidth}{15cm}
+\setlength{\textheight}{24cm}
+%
+%----------------------------------------------Doc package parameters-----------------------------------
+%
+%\OnlyDescription %Only the description of package, not the implementation will be printed
+\DisableCrossrefs % no full index
+\CodelineIndex % by line number
+\RecordChanges % make change history
+
+
+\begin{document}
+\DocInput{codepage.dtx} \PrintIndex \PrintChanges
+\end{document}
+
diff --git a/macros/latex/contrib/codepage/codepage.dtx b/macros/latex/contrib/codepage/codepage.dtx
new file mode 100644
index 0000000000..e6460cd0b5
--- /dev/null
+++ b/macros/latex/contrib/codepage/codepage.dtx
@@ -0,0 +1,3593 @@
+\def\fileversion{1.2}%
+\def\filedate{2 January 1995}%
+\def\docdate{2 January 1995}%
+\def\CheckSum{4615}%
+% \changes{v0.1}{28-May-1993}{first release}
+% \changes{v0.8}{17-June-1993}{macros to draw accent on character added (taken from DCLFONT.STY)}
+% \changes{v0.9}{15-October-1993}{revised naming convention, comments, and unify style}
+% \changes{v1.0}{16-May-1994}{Add suppression of character translation, put in DOC format}
+% \changes{v1.1}{26-September-1994}{Redesign of code to improve
+% memory usage, French text for the
+% introduction.}
+% \changes{v1.2}{2-January-1995}{Suppression of some ``loop'' command and
+% expansion of code instead. This save many space on
+% input stack size. Mainly the files
+% initcar and in codepage were changed.}
+% \MakeShortVerb{|}
+%
+% \iffrench
+% \title{\texttt{codepage} un style pour traiter
+% diff\'e{}rents code de page dans le m\^e{}me document}
+% \author{Alain Aubord}
+% \maketitle
+% \begin{abstract}
+% Cet article d\'e{}crit les nouvelles commandes disponibles pour
+% traiter un code de page\ft{Un code de page est une convention qui d\'e{}finit une association
+% unique entre un caract\`e{}re et un nombre qui le repr\'e{}sente dans un ordinateur.} ainsi que les
+% probl\`e{}mes rencontr\'e{}s pour r\'e{}aliser cette implantation uniquement en \TeX{}.
+% \end{abstract}
+%
+% \section{Introduction\label{INTRO}}
+%
+% La version 3 de \TeX{} permet de composer plus facilement des documents dans une autre langue
+% que l'anglais. En effet, cette version autorise l'usage de caract\`e{}res cod\'e{}s sur 8 bits (valeurs
+% de 0 \`a{} 255) dans le texte source et de multiples tables de c\'e{}sures dans un format.
+%
+% Ces am\'e{}liorations \'e{}taient n\'e{}cessaires, mais pas suffisantes. En effet, il est encore n\'e{}cessaire
+% de disposer de styles adapt\'e{}s aux diff\'e{}rentes langues
+% ainsi que des polices de caract\`e{}res contenant
+% des signes sp\'e{}cifiques (comme les caract\`e{}res accentu\'e{}s\ft{La composition, c'est-\`a{}-dire
+% l'utilisation d'une commande de positionnement d'un accent suivie par la lettre \`a{} accentuer, pr\'e{}sente
+% l'avantage de pouvoir accentuer n'importe quel caract\`e{}re mais emp\^e{}che la c\'e{}sure correcte d'un mot
+% accentu\'e{}.}, les guillemets fran\c c{}ais...).
+%
+%
+% Le style \Fich{Babel} et les polices \textsc{Dc} ont \'e{}t\'e{} d\'e{}velopp\'e{}s pour r\'e{}soudre ces probl\`e{}mes.
+% Cependant, il reste encore un probl\`e{}me de taille: les diff\'e{}rents codes de page existant sont
+% incompatibles. Un document \'e{}crit dans un code de page doit \^e{}tre converti dans un nouveau code de page
+% lorsqu'il est utilis\'e{} sur un ordinateur avec un syst\`e{}me
+% d'exploitation diff\'e{}rent
+% ou avec des polices de caract\`e{}res dont l'encodage correspond \`a{} un autre code de page
+% (comme les polices \textsc{Dc}).
+% La gestion des
+% diff\'e{}rents codes de page peut se faire de plusieurs mani\`e{}res en \TeX:
+% \begin{itemize}
+% \item Par l'utilisation d'un programme externe de conversion de caract\`e{}res.
+% Lorsqu'un tel programme est bien int\'e{}gr\'e{} dans \TeX{} (comme les
+% tables \textsc{Tcp} d\'e{}finies par
+% \textsc{EmTeX}), cette solution est tr\`e{}s efficace et agr\'e{}able \`a{} utiliser. Son principal
+% d\'e{}savantage est le manque de portabilit\'e{}.
+% \item Par l'utilisation de polices virtuelles\ft{Une police virtuelle est un m\'e{}canisme
+% fourni avec \TeX{} version 3 qui permet de changer le vecteur d'encodage d'une
+% police de caract\`e{}res, de composer une nouvelle police de caract\`e{}res \`a{} partir
+% de plusieurs polices etc.}. Cette
+% solution est tr\`e{}s bien int\'e{}gr\'e{}e dans \TeX\ft{Certains vieux pilotes de p\'e{}riph\'e{}riques ne
+% savent pas utiliser les polices virtuelles.}. Cependant, il est n\'e{}cessaire de
+% fournir les
+% fichiers d\'e{}crivant la m\'e{}trique et le r\'e{}-encodage de chaque police
+% virtuelle utilis\'e{}e dans un document.
+% \item Par l'utilisation de la composition pour obtenir un caract\`e{}re accentu\'e{} (i.e.|\'e| pour
+% \'e).
+% Cette solution fonctionne remarquablement bien avec les polices \textsc{Dc}. Le style fourni
+% pour l'utilisation de ces polices red\'e{}finit tr\`e{}s habilement les commandes qui dessinent un
+% caract\`e{}re accentu\'e{}. Chaque fois qu'un caract\`e{}re accentu\'e{} existe dans la police, il est
+% employ\'e{} (en lieu et place de la composition). Ce syst\`e{}me est donc parfaitement int\'e{}gr\'e{} dans
+% \TeX{}, mais il est tr\`e{}s d\'e{}sagr\'e{}able de taper et de relire les caract\`e{}res accentu\'e{}s suivant
+% cette m\'e{}thode.
+% \item Par l'utilisation du paquet \Fich{codepage} qui est totalement compatible avec \TeX{}
+% (version 3). Ce paquet offre en outre la possibilit\'e{} de composer avec \TeX{} un document
+% pr\'e{}vu pour un autre code de page que celui de son propre ordinateur et de d\'e{}clarer des
+% exceptions de c\'e{}sures contenant des syllabes accentu\'e{}es.
+%
+% Ce paquet transforme tous les caract\`e{}res sup\'e{}rieurs \`a{} 127
+% en caract\`e{}re \og actif\fg{}
+% (chaque caract\`e{}re actif est une commande \TeX)
+% et il n\'e{}cessite la transmission de quelques
+% fichiers annexes pour pouvoir composer un document sur un autre syst\`e{}me.
+% \end{itemize}
+%
+% Comme on le voit, il n'y a pas de solution parfaite dans tous les cas. Le probl\`e{}me provient d'un manque
+% de norme dans la mani\`e{}re de coder les symboles sp\'e{}ciaux\ft{Si un standard unique devait voir le jour,
+% il serait d\'e{}fini sur 16 bits (valeur de 0 \`a{} 65535).}.
+%
+% \subsection{Le probl\`e{}me des c\'e{}sures\label{HYPHENATION}}
+% \TeX{} effectue une c\'e{}sure automatique des mots en se basant sur une table d\'e{}crivant
+% quelles syllabes peuvent \^e{}tre coup\'e{}es. Cette table est inclue dans le format\ft{Un format est
+% un
+% ensemble de commandes pr\'e{}-d\'e{}finies qui sont analys\'e{}es et enregistr\'e{}es sous une forme sp\'e{}ciale
+% par une variante du programme \TeX{} appel\'e{}e \textsc{Ini}\TeX{}. Le programme \TeX{} peut
+% ensuite
+% charger en m\'e{}moire tr\`e{}s rapidement un format.} et sa forme est fig\'e{}e
+% tant qu'un nouveau format n'est pas reconstruit. Lors de la construction
+% d'une table de c\'e{}sure toutes les syllabes sont converties en minuscules (en utilisant le
+% \Comm{lccode} de chaque caract\`e{}re) avant d'\^e{}tre enregistr\'e{}es. Pour
+% trouver une c\'e{}sure lors de la composition d'un document,
+% le texte \`a{} couper est traduit en minuscule et compar\'e{} avec les tables
+% pr\'e{}-d\'e{}finies.
+%
+% Lorsque les tables de c\'e{}sures utilis\'e{}es lors de la construction du
+% format et le texte du document utilisent des codes de pages diff\'e{}rents,
+% les caract\`e{}res (dont la valeur est plus
+% grande que 127) du texte \`a{} composer et
+% ceux utilis\'e{}s pour les tables de c\'e{}sure ne correspondront jamais. Aucune
+% c\'e{}sure ne pourra alors \^e{}tre trouv\'e{}e (des exceptions existent cependant).
+%
+% Il est \'e{}videmment possible de modifier la table de c\'e{}sure et de reg\'e{}n\'e{}rer
+% un nouveau format, cependant cette solution n'est pas toujours possible
+% ni forc\'e{}ment souhaitable pour plusieurs raisons:
+% \begin{itemize}
+% \item le fichier qui d\'e{}crit la table de c\'e{}sure devrait \^e{}tre identique
+% quel que soit le syst\`e{}me pour obtenir une c\'e{}sure identique
+% partout\ft{Un exemple tr\`e{}s concret de cette situation est l'utilisation
+% de la table de c\'e{}sure anglaise pour des textes fran\c c{}ais. Les tables
+% de c\'e{}sures anglaises sont disponibles et identiques quelle que soit
+% l'implantation de \TeX{}. Lorsqu'on veut transmettre un document \'e{}crit
+% en fran\c c{}ais \`a{} un correspondant dont on n'est pas certain qu'il puisse
+% disposer d'une table de c\'e{}sure fran\c c{}aise, il est toujours possible d'utiliser
+% le table de c\'e{}sure anglaise et d'indiquer les exceptions de c\'e{}sure avec la
+% commande \Comm{hyphenation}. Cette m\'e{}thode fonctionne relativement bien
+% si l'on prend la pr\'e{}caution de red\'e{}finir les commandes qui dessinent les
+% accents sur les caract\`e{}res (comme cela est fait dans le paquet \Fich{codepage}).}.
+% \item la g\'e{}n\'e{}ration d'un format est une op\'e{}ration complexe et d\'e{}licate
+% qui peut exiger la possession d'autorisations sp\'e{}cifiques (sur une
+% machine partag\'e{}e entre plusieurs utilisateurs).
+% \end{itemize}
+%
+% La solution propos\'e{}e par le paquet \Fich{codepage} pour r\'e{}soudre ce
+% probl\`e{}me consiste en une nouvelle commande \Comm{MakeHyphenationLetter} qui
+% permet de modifier les valeurs associ\'e{}es \`a{} un caract\`e{}re cod\'e{} au-del\`a{} de 127
+% pour utiliser des valeurs compatibles avec la commande \Comm{hyphenation}.
+%
+% \section{L'interface utilisateur}
+% Cet interface a \'e{}t\'e{} con\c c{}u pour \^e{}tre \og le plus simple possible\fg.
+% Seules deux macros (commandes) et quelques constantes sont d\'e{}finies.
+%
+% Les diff\'e{}rents codes de page possibles sont d\'e{}finis par des constantes:
+% \begin{description}
+% \item[\Comm{FourThreeSeven}] pour le code de page 437 du PC; ce code
+% de page est surtout utilis\'e{} avec les syst\`e{}mes ayant l'anglais
+% comme langue principale;
+% \item[\Comm{EightFiveZero}] pour le code de page 850 du PC. Ce code de
+% page est semblable au code 437 mais il contient moins de signes
+% semi-graphiques et math\'e{}matiques et plus de lettres (comme les
+% caract\`e{}res majuscules accentu\'e{}s). Ce code de page est surtout
+% utilis\'e{} avec d'autres langues que l'anglais.
+% \item[\Comm{IsoOne}] ISO Latin set 1. Cette norme est utilis\'e{}e
+% par de nombreux syst\`e{}mes (la plupart des syst\`e{}mes \textsc{Unix}
+% et \textsc{Windows}). L'encodage \textsc{Dc} des polices \TeX{}
+% suit cette norme pour certains caract\`e{}res (en particulier toutes les lettres).
+% Lorsque ce code de page est utilis\'e{} les caract\`e{}res qui
+% correspondent exactement aux caract\`e{}res des polices \textsc{Dc}
+% ne deviennent pas \og actifs\fg{} mais gardent le \og catcode\fg{}
+% de lettres. Les caract\`e{}res se dessinant en utilisant le mode
+% math\'e{}matique de \TeX{} restent cependant \og actifs\fg{}.
+% \item[\Comm{Mac}] pour les caract\`e{}res du \textsc{Mac Intosh}.
+% \end{description}
+%
+% Le choix de l'encodage des polices de \TeX{} est d\'e{}fini par deux autres
+% constantes:
+% \begin{description}
+% \item[\Comm{CM}] d\'e{}finit l'encodage standard de \TeX{}. Ce code est
+% d\'e{}fini sur 128 positions, les caract\`e{}res accentu\'e{}s sont
+% dessin\'e{}s par composition.
+% \item[\Comm{DC}] pour le nouvel encodage d\'e{}fini pour les polices \TeX{}.
+% L'utilisation de ce code implique l'usage des polices \textsc{Dc}.
+% Lorsque ce code est choisi, les caract\`e{}res existant dans un
+% code de page sont simplement convertis en caract\`e{}re \'e{}quivalent
+% des polices \textsc{Dc}.
+% \end{description}
+%
+% Les symboles math\'e{}matiques sont dessin\'e{}s en utilisant les commandes et le
+% mode math\'e{}matiques de \TeX{}, les autres symboles sont en g\'e{}n\'e{}ral ignor\'e{}s.
+%
+% Les deux commandes principales sont:
+% \begin{description}
+% \item[\Comm{codepage\#1\#2}] cette macro accepte deux param\`e{}tres: le code
+% de page du document, et le type d'encodage choisi pour les polices
+% \TeX.
+%
+% Apr\`e{}s l'appel \`a{} la macro \Comm{codepage} tous les caract\`e{}res
+% sup\'e{}rieurs \`a{} 127 sont \og actifs\fg{} (ils se comportent
+% comme des commandes).
+% \item[\Comm{MakeHyphenationLetter\#1\#2}] cette macro n'existe
+% que si le code de page \textsc{Dc} est choisi. Elle sert
+% \`a{} modifier les valeurs associ\'e{}es \`a{} un caract\`e{}re sup\'e{}rieur
+% \`a{} 127 pour qu'il puisse \^e{}tre utilis\'e{} avec la commande
+% \Comm{hyphenation}.
+% Pour que ces modifications restent locales,
+% \Comm{MakeHyphenationLetter} doit donc toujours \^e{}tre appel\'e{}e dans un groupe
+% (entre des accolades |{| et |}|). Pour des raisons techniques
+% ces modifications ne sont pas univoques, il est possible
+% que plusieurs caract\`e{}res aient des valeurs identiques apr\`e{}s
+% transformation. Cette situation n'est pas trop grave car elle
+% est peu fr\'e{}quente et n'entrave pas la c\'e{}sure (du moins dans le cas
+% de la langue fran\c c{}aise), un message signalant un conflit
+% potentiel est tout de fois \'e{}mis.
+% \item[\Comm{CurrentEncoding}] Cette commande contient la valeur du
+% syst\`e{}me d'encodage choisi. Sa valeur n'est d\'e{}finie qu'apr\`e{}s
+% l'appel \`a{} la commande \Comm{codepage}.
+% \end{description}
+%
+%
+% Toutes les commandes qui servent \`a{} dessiner des accents sur des caract\`e{}res
+% sont red\'e{}finies. Les valeurs originales des commandes sont sauv\'e{}es avec un
+% nouveau nom:
+% \begin{center}
+% \begin{tabular}{ll}
+% \textbf{Nouveau nom} & \textbf{Commande Originale}\\
+% \Comm{Grave} & \Comm{`} \\
+% \Comm{Circumflex} & \Comm{\Circonflexe} \\
+% \Comm{Tilda} & \Comm{\TildeChar} \\
+% \Comm{OverBar} & \Comm{=} \\
+% \Comm{UnderBar} & \Comm{b} \\
+% \Comm{Join} & \Comm{t} \\
+% \Comm{HungarUmlaut} & \Comm{H} \\
+% \Comm{Acute} & \Comm{'} \\
+% \Comm{Diaresis} & \Comm{"} \\
+% \Comm{Breve} & \Comm{u} \\
+% \Comm{OverDot} & \Comm{.} \\
+% \Comm{UnderDot} & \Comm{d} \\
+% \Comm{Tcheche} & \Comm{v} \\
+% \Comm{Cedille} & \Comm{c} \\
+% \end{tabular}
+% \end{center}
+%
+% Voici encore quelques commandes d\'e{}finies par le paquet. Ces commandes
+% devraient \^e{}tre d'un usage exceptionnel:
+% \begin{description}
+% \item[\Comm{TRtrue}] enclenche le m\'e{}canisme qui transforme chaque
+% caract\`e{}re sup\'e{}rieur \`a{} 127 pour qu'il soit imprim\'e{} correctement
+% par \TeX. C'est la valeur par d\'e{}faut !
+% \item[\Comm{TRfalse}] produit l'effet inverse de la commande pr\'e{}c\'e{}dente.
+% Cette commande est surtout utile lorsque des caract\`e{}res doivent
+% \^e{}tre \'e{}crits dans des fichiers auxiliaires (comme les fichiers
+% servant \`a{} construire les index ou les glossaires). Il est
+% alors souvent plus judicieux de convertir les caract\`e{}res sp\'e{}ciaux
+% lors de la relecture de ces fichiers plut\^o{}t qu'\`a{} leur \'e{}criture.
+% \item[\Comm{AllActive}] transforme tous les caract\`e{}res sup\'e{}rieurs
+% \`a{} 127 en caract\`e{}re actifs.
+% \item[\Comm{AllOther}] transforme tous les caract\`e{}res sup\'e{}rieurs \`a{} 127 en
+% caract\`e{}re sans signification particuli\`e{}re pour TeX{} (leur
+% \Comm{catcode} vaut 12).
+% \item[\Comm{og}] dessine les guillemets fran\c c{}ais ouvrants (d\'e{}finis
+% seulement lorsque les polices \textsc{Cm} sont choisies).
+% \item[\Comm{fg}] dessine les guillemets fran\c c{}ais fermants (d\'e{}finis
+% seulement lorsque les polices \textsc{Cm} sont choisies).
+% \item[\Comm{atcatcode}] qui est une constante qui contient la valeur du
+% |\catcode| du caract\`e{}re \textbf{@} lorsque cette valeur est
+% modifi\'e{}e par le paquet \textsc{Codepage}. Autrement, elle
+% est identique \`a{} la commande |\relax|.
+% \end{description}
+%
+% \section{Un bref exemple (pour \LaTeX{}2e)}
+% {
+% | \documentclass{article}|\\
+% | \usepackage{t1enc,codepage}|\\
+% | {\MakeHyphenationLetter{\EightFiveZero}{|\tt\`e|}|\\
+% | \hyphenation{sys-t|\tt\`e|-me sys-t|\tt\`e|-mes}|\\
+% | }|\\
+% | \codepage{\EightFiveZero}{\DC}|\\
+% | \begin{document}|\\
+% | Unix est un joli syst|\tt \`e|me d'exploitation.|\\
+% | \end{document}|
+% }
+%
+% Cet exemple fonctionnera correctement si tous les caract\`e{}res
+% au-del\`a{} de 127 sont disponibles. Certaines implantations de \TeX{} (comme
+% \textsc{Emtex}) transforment tous les caract\`e{}res au-del\`a{} de 127 en
+% caract\`e{}re 127 ou utilise des tables sp\'e{}ciales (les tables
+% \textsc{Tcp} pour \textsc{EmTeX}).
+%
+% Pour obtenir un comportement correct avec \textsc{Emtex}, il faut
+% utiliser l'option |/8| lorsque le format est g\'e{}n\'e{}r\'e{}.
+%
+% \fi
+% \ifenglish
+% \title{\texttt{code-page} a style to handle different code-pages in the same document}
+% \author{Alain Aubord}
+% \maketitle
+% \begin{abstract}
+% This package provides some new commands to handle code page\ft{A code page is the convention
+% for associating a character with a number used to represent it in a computer.}. This text describes the
+% interface offered by the package and some problems which occur when the implementation is done only
+% in \TeX{}.
+% \end{abstract}
+%
+% \section{Introduction\label{INTRO}}
+%
+% The version 3 of TeX provides some facilities to work with documents written in a language
+% different than English. Mainly, by allowing the use of characters coded on eight bits (values from 1 to
+% 255) and the possibility to use multiple hyphenation tables.
+%
+% Although, this improvements are necessary, they are not sufficient. The standard \LaTeX{} style
+% should be adapted to the different languages and new polices of characters containing glyphs\ft{Most
+% foreign languages use characters with accent or diacritical marks. The
+% traditional way to draw an accented character in TeX is the composition, ---~i.e. by using a
+% macro to put an accent over a letter~---. This method offer the possibility to put accent on any character,
+% but prohibit hyphenation on word containing an accented letter.}
+% for the characters used in other language than English should be defined.
+%
+%
+% The style \Fich{Babel} and the new font \textsc{Dc} have been developed to solve these problems.
+% Well, one could think, ``don't worry, be happy'', documents will be typeset without problem.
+% Unfortunately this is not exactly the case, but the problem is outside \TeX{}: there isn't any
+% unique code page! Moreover some systems allow the use of many different code pages.
+% The \textsc{Dc} font obeys more or less to the \textsc{Iso Latin Set 1} standard, but many
+% other code pages exist. The solutions to this problem are multiples:
+% \begin{itemize}
+% \item The use of on external program to do the translation.
+% If the program is well interfaced with \TeX{} (like the \textsc{Tcp} tables of \textsc{Emtex})
+% this solution is very efficient and comfortable to use. But its main disadvantage is to be
+% implementation specific, and the transfer of the document on an other \TeX{} implementation
+% is not easy.
+% \item The use of virtual fonts to match the position of each character in a font to the local
+% code page. This solution is fully integrated with \TeX{}\ft{Some old driver don't work with
+% virtual fonts.}, but when a document is transferred, all the virtual fonts should
+% be given with the document (or defined at the other place), and the problem of hyphenation
+% (see~\ref{HYPHENATION}) is not solved.
+% \item The use of the standard convention to write accented character in \TeX{} (i.e.|\'e| for \'e).
+% This solution works well with \textsc{Dc} fonts (due to a very clever redefinition of macros
+% for positioning accent) and, naturally, is totally portable with any \TeX{} (version 2 and 3).
+% But the typing of accented characters is clumsy (even with a good editor) and
+% the reading is boring.
+% \item The use of the package \Fich{codepage} which is totally \TeX{} (version 3 only) compatible. It
+% can be used to typeset without any modifications a document with an other code page than those of
+% the local computer (this may be useful for a demo version of a document) and the problem of
+% hyphenation is partially (for hyphenation exceptions) solved.
+% But the transfer of document implies the use of package and most
+% of characters above 127 are
+% made ``active'' (they are like macros). This could cause some interference with other packages.
+% \end{itemize}
+% As one could see, no solution is totally perfect, this is due to the lack of a standard for code page not
+% to \TeX{}\ft{If, one day, a such standard should be established, no doubts it will be defined on sixteen
+% bits (number from 1 to 65535) to allow special characters for every applications (math symbols,
+% foreign languages, etc...).}.
+%
+% \subsection{The hyphenation problem\label{HYPHENATION}}
+% The algorithm used in the \TeX{} program to hyphenate word is based on patterns read when the
+% format\ft{A format is a precompiled version of commands used to composed a document.} is build.
+% During the build of the hyphenation table, all the characters are put to lowercase by using the
+% \Comm{lccode} value. When a string of characters in a text is to be hyphenated, it is put in lowercase
+% by using the \Comm{lccode} value and the compared with hyphenation table to find a good break point.
+%
+% If the pattern file use the \Comm{lccode} values defined for the \textsc{Dc} font (which is generally
+% the case), a match will never occur with the character above 127 in a text with a different
+% code page
+% since the \Comm{lccode} are adapted to that code page\ft{This is mandatory to have a correct behaviour
+% with the command \Comm{uppercase} and \Comm{lowercase}, which transform a character in lower or upper case,
+% according to the values: \Comm{lccode} and \Comm{uccode}.}.
+% Despite this fact, the use of a pattern file containing characters above 127 is a good
+% idea\ft{The
+% modification of the original pattern file should not be done to preserve portability and (often) to
+% respect the wish of maintainer who want to have a standard file.}, because
+% the results are surprisingly good (almost with French language). Moreover, the package \Fich{codepage}
+% provides the command \Comm{MakeHyphenationLetter} to adapt locally the \Comm{lccode} value to
+% a value usable by the |\hyphenation| command.
+%
+% \section{The user interface}
+% The prime goal of the interface was to be ``as simple as possible''. Therefore it's composed by two
+% macros and some constants:
+%
+% The code pages are defined by constants:
+% \begin{description}
+% \item[\Comm{FourThreeSeven}] for the code page 437 of the PC; this code page is the standard code
+% page used with English system.
+% \item[\Comm{EightFiveZero}] for the code page 850. This code page is similar to code page 437 but
+% contain more accented characters and less mathematical and special glyphs. It is used by
+% international systems.
+% \item[\Comm{IsoOne}] Iso Latin set 1 (the windows characters).
+% \item[\Comm{Mac}] \textsc{Mac Intosh} characters.
+% \end{description}
+% The \TeX{} encoding are defined by two other constants:
+% \begin{description}
+% \item[\Comm{CM}] for the standard original \TeX{} encoding. This code is defined on only 128 position
+% and does not contain characters with diacritical marks.
+% \item[\Comm{DC}] for the new code defined at Cork. When this code is chosen, the \textsc{Dc} fonts
+% should be available.
+% \end{description}
+%
+% Now the two main macros:
+% \begin{description}
+% \item[\Comm{codepage\#1\#2}] This macro has two parameters which should be the constants defined above. The
+% first parameter is the local code page, the second the encoding of the fonts used with \TeX{}
+% (|\DC|,|\CM|). This macro redefines all the macros for putting
+% accent over a letter, the original macro is saved under
+% a new name.
+% \begin{center}
+% \begin{tabular}{ll}
+% \textbf{New name} & \textbf{Original command}\\
+% \Comm{Grave} & \Comm{`} \\
+% \Comm{Circumflex} & \Comm{\Circonflexe} \\
+% \Comm{Tilda} & \Comm{\TildeChar} \\
+% \Comm{OverBar} & \Comm{=} \\
+% \Comm{UnderBar} & \Comm{b} \\
+% \Comm{Join} & \Comm{t} \\
+% \Comm{HungarUmlaut} & \Comm{H} \\
+% \Comm{Acute} & \Comm{'} \\
+% \Comm{Diaresis} & \Comm{"} \\
+% \Comm{Breve} & \Comm{u} \\
+% \Comm{OverDot} & \Comm{.} \\
+% \Comm{UnderDot} & \Comm{d} \\
+% \Comm{Tcheche} & \Comm{v} \\
+% \Comm{Cedille} & \Comm{c} \\
+% \end{tabular}
+% \end{center}
+% After the call of |\codepage| all the characters above 127 are ``active''.
+% \item[\Comm{MakeHyphenationLetter\#1\#2}] This macro has two parameters,
+% the first is the local code page
+% and the second is a character above 127. This macro should always be called in a group
+% (i.e. inside braces) to avoid undesirable change of \Comm{lccode}. After the call, the letter can be
+% use in the macro |\hyphenation| to construct correct pattern for hyphenation exceptions.
+% Unfortunately this is not one way transformation, and two different characters above 127 could have
+% the same \Comm{lccode}. In this case a warning is used, but this could affect
+% only exceptionally the use of |\hyphenation| command\ft{The tests done with the French language
+% haven't shown any problem, although some french letters are
+% in conflict.}. This macro is defined only when the \textsc{Dc}
+% encoding is chosen.
+% \item[\Comm{CurrentEncoding}] This macro contain the value of the
+% encoding chosen. Its value is meaningful only after the call
+% to the \Comm{codepage} command.
+% \end{description}
+%
+% Now we have some other macros defined by the package. Normally they should be quite rarely used:
+% \begin{description}
+% \item[\Comm{TRtrue}] to allow the translation of special characters (this is the default value !).
+% \item[\Comm{TRfalse}] to suppress the translation of special character. This is useful
+% when writing special characters into auxiliary (external) files like (\texttt{.idx, .toc}).
+% Sometimes, the translation should be done only when these files are read again and not when they are
+% written.
+% \item[\Comm{AllActive}] put the \Comm{catcode} for all characters above 127 to \Comm{active}.
+% \item[\Comm{AllOther}] put the \Comm{catcode} for all characters above 127 to the value 12
+% (other).
+% \item[\Comm{og}] draw the opening french guillomet (defined only when \textsc{Cm} encoding is used).
+% \item[\Comm{fg}] draw the closing french guillomet (defined only when \textsc{Cm} encoding is used).
+% \item[\Comm{atcatcode}] contain the value of the |\catcode| for the
+% character \textbf{@} or |\relax|
+% outside the part of code where this |\catcode| is modified.
+% \item[\Comm{CurrentEncoding}] contain the value of the \TeX{} encoding choosen.
+% \end{description}
+%
+% \section{A short example (for \LaTeX2e)}
+% {
+% | \documentclass{article}|\\
+% | \usepackage{t1enc,codepage}|\\
+% | {\MakeHyphenationLetter{\EightFiveZero}{|\tt\`e|}|\\
+% | \hyphenation{sys-t|\tt\`e|-me sys-t|\tt\`e|-mes}|\\
+% | }|\\
+% | \codepage{\EightFiveZero}{\DC}|\\
+% | \begin{document}|\\
+% | Unix est un joli syst|\tt \`e|me d'exploitation.|\\
+% | \end{document}|
+% }
+%
+% This example will work correctly if all the characters above 127 are usable. Some
+% implementations (like
+% \textsc{Emtex}) map all characters above 127 on character 127 or use special translation tables
+% (\textsc{Tcp} tables for \textsc{EmTeX}). With \textsc{Emtex} the options |/8| should be used when
+% the format is generated.
+%
+%\fi
+%
+% \StopEventually{
+% \begin{thebibliography}{9}
+% \bibitem{Companion} M.~Goosens, F.~Mittelbach, and A.~Samarin
+% \emph{The \LaTeX{} Companion}, 1994, Addison-Wesley.
+% \bibitem{TeXnician} V.~Eijkhout
+% \emph{\TeX{} by Topic A \TeX nician's Reference}, 1992 Addison-Wesley
+% \bibitem{PETIT} R.~Seroul
+% \emph{Le petit livre de \TeX{}}, 1989, Inter\'Edition
+% \end{thebibliography}
+%}
+%
+% \section{The implementation\label{IMPLEMENTATION}}
+%
+% \subsection{Introduction}
+%
+% The package is divided in three parts:
+% \begin{enumerate}
+% \item The drawing of characters\ft{Not all the characters in all code page could be represented in \TeX{}.}.
+% \item The definition for the different code pages.
+% \item The interface.
+% \end{enumerate}
+%
+% Inside the package the characters above 127 are defined by commands whose names try to follow
+% the
+% standard defined by the \textsc{Postscript} language (\Comm{eacute} will draw the character \'e).
+%
+% The definition of a code page is done by associating a character with the command which draw it. To be more
+% precise the command \Comm{eacute} does not draw the character directly, but it define an active character
+% to draw the glyph ``e acute''. Thus a code page table is a call to a command which define each character
+% from this code page to become an active character which draw the desired glyph.
+%
+% In addition, the associated code (\Comm{uccode} and \Comm{lccode}) are adapted to the values used in the code
+% page to have a correct behaviour with the commands \Comm{uppercase} and \Comm{lowercase}. The change of
+% \Comm{lccode} prohibit correct hyphenation\ft{Generally, the hyphenation patterns are defined with the
+% \textsc{Dc} characters and it's not a good idea to modify this file to adapt it to a particular code page.},
+% therefore the command \Comm{MakeHyphenationLetter} is provided to circumvent this problem.
+%
+% \subsection{File \Fich{codepage.sty}}
+%
+% First of all, a general purpose counter used in all package is declared:
+% \begin{macrocode}
+%<*codepage>
+% \end{macrocode}
+%
+% Now we save the category code for the character \textbf{@}
+% \begin{macrocode}
+\chardef\atcatcode=\catcode`\@
+\catcode`\@=11\relax
+% \end{macrocode}
+% and we define some conditionals to be able to test:
+% \begin{itemize}
+% \item what format is used (because some commands do not exist in \TeX{})
+% \item if the translation should be executed on every special character. This is obviously almost ever
+% the case (why else using this package ?!) but in some cases this is not a good solution. When
+% the special characters are written in an auxiliary files, it could be better to translate them
+% when the text is read again, specially if these characters should be transform by commands such
+% \Comm{lowercase} or \Comm{uppercase}.
+% \item if it's the first time that the command \Comm{codepage} is called, because the definition for the
+% command drawing of accents should be saved just the first time (to avoid recursion problem).
+% \end{itemize}
+% \begin{macrocode}
+\newif\if@FirstCodePageCall
+\@FirstCodePageCalltrue
+\newif\ifTeX
+\newif\ifTR % True if we do the translation of character
+\TRtrue
+% \end{macrocode}
+%
+% Here is the test to know if the format is plain \TeX{} or \LaTeX{}. This code is stolen
+% from~\cite{TeXnician}.
+% \begin{macrocode}
+\expandafter\ifx\csname @currsize\endcsname\relax\TeXtrue\else\TeXfalse\fi
+\ifTeX
+ \message{codepage.sty used in TeX context}%
+\else
+ \typeout{codepage.sty used in LaTeX context}%
+\fi
+% \end{macrocode}
+%
+% \DescribeMacro{\@BadHyphenCarMsg}
+% This macro is defined here because it's used in all code page tables. It issue a warning
+% when a special character is used to hyphenate a word, but it is not really a letter. A symbol
+% drawn using mathematical mode of \TeX{} could not be used to hyphenate word.
+% \begin{macrocode}
+\def\@BadHyphenCarMsg#1{%
+\ifTeX
+ \message{Warning: the character \string #1 is not a character
+ to form a word}%
+ \message{Hyphenation can't be done with it}%
+\else
+ \typeout{Warning: the character \string #1 is not a character
+ to form a word}%
+ \typeout{Hyphenation can't be done with it}%
+\fi
+}%@BadHyphenCarMsg
+% \end{macrocode}
+% \DescribeMacro{\@ConflictHyphenCarMsg}
+% Due to the manner to treat the hyphenation (see paragraph~\ref{HYPHEN}),
+% some conflicts could arise
+% between two characters for hyphenation. The two arguments of the macro are the two characters in conflict.
+% \begin{macrocode}
+\def\@ConflictHyphenCarMsg#1#2{%
+\ifTeX
+ \message{Warning the character #1 could be in conflict}%
+ \message{with character #2 for hyphenation algorithm !}%
+\else
+ \typeout{Warning the character #1 could be in conflict}%
+ \typeout{with character #2 for hyphenation algorithm !}%
+\fi
+}%\@ConflictHyphenCarMsg
+% \end{macrocode}
+%
+% Now we could declare the interface of the package, first the definition of constants
+% \begin{macrocode}
+\chardef\CM=0% The target font is CM encoding
+\chardef\DC=1% The target font is DC encoding
+\chardef\FourThreeSeven=0% Code page 437
+\chardef\EightFiveZero=1% Code page 850
+\chardef\IsoOne=2% Iso latin set 1
+\chardef\Mac=3% Apple Mac Intosh characters
+% \end{macrocode}
+%
+% \DescribeMacro{\codepage}
+% This is the main macro which take two parameters:
+% \begin{enumerate}
+% \item the source code page of the document;
+% \item the encoding scheme chosen for the output (\texttt{T1} or \texttt{OT1}).
+% \end{enumerate}
+% After the call of the macro, all the characters above 127 are made ``active''.
+% Some characters draw their shape, the other issue a warning indicating that they could not be drawn
+% with \TeX{} commands.
+%
+% The first thing to do is the save of the current encoding in a global
+% variable and the save of the original macros for putting accents over
+% letter.
+% This should be done inside the macro to be independent of the order of style's declarations and
+% it should be done just once to avoid the recursion problem.
+% \begin{macrocode}
+\def\codepage#1#2{%
+\chardef\CurrentEncoding=#2%
+\if@FirstCodePageCall
+ \let\Grave=\`%
+ \let\Circumflex=\^%
+ \let\Tilda=\~%
+ \let\OverBar=\=%
+ \let\UnderBar=\b%
+ \let\Join=\t%
+ \let\HungarUmlaut=\H%
+ \let\Acute=\'%
+ \let\Diaresis=\"%
+ \let\Breve=\u%
+ \let\OverDot=\.%
+ \let\UnderDot=\d%
+ \let\Tcheche=\v%
+ \let\Cedille=\c%
+ \@FirstCodePageCallfalse
+\fi
+% \end{macrocode}
+% All the characters upper 127 are made active and the table for the
+% code page of document is set.
+% \begin{macrocode}
+\AllActive
+\ifcase#1%
+ \input code437 %
+\or
+ \input code850 %
+\or
+ \input codeiso1 %
+\or
+ \input codemac %
+\fi
+% \end{macrocode}
+% The last thing to do is to save with an other name the standard macros for drawing accent
+% which are modified by ``tabbing''
+% environment of \LaTeX{} and the suppression of white space generated.
+% Thus the same macro's name could
+% be used everywhere to put accent on character.
+% \begin{macrocode}
+\let\@Grave=\`%
+\let\@Aigu=\'%
+\let\@OverBar=\=%
+\ignorespaces
+}%\codepage
+% \end{macrocode}
+%
+% \DescribeMacro{\AllActive}
+% \begin{macrocode}
+\def\AllActive{%
+\catcode`\^^80=\active \catcode`\^^81=\active \catcode`\^^82=\active
+\catcode`\^^83=\active \catcode`\^^84=\active \catcode`\^^85=\active
+\catcode`\^^86=\active \catcode`\^^87=\active \catcode`\^^88=\active
+\catcode`\^^89=\active \catcode`\^^8a=\active \catcode`\^^8b=\active
+\catcode`\^^8c=\active \catcode`\^^8d=\active \catcode`\^^8e=\active
+\catcode`\^^8f=\active \catcode`\^^90=\active \catcode`\^^91=\active
+\catcode`\^^92=\active \catcode`\^^93=\active \catcode`\^^94=\active
+\catcode`\^^95=\active \catcode`\^^96=\active \catcode`\^^97=\active
+\catcode`\^^98=\active \catcode`\^^99=\active \catcode`\^^9a=\active
+\catcode`\^^9b=\active \catcode`\^^9c=\active \catcode`\^^9d=\active
+\catcode`\^^9e=\active \catcode`\^^9f=\active \catcode`\^^a0=\active
+\catcode`\^^a1=\active \catcode`\^^a2=\active \catcode`\^^a3=\active
+\catcode`\^^a4=\active \catcode`\^^a5=\active \catcode`\^^a6=\active
+\catcode`\^^a7=\active \catcode`\^^a8=\active \catcode`\^^a9=\active
+\catcode`\^^aa=\active \catcode`\^^ab=\active \catcode`\^^ac=\active
+\catcode`\^^ad=\active \catcode`\^^ae=\active \catcode`\^^af=\active
+\catcode`\^^b0=\active \catcode`\^^b1=\active \catcode`\^^b2=\active
+\catcode`\^^b3=\active \catcode`\^^b4=\active \catcode`\^^b5=\active
+\catcode`\^^b6=\active \catcode`\^^b7=\active \catcode`\^^b8=\active
+\catcode`\^^b9=\active \catcode`\^^ba=\active \catcode`\^^bb=\active
+\catcode`\^^bc=\active \catcode`\^^bd=\active \catcode`\^^be=\active
+\catcode`\^^bf=\active \catcode`\^^c0=\active \catcode`\^^c1=\active
+\catcode`\^^c2=\active \catcode`\^^c3=\active \catcode`\^^c4=\active
+\catcode`\^^c5=\active \catcode`\^^c6=\active \catcode`\^^c7=\active
+\catcode`\^^c8=\active \catcode`\^^c9=\active \catcode`\^^ca=\active
+\catcode`\^^cb=\active \catcode`\^^cc=\active \catcode`\^^cd=\active
+\catcode`\^^ce=\active \catcode`\^^cf=\active \catcode`\^^d0=\active
+\catcode`\^^d1=\active \catcode`\^^d2=\active \catcode`\^^d3=\active
+\catcode`\^^d4=\active \catcode`\^^d5=\active \catcode`\^^d6=\active
+\catcode`\^^d7=\active \catcode`\^^d8=\active \catcode`\^^d9=\active
+\catcode`\^^da=\active \catcode`\^^db=\active \catcode`\^^dc=\active
+\catcode`\^^dd=\active \catcode`\^^de=\active \catcode`\^^df=\active
+\catcode`\^^e0=\active \catcode`\^^e1=\active \catcode`\^^e2=\active
+\catcode`\^^e3=\active \catcode`\^^e4=\active \catcode`\^^e5=\active
+\catcode`\^^e6=\active \catcode`\^^e7=\active \catcode`\^^e8=\active
+\catcode`\^^e9=\active \catcode`\^^ea=\active \catcode`\^^eb=\active
+\catcode`\^^ec=\active \catcode`\^^ed=\active \catcode`\^^ee=\active
+\catcode`\^^ef=\active \catcode`\^^f0=\active \catcode`\^^f1=\active
+\catcode`\^^f2=\active \catcode`\^^f3=\active \catcode`\^^f4=\active
+\catcode`\^^f5=\active \catcode`\^^f6=\active \catcode`\^^f7=\active
+\catcode`\^^f8=\active \catcode`\^^f9=\active \catcode`\^^fa=\active
+\catcode`\^^fb=\active \catcode`\^^fc=\active \catcode`\^^fd=\active
+\catcode`\^^fe=\active \catcode`\^^ff=\active
+}% \AllActive
+% \end{macrocode}
+%
+% \DescribeMacro{\AllOther}
+% \begin{macrocode}
+\def\AllOther{%
+% \end{macrocode}
+% This definition is used to save space (two digits take twice as space than and
+% macro) and to clarify the meaning of catcode.
+% \begin{macrocode}
+\chardef\other=12\relax
+\catcode`\^^80=\other \catcode`\^^81=\other \catcode`\^^82=\other
+\catcode`\^^83=\other \catcode`\^^84=\other \catcode`\^^85=\other
+\catcode`\^^86=\other \catcode`\^^87=\other \catcode`\^^88=\other
+\catcode`\^^89=\other \catcode`\^^8a=\other \catcode`\^^8b=\other
+\catcode`\^^8c=\other \catcode`\^^8d=\other \catcode`\^^8e=\other
+\catcode`\^^8f=\other \catcode`\^^90=\other \catcode`\^^91=\other
+\catcode`\^^92=\other \catcode`\^^93=\other \catcode`\^^94=\other
+\catcode`\^^95=\other \catcode`\^^96=\other \catcode`\^^97=\other
+\catcode`\^^98=\other \catcode`\^^99=\other \catcode`\^^9a=\other
+\catcode`\^^9b=\other \catcode`\^^9c=\other \catcode`\^^9d=\other
+\catcode`\^^9e=\other \catcode`\^^9f=\other \catcode`\^^a0=\other
+\catcode`\^^a1=\other \catcode`\^^a2=\other \catcode`\^^a3=\other
+\catcode`\^^a4=\other \catcode`\^^a5=\other \catcode`\^^a6=\other
+\catcode`\^^a7=\other \catcode`\^^a8=\other \catcode`\^^a9=\other
+\catcode`\^^aa=\other \catcode`\^^ab=\other \catcode`\^^ac=\other
+\catcode`\^^ad=\other \catcode`\^^ae=\other \catcode`\^^af=\other
+\catcode`\^^b0=\other \catcode`\^^b1=\other \catcode`\^^b2=\other
+\catcode`\^^b3=\other \catcode`\^^b4=\other \catcode`\^^b5=\other
+\catcode`\^^b6=\other \catcode`\^^b7=\other \catcode`\^^b8=\other
+\catcode`\^^b9=\other \catcode`\^^ba=\other \catcode`\^^bb=\other
+\catcode`\^^bc=\other \catcode`\^^bd=\other \catcode`\^^be=\other
+\catcode`\^^bf=\other \catcode`\^^c0=\other \catcode`\^^c1=\other
+\catcode`\^^c2=\other \catcode`\^^c3=\other \catcode`\^^c4=\other
+\catcode`\^^c5=\other \catcode`\^^c6=\other \catcode`\^^c7=\other
+\catcode`\^^c8=\other \catcode`\^^c9=\other \catcode`\^^ca=\other
+\catcode`\^^cb=\other \catcode`\^^cc=\other \catcode`\^^cd=\other
+\catcode`\^^ce=\other \catcode`\^^cf=\other \catcode`\^^d0=\other
+\catcode`\^^d1=\other \catcode`\^^d2=\other \catcode`\^^d3=\other
+\catcode`\^^d4=\other \catcode`\^^d5=\other \catcode`\^^d6=\other
+\catcode`\^^d7=\other \catcode`\^^d8=\other \catcode`\^^d9=\other
+\catcode`\^^da=\other \catcode`\^^db=\other \catcode`\^^dc=\other
+\catcode`\^^dd=\other \catcode`\^^de=\other \catcode`\^^df=\other
+\catcode`\^^e0=\other \catcode`\^^e1=\other \catcode`\^^e2=\other
+\catcode`\^^e3=\other \catcode`\^^e4=\other \catcode`\^^e5=\other
+\catcode`\^^e6=\other \catcode`\^^e7=\other \catcode`\^^e8=\other
+\catcode`\^^e9=\other \catcode`\^^ea=\other \catcode`\^^eb=\other
+\catcode`\^^ec=\other \catcode`\^^ed=\other \catcode`\^^ee=\other
+\catcode`\^^ef=\other \catcode`\^^f0=\other \catcode`\^^f1=\other
+\catcode`\^^f2=\other \catcode`\^^f3=\other \catcode`\^^f4=\other
+\catcode`\^^f5=\other \catcode`\^^f6=\other \catcode`\^^f7=\other
+\catcode`\^^f8=\other \catcode`\^^f9=\other \catcode`\^^fa=\other
+\catcode`\^^fb=\other \catcode`\^^fc=\other \catcode`\^^fd=\other
+\catcode`\^^fe=\other \catcode`\^^ff=\other
+}% \AllOther
+% \end{macrocode}
+%
+% \DescribeMacro{\MakeHyphenationLetter}
+% This macro allow a special letter to be use in a \Comm{hyphenation}
+% command to declare hyphenation exceptions.
+% To do the hyphenation \TeX{} will transform all the characters to lowercase (by using the \Comm{lowerccase}
+% primitive) and then compare the string of characters with the table of hyphenation; if a match is found
+% the hyphenation could be done.
+%
+% The \Comm{lccode} and the \Comm{uccode} are always defined in term of code page of document
+% (for instance the code page 850 of PC), but the process of
+% hyphenation comes at a very late stage when all the characters are already translated in the \textsc{Dc}
+% encoding. Thus a match is never possible. The macro \Comm{MakeHyphenationLetter} will then change locally the
+% value of \Comm{lccode} to anticipate what it will be when the character is translated. Unfortunately this
+% transformation is not one way, and different characters could give the same result, but this case is
+% quite rare and a warning is issued.
+%
+% The two parameters for the macro are the code page of the document and the letter to be used in the
+% \Comm{hyphenation} command.
+% \begin{macrocode}
+\def\MakeHyphenationLetter#1#2{%
+ \ifcase#1%
+ \@MakeHyphenationFourThreeSeven{#2}%
+ \or
+ \@MakeHyphenationEightFiveZero{#2}%
+ \or
+ \@MakeHyphenationLatinOne{#2}%
+ \or
+ \@MakeHyphenationMac{#2}%
+ \fi
+}% MakeHyphenationLetter
+% \end{macrocode}
+%
+% \DescribeMacro{\@CarSmaller}
+% Macros that work only with \LaTeX, and draw character smaller (two steps less
+% than current writing size ie. normalsize is set to footnotesize).
+% With \TeX{} this macros does nothing.
+% \begin{macrocode}
+\def\@CarSmaller{\ifTeX
+ %Do nothing
+ \else
+ %We are in LaTeX
+ \ifx\@currsize\normalsize\relax
+ \footnotesize
+ \else
+ \ifx\@currsize\small\relax
+ \scriptsize
+ \else
+ \ifx\@currsize\footnotesize\relax
+ \tiny
+ \else
+ \ifx\@currsize\scriptsize\relax
+ \tiny % we cannot have less
+ \fi
+ \fi
+ \fi
+ \fi
+ \ifx\@currsize\large\relax
+ \small
+ \else
+ \ifx\@currsize\Large\relax
+ \normalsize
+ \else
+ \ifx\@currsize\LARGE\relax
+ \large
+ \else
+ \ifx\@currsize\huge\relax
+ \Large
+ \else
+ \ifx\@currsize\Huge\relax
+ \LARGE
+ \fi
+ \fi
+ \fi
+ \fi
+ \fi
+ \fi
+ }% \@CarSmaller
+% \end{macrocode}
+%
+% \DescribeMacro{\@Sup}
+% \begin{macrocode}
+\def\@Sup#1{%
+ \ifmmode
+ ^{\hbox{\@CarSmaller #1}}%
+ \else
+ $^{\hbox{\@CarSmaller #1}}$%
+ \fi
+}%\@Sup
+% \end{macrocode}
+% \DescribeMacro{\@Fraction}
+% Create a fraction (for one half, one quarter etc.)
+% \begin{macrocode}
+\def\@Fraction#1#2{%
+ \ifmmode
+ \ifTeX
+ #1\over#2%
+ \else
+ \frac{#1}{#2}%
+ \fi
+ \else
+ \ifTeX
+ $#1\over#2$%
+ \else
+ $\frac{#1}{#2}$%
+ \fi
+ \fi
+}%\@Fraction
+% \end{macrocode}
+%
+% \DescribeMacro{\@MathSymbol}
+% MathSymbol defines its first parameter to print the mathematical
+% symbol given as second parameter (given without {\tt\bslash{}})
+% \begin{macrocode}
+\def\@MathSymbol#1#2{%
+ %Do the global definitions
+ \gdef#1{\ifTR
+ \ifmmode
+ % Already in math ==> no $
+ \csname#2\endcsname
+ \else
+ $\csname#2\endcsname$%
+ \fi
+ \else
+ %No translation to do
+ \string#1%
+ \fi
+ }%
+ }%\@MathSymbol
+% \end{macrocode}
+% \DescribeMacro{\@InMath}
+% @InMath write its argument in mathematical mode (given without {\tt\bslash{}})
+% \begin{macrocode}
+\def\@InMath#1{%
+ \ifmmode
+ % Already in math ==> no $
+ \csname#1\endcsname
+ \else
+ $\csname#1\endcsname$%
+ \fi
+ }%\@InMath
+% \end{macrocode}
+%
+% \DescribeMacro{\@UC}
+% \begin{macrocode}
+\def\@UC#1#2#3{%
+ \global\uccode`#1=#2\global\lccode`#1=#3%
+}%
+% \end{macrocode}
+%
+% \DescribeMacro{\@DefaultValue}
+%Define the default macro for an active character which could not be printed.
+% \begin{macrocode}
+\def\@DefaultValue#1{%
+\ifTeX
+ \message{The character No #1 doesn't exist in target
+ font (ignored) !}%
+\else
+ \typeout{The character No #1 doesn't exist in target
+ font (ignored) !}%
+\fi
+}%
+% \end{macrocode}
+% The last thing to do is to restore the value of \textbf{@} character
+% \begin{macrocode}
+\catcode`\@=\atcatcode \let\atcatcode\relax
+%</codepage>
+% \end{macrocode}
+%
+% \subsection{The drawing of characters (Files
+% \Fich{shapecm.tex}, \Fich{shapedc.tex})}
+%
+%
+% One file for every different possible (in \TeX{}) coding scheme is
+% used. Each file should define macros to draw the characters and the
+% accents in \TeX. All files should contain the same macros.
+%
+% \penalty -200
+% Two types of macros are provided:
+% \penalty 10000
+% \begin{itemize}
+% \item The macros prefixed with the @ character which are used to facilitate
+% the drawing of some characters.
+% These macros should be global and shared by all the
+% active characters (thus they are declared in the file
+% \Fich{codepage.tex}).
+% \item The macros to define active characters. The name of
+% these macro follows the Postscript conventions for
+% character's name (whenever possible) and does not
+% contain an @ character.
+% \end{itemize}
+%
+% The auxiliary macros which are used are:
+% \begin{description}
+% \item[\Comm{@Sup}] to put its argument in superscript
+% \item[\Comm{@Fraction}] to create a fraction with the first parameter over the second in
+% smaller size than the current writing
+% size.
+% \item[\Comm{@CarSmaller}] which change the font to have
+% a font two steps smaller than
+% the current font (do nothing in \TeX{}).
+% \item[\Comm{@MathSymbol}] draw a predefined \TeX{} math symbol.
+% \item[\Comm{@UC}] just to have one macro for doing the same action
+% many times.
+% \end{description}
+%
+% \begin{macrocode}
+%<*shapecm>
+ \chardef\atcatcode=\catcode`\@
+ \catcode`\@=11\relax
+% \end{macrocode}
+% \DescribeMacro{\@StartNewWord}
+% This macro give the possibility to hyphenate word containing special characters between
+% the syllabs containing the accented character. The trick used is to isolate a special character
+% by surrounding it with ``end of word'' mark (i.e. a white space of 0pt where the hyphenation
+% is prohibited).
+%
+% These techniques are used since many year in \TeX{} communauty.
+% \begin{macrocode}
+ \gdef\@StartNewWord{\penalty\@M\hskip\z@skip}%
+% \end{macrocode}
+% \DescribeMacro{\@TreatDotLessCar}
+% Change a dot character to remove the dot when used with an accented character.
+% \begin{macrocode}
+ \gdef\@TreatDotLessCar#1#2{%
+ \@StartNewWord
+ \ifx#1i%
+ \csname#2\endcsname \i
+ \else
+ \ifx#1j%
+ \csname#2\endcsname \j
+ \else
+ \csname#2\endcsname #1%
+ \fi
+ \fi
+ \@StartNewWord}%
+ \gdef\`#1{{\@TreatDotLessCar{#1}{Grave}}}%
+ \gdef\^#1{{\@TreatDotLessCar{#1}{Circumflex}}}%
+ \gdef\~#1{{\@TreatDotLessCar{#1}{Tilda}}}%
+ \gdef\=#1{{\@TreatDotLessCar{#1}{OverBar}}}%
+ \gdef\b#1{{\underbar #1\@StartNewWord}}%
+ \gdef\t#1{{\@TreatDotLessCar{#1}{Join}}}%
+ \gdef\H#1{{\@TreatDotLessCar{#1}{HungarUmlaut}}}%
+ \gdef\'#1{{\@TreatDotLessCar{#1}{Acute}}}%
+ \gdef\"#1{{\@TreatDotLessCar{#1}{Diaresis}}}%
+ \gdef\u#1{{\@TreatDotLessCar{#1}{Breve}}}%
+ \gdef\.#1{{\@TreatDotLessCar{#1}{OverDot}}}%
+ \gdef\d#1{{\UnderDot #1\@StartNewWord}}%
+ \gdef\v#1{{\@TreatDotLessCar{#1}{Tcheche}}}%
+ \gdef\c#1{{\Cedille #1\@StartNewWord}}%
+% \end{macrocode}
+% Now we should define the definition for the french quotation marks which aren't defined
+% in the \textsc{Cm} font. The code is taken from~\cite{PETIT}.
+% \begin{macrocode}
+ \gdef\og{\leavevmode\raise.3ex\hbox{$\scriptscriptstyle\langle\!\langle\,$}}%
+ \gdef\fg{\leavevmode\raise.3ex\hbox{$\scriptscriptstyle\,\rangle\!\rangle$}}%
+% \end{macrocode}
+% This is a rudimentary code to obtain pounds sign in \TeX{} mode.
+% \begin{macrocode}
+ \ifTeX\gdef\pounds{{\it\$}}\fi
+% \end{macrocode}
+%
+% The macros for defining
+% a active character to draw its glyph has always three parameters:
+% \begin{enumerate}
+% \item The character in source font (should be active before the call)
+% \item The uppercase code
+% \item The lowercase code
+% \end{enumerate}
+%
+% \begin{macrocode}
+\def\dieresis#1#2#3{%
+% \end{macrocode}
+% This macro will define an active character to draw a ``diaresis'' character.
+% The first thing to do is to set the \Comm{lccode} and \Comm{uccode} to values meaningful for the
+% code page of the document.
+% \begin{macrocode}
+ \@UC{#1}{#2}{#3}%
+% \end{macrocode}
+% Then, depending on the \TeX{} encoding, the translation is done if the test \Comm{ifTR} is true, else
+% the character is left verbatim (with \Comm{catcode=12}). When
+% |\ifTR| is true, the character is written |\char "xx| for
+% the \textsc{Dc} encoding and it is composed (i.e. |\'e|)
+% for the \textsc{Cm} encoding.
+% \begin{macrocode}
+ \gdef#1{\ifTR\char"7F{}\else\string#1\fi}%
+}%
+\def\acute#1#2#3{%
+ \@UC{#1}{#2}{#3}%
+ \gdef#1{\ifTR\char"13{}\else\string#1\fi}%
+}%
+\def\cedilla#1#2#3{%
+ \@UC{#1}{#2}{#3}%
+ \gdef#1{\ifTR\char"18{}\else\string#1\fi}%
+}%
+\def\Agrave#1#2#3{%
+ \@UC{#1}{#2}{#3}%
+ \gdef#1{\ifTR\ifmmode\grave{A}\else\@Grave{A}\fi\else\string#1\fi}%
+}%
+\def\Aacute#1#2#3{%
+ \@UC{#1}{#2}{#3}%
+ \gdef#1{\ifTR\ifmmode\acute{A}\else\@Aigu{A}\fi\else\string#1\fi}%
+}%
+\def\Acircumflex#1#2#3{%
+ \@UC{#1}{#2}{#3}%
+ \gdef#1{\ifTR\ifmmode\hat{A}\else\^{A}\fi\else\string#1\fi}%
+}%
+\def\Atilde#1#2#3{%
+ \@UC{#1}{#2}{#3}%
+ \gdef#1{\ifTR\ifmmode\tilde{A}\else\~{A}\fi\else\string#1\fi}%
+}%
+\def\Adieresis#1#2#3{%
+ \@UC{#1}{#2}{#3}%
+ \gdef#1{\ifTR\ifmmode\ddot{A}\else\"{A}\fi\else\string#1\fi}%
+}%
+\def\Aring#1#2#3{%
+ \@UC{#1}{#2}{#3}%
+ \gdef#1{\ifTR\AA{}\else\string#1\fi}%
+}%
+\def\fiLigature#1#2#3{%
+ \@UC{#1}{#2}{#3}%
+ \gdef#1{\ifTR{fi}\else\string#1\fi}%
+}%
+\def\flLigature#1#2#3{%
+ \@UC{#1}{#2}{#3}%
+ \gdef#1{\ifTR{fl}\else\string#1\fi}%
+}%
+\def\AE#1#2#3{%
+ \@UC{#1}{#2}{#3}%
+ \gdef#1{\ifTR\AE{}\else\string#1\fi}%
+}%
+\def\Ccedilla#1#2#3{%
+ \@UC{#1}{#2}{#3}%
+ \gdef#1{\ifTR\c {C}\else\string#1\fi}%
+}%
+\def\Egrave#1#2#3{%
+ \@UC{#1}{#2}{#3}%
+ \gdef#1{\ifTR\ifmmode\grave{E}\else\@Grave{E}\fi\else\string#1\fi}%
+}%
+\def\Eacute#1#2#3{%
+ \@UC{#1}{#2}{#3}%
+ \gdef#1{\ifTR\ifmmode\acute{E}\else\@Aigu{E}\fi\else\string#1\fi}%
+}%
+\def\Ecircumflex#1#2#3{%
+ \@UC{#1}{#2}{#3}%
+ \gdef#1{\ifTR\ifmmode\hat{E}\else\^{E}\fi\else\string#1\fi}%
+}%
+\def\Edieresis#1#2#3{%
+ \@UC{#1}{#2}{#3}%
+ \gdef#1{\ifTR\ifmmode\ddot{E}\else\"{E}\fi\else\string#1\fi}%
+}%
+\def\Igrave#1#2#3{%
+ \@UC{#1}{#2}{#3}%
+ \gdef#1{\ifTR\ifmmode\grave{I}\else\@Grave{I}\fi\else\string#1\fi}%
+}%
+\def\Iacute#1#2#3{%
+ \@UC{#1}{#2}{#3}%
+ \gdef#1{\ifTR\ifmmode\acute{I}\else\@Aigu{I}\fi\else\string#1\fi}%
+}%
+\def\Icircumflex#1#2#3{%
+ \@UC{#1}{#2}{#3}%
+ \gdef#1{\ifTR\ifmmode\hat{I}\else\^{I}\fi\else\string#1\fi}%
+}%
+\def\Idieresis#1#2#3{%
+ \@UC{#1}{#2}{#3}%
+ \gdef#1{\ifTR\ifmmode\ddot{I}\else\"{I}\fi\else\string#1\fi}%
+}%
+\def\DBar#1#2#3{%
+ \@UC{#1}{#2}{#3}%
+ % nothing to do we use the default value
+}%
+\def\Ntilde#1#2#3{%
+ \@UC{#1}{#2}{#3}%
+ \gdef#1{\ifTR\ifmmode\tilde{N}\else\~{N}\fi\else\string#1\fi}%
+}%
+\def\Ograve#1#2#3{%
+ \@UC{#1}{#2}{#3}%
+ \gdef#1{\ifTR\ifmmode\grave{O}\else\@Grave{O}\fi\else\string#1\fi}%
+}%
+\def\Oacute#1#2#3{%
+ \@UC{#1}{#2}{#3}%
+ \gdef#1{\ifTR\ifmmode\acute{O}\else\@Aigu{O}\fi\else\string#1\fi}%
+}%
+\def\Ocircumflex#1#2#3{%
+ \@UC{#1}{#2}{#3}%
+ \gdef#1{\ifTR\ifmmode\hat{O}\else\^{O}\fi\else\string#1\fi}%
+}%
+\def\Otilde#1#2#3{%
+ \@UC{#1}{#2}{#3}%
+ \gdef#1{\ifTR\ifmmode\tilde{O}\else\~{O}\fi\else\string#1\fi}%
+}%
+\def\Odieresis#1#2#3{%
+ \@UC{#1}{#2}{#3}%
+ \gdef#1{\ifTR\ifmmode\ddot{O}\else\"{O}\fi\else\string#1\fi}%
+}%
+\def\Oslash#1#2#3{%
+ \@UC{#1}{#2}{#3}%
+ \gdef#1{\ifTR\O{}\else\string#1\fi}%
+}%
+\def\Ugrave#1#2#3{%
+ \@UC{#1}{#2}{#3}%
+ \gdef#1{\ifTR\ifmmode\grave{U}\else\@Grave{U}\fi\else\string#1\fi}%
+}%
+\def\Uacute#1#2#3{%
+ \@UC{#1}{#2}{#3}%
+ \gdef#1{\ifTR\ifmmode\acute{U}\else\@Aigu{U}\fi\else\string#1\fi}%
+}%
+\def\Ucircumflex#1#2#3{%
+ \@UC{#1}{#2}{#3}%
+ \gdef#1{\ifTR\ifmmode\hat{U}\else\^{U}\fi\else\string#1\fi}%
+}%
+\def\Udieresis#1#2#3{%
+ \@UC{#1}{#2}{#3}%
+ \gdef#1{\ifTR\ifmmode\ddot{U}\else\"{U}\fi\else\string#1\fi}%
+}%
+\def\Yacute#1#2#3{%
+ \@UC{#1}{#2}{#3}%
+ \gdef#1{\ifTR\ifmmode\acute{Y}\else\@Aigu{Y}\fi\else\string#1\fi}%
+}%
+\def\Thorn#1#2#3{%
+ \@UC{#1}{#2}{#3}%
+ % no definition in CM
+}%
+\def\germandbls#1#2#3{%
+ \@UC{#1}{#2}{#3}%
+ \gdef#1{\ifTR{SS}\else\string#1\fi}%
+}%
+\def\agrave#1#2#3{%
+ \@UC{#1}{#2}{#3}%
+ \gdef#1{\ifTR\ifmmode\grave{a}\else\@Grave{a}\fi\else\string#1\fi}%
+}%
+\def\aacute#1#2#3{%
+ \@UC{#1}{#2}{#3}%
+ \gdef#1{\ifTR\ifmmode\acute{a}\else\@Aigu{a}\fi\else\string#1\fi}%
+}%
+\def\acircumflex#1#2#3{%
+ \@UC{#1}{#2}{#3}%
+ \gdef#1{\ifTR\ifmmode\hat{a}\else\^{a}\fi\else\string#1\fi}%
+}%
+\def\atilde#1#2#3{%
+ \@UC{#1}{#2}{#3}%
+ \gdef#1{\ifTR\ifmmode\tilde{a}\else\~{a}\fi\else\string#1\fi}%
+}%
+\def\adieresis#1#2#3{%
+ \@UC{#1}{#2}{#3}%
+ \gdef#1{\ifTR\ifmmode\ddot{a}\else\"{a}\fi\else\string#1\fi}%
+}%
+\def\aring#1#2#3{%
+ \@UC{#1}{#2}{#3}%
+ \gdef#1{\ifTR\aa{}\else\string#1\fi}%
+}%
+\def\ae#1#2#3{%
+ \@UC{#1}{#2}{#3}%
+ \gdef#1{\ifTR\ae{}\else\string#1\fi}%
+}%
+\def\ccedilla#1#2#3{%
+ \@UC{#1}{#2}{#3}%
+ \gdef#1{\ifTR\c {c}\else\string#1\fi}%
+}%
+\def\egrave#1#2#3{%
+ \@UC{#1}{#2}{#3}%
+ \gdef#1{\ifTR\ifmmode\grave{e}\else\@Grave{e}\fi\else\string#1\fi}%
+}%
+\def\eacute#1#2#3{%
+ \@UC{#1}{#2}{#3}%
+ \gdef#1{\ifTR\ifmmode\acute{e}\else\@Aigu{e}\fi\else\string#1\fi}%
+}%
+\def\ecircumflex#1#2#3{%
+ \@UC{#1}{#2}{#3}%
+ \gdef#1{\ifTR\ifmmode\hat{e}\else\^{e}\fi\else\string#1\fi}%
+}%
+\def\edieresis#1#2#3{%
+ \@UC{#1}{#2}{#3}%
+ \gdef#1{\ifTR\ifmmode\ddot{e}\else\"{e}\fi\else\string#1\fi}%
+}%
+\def\igrave#1#2#3{%
+ \@UC{#1}{#2}{#3}%
+ \gdef#1{\ifTR\ifmmode\grave{i}\else\@Grave{i}\fi\else\string#1\fi}%
+}%
+\def\iacute#1#2#3{%
+ \@UC{#1}{#2}{#3}%
+ \gdef#1{\ifTR\ifmmode\acute{i}\else\@Aigu{i}\fi\else\string#1\fi}%
+}%
+\def\icircumflex#1#2#3{%
+ \@UC{#1}{#2}{#3}%
+ \gdef#1{\ifTR\ifmmode\hat{i}\else\^{i}\fi\else\string#1\fi}%
+}%
+\def\idieresis#1#2#3{%
+ \@UC{#1}{#2}{#3}%
+ \gdef#1{\ifTR\ifmmode\ddot{i}\else\"{i}\fi\else\string#1\fi}%
+}%
+\def\dBar#1#2#3{%
+ \@UC{#1}{#2}{#3}%
+ % no definition in CM
+}%
+\def\ntilde#1#2#3{%
+ \@UC{#1}{#2}{#3}%
+ \gdef#1{\ifTR\ifmmode\tilde{n}\else\~{n}\fi\else\string#1\fi}%
+}%
+\def\ograve#1#2#3{%
+ \@UC{#1}{#2}{#3}%
+ \gdef#1{\ifTR\ifmmode\grave{o}\else\@Grave{o}\fi\else\string#1\fi}%
+}%
+\def\oacute#1#2#3{%
+ \@UC{#1}{#2}{#3}%
+ \gdef#1{\ifTR\ifmmode\acute{o}\else\@Aigu{o}\fi\else\string#1\fi}%
+}%
+\def\ocircumflex#1#2#3{%
+ \@UC{#1}{#2}{#3}%
+ \gdef#1{\ifTR\ifmmode\hat{o}\else\^{o}\fi\else\string#1\fi}%
+}%
+\def\otilde#1#2#3{%
+ \@UC{#1}{#2}{#3}%
+ \gdef#1{\ifTR\ifmmode\tilde{o}\else\~{o}\fi\else\string#1\fi}%
+}%
+\def\odieresis#1#2#3{%
+ \@UC{#1}{#2}{#3}%
+ \gdef#1{\ifTR\ifmmode\ddot{o}\else\"{o}\fi\else\string#1\fi}%
+}%
+\def\OE#1#2#3{%
+ \@UC{#1}{#2}{#3}%
+ \gdef#1{\ifTR\OE{}\else\string#1\fi}%
+}%
+\def\oe#1#2#3{%
+ \@UC{#1}{#2}{#3}%
+ \gdef#1{\ifTR\oe{}\else\string#1\fi}%
+}%
+\def\oslash#1#2#3{%
+ \@UC{#1}{#2}{#3}%
+ \gdef#1{\ifTR\o{}\else\string#1\fi}%
+}%
+\def\ugrave#1#2#3{%
+ \@UC{#1}{#2}{#3}%
+ \gdef#1{\ifTR\ifmmode\grave{u}\else\@Grave{u}\fi\else\string#1\fi}%
+}%
+\def\uacute#1#2#3{%
+ \@UC{#1}{#2}{#3}%
+ \gdef#1{\ifTR\ifmmode\acute{u}\else\@Aigu{u}\fi\else\string#1\fi}%
+}%
+\def\ucircumflex#1#2#3{%
+ \@UC{#1}{#2}{#3}%
+ \gdef#1{\ifTR\ifmmode\hat{u}\else\^{u}\fi\else\string#1\fi}%
+}%
+\def\udieresis#1#2#3{%
+ \@UC{#1}{#2}{#3}%
+ \gdef#1{\ifTR\ifmmode\ddot{u}\else\"{u}\fi\else\string#1\fi}%
+}%
+\def\yacute#1#2#3{%
+ \@UC{#1}{#2}{#3}%
+ \gdef#1{\ifTR\ifmmode\acute{y}\else\@Aigu{y}\fi\else\string#1\fi}%
+}%
+\def\thorn#1#2#3{%
+ \@UC{#1}{#2}{#3}%
+ % no definition in CM
+}%
+\def\ydieresis#1#2#3{%
+ \@UC{#1}{#2}{#3}%
+ \gdef#1{\ifTR\ifmmode\ddot{y}\else\"{y}\fi\else\string#1\fi}%
+}%
+\def\Ydieresis#1#2#3{%
+ \@UC{#1}{#2}{#3}%
+ \gdef#1{\ifTR\ifmmode\ddot{Y}\else\"{Y}\fi\else\string#1\fi}%
+}%
+%
+\def\alpha#1#2#3{%
+ \@UC{#1}{#2}{#3}%
+ \@MathSymbol{#1}{alpha}%
+}%
+\def\approx#1#2#3{%
+ \@UC{#1}{#2}{#3}%
+ \@MathSymbol{#1}{approx}%
+}%
+\def\beta#1#2#3{%
+ \@UC{#1}{#2}{#3}%
+ \@MathSymbol{#1}{beta}%
+}%
+\def\bullet#1#2#3{%
+ \@UC{#1}{#2}{#3}%
+ \@MathSymbol{#1}{bullet}%
+}%
+\def\cap#1#2#3{%
+ \@UC{#1}{#2}{#3}%
+ \@MathSymbol{#1}{cap}%
+}%
+\def\cent#1#2#3{%
+ \@UC{#1}{#2}{#3}%
+ % no definition in CM
+ % no definition in DC
+}%
+\def\guillemeotright#1#2#3{%
+ \@UC{#1}{#2}{#3}%
+ \gdef#1{\ifTR\fg{}\else\string#1\fi}%
+}%
+\def\copyright#1#2#3{%
+ \@UC{#1}{#2}{#3}%
+ \gdef#1{\ifTR\copyright{}\else\string#1\fi}%
+}%
+\def\currency#1#2#3{% character hex A4 in Iso latin set 1
+ \@UC{#1}{#2}{#3}%
+ % no definition in CM
+}%
+\def\degree#1#2#3{%
+ \@UC{#1}{#2}{#3}%
+}%
+\def\dag#1#2#3{%
+ \@UC{#1}{#2}{#3}%
+ \@MathSymbol{#1}{dag}%
+}%
+\def\ddag#1#2#3{%
+ \@UC{#1}{#2}{#3}%
+ \@MathSymbol{#1}{ddag}%
+}%
+\def\delta#1#2#3{%
+ \@UC{#1}{#2}{#3}%
+ \@MathSymbol{#1}{delta}%
+}%
+\def\div#1#2#3{%
+ \@UC{#1}{#2}{#3}%
+ \@MathSymbol{#1}{div}%
+}%
+\def\diamond#1#2#3{%
+ \@UC{#1}{#2}{#3}%
+ \@MathSymbol{#1}{Diamond}%
+}%
+\def\emptysetSign#1#2#3{%
+ \@UC{#1}{#2}{#3}%
+ \@MathSymbol{#1}{emptyset}% is nicer than epsilon
+}%
+\def\section#1#2#3{%
+ \@UC{#1}{#2}{#3}%
+ \gdef#1{\ifTR{\S}\else\string#1\fi}%
+}%
+\def\epsilon#1#2#3{%
+ \@UC{#1}{#2}{#3}%
+ \@MathSymbol{#1}{varepsilon}% is nicer than epsilon
+}%
+\def\equiv#1#2#3{%
+ \@UC{#1}{#2}{#3}%
+ \@MathSymbol{#1}{equiv}%
+}%
+\def\ellipsis#1#2#3{%
+ \@UC{#1}{#2}{#3}%
+ \gdef#1{\ifTR{...}\else\string#1\fi}%
+}%
+\def\exclamdown#1#2#3{%
+ \@UC{#1}{#2}{#3}%
+ \gdef#1{\ifTR{!`}\else\string#1\fi}%
+}%
+\def\ordfeminine#1#2#3{%
+ \@UC{#1}{#2}{#3}%
+ \gdef#1{\ifTR\@Sup{\b{a}}\else\string#1\fi}%
+}%
+\def\geq#1#2#3{%
+ \@UC{#1}{#2}{#3}%
+ \@MathSymbol{#1}{geq}%
+}%
+\def\Gamma#1#2#3{%
+ \@UC{#1}{#2}{#3}%
+ \@MathSymbol{#1}{Gamma}%
+}%
+\def\infty#1#2#3{%
+ \@UC{#1}{#2}{#3}%
+ \@MathSymbol{#1}{infty}%
+}%
+\def\leq#1#2#3{%
+ \@UC{#1}{#2}{#3}%
+ \@MathSymbol{#1}{leq}%
+}%
+\def\emdash#1#2#3{%
+ \@UC{#1}{#2}{#3}%
+ \gdef#1{\ifTR{---}\else\string#1\fi}%
+}%
+\def\ordmasculine#1#2#3{%
+ \@UC{#1}{#2}{#3}%
+ \gdef#1{\ifTR\@Sup{\b{o}}\else\string#1\fi}%
+}%
+\def\mu#1#2#3{%
+ \@UC{#1}{#2}{#3}%
+ \@MathSymbol{#1}{mu}%
+}%
+\def\neg#1#2#3{%
+ \@UC{#1}{#2}{#3}%
+ \@MathSymbol{#1}{neg}%
+}%
+\def\neq#1#2#3{%
+ \@UC{#1}{#2}{#3}%
+ \@MathSymbol{#1}{neq}%
+}%
+\def\unbreakablespace#1#2#3{%
+ \@UC{#1}{#2}{#3}%
+ \gdef#1{\ifTR~\else\string#1\fi}%
+}%
+\def\Omega#1#2#3{%
+ \@UC{#1}{#2}{#3}%
+ \@MathSymbol{#1}{Omega}%
+}%
+\def\OneHalf#1#2#3{%
+ \@UC{#1}{#2}{#3}%
+ \gdef#1{\ifTR{\@Fraction{1}{2}}\else\string#1\fi}%
+}%
+\def\OneQuarter#1#2#3{%
+ \@UC{#1}{#2}{#3}%
+ \gdef#1{\ifTR{\@Fraction{1}{4}}\else\string#1\fi}%
+}%
+\def\guilletmotleft#1#2#3{%
+ \@UC{#1}{#2}{#3}%
+ \gdef#1{\ifTR\og{}\else\string#1\fi}%
+}%
+\def\Pi#1#2#3{%
+ \@UC{#1}{#2}{#3}%
+ \@MathSymbol{#1}{Pi}%
+}%
+\def\pi#1#2#3{%
+ \@UC{#1}{#2}{#3}%
+ \@MathSymbol{#1}{pi}%
+}%
+\def\pm#1#2#3{%
+ \@UC{#1}{#2}{#3}%
+ \@MathSymbol{#1}{pm}%
+}%
+\def\ParagraphSign#1#2#3{%
+ \@UC{#1}{#2}{#3}%
+ \gdef#1{\ifTR{\P}\else\string#1\fi}%
+}%
+\def\partial#1#2#3{%
+ \@UC{#1}{#2}{#3}%
+ \@MathSymbol{#1}{partial}%
+}%
+\def\Phi#1#2#3{%
+ \@UC{#1}{#2}{#3}%
+ \@MathSymbol{#1}{Phi}%
+}%
+\def\pounds#1#2#3{%
+ \@UC{#1}{#2}{#3}%
+ \gdef#1{\ifTR\pounds{}\else\string#1\fi}%
+}%
+\def\powerone#1#2#3{%
+ \@UC{#1}{#2}{#3}%
+ \gdef#1{\ifTR{\@Sup{1}}\else\string#1\fi}%
+}%
+\def\powerthree#1#2#3{%
+ \@UC{#1}{#2}{#3}%
+ \gdef#1{\ifTR{\@Sup{3}}\else\string#1\fi}%
+}%
+\def\powertwo#1#2#3{%
+ \@UC{#1}{#2}{#3}%
+ \gdef#1{\ifTR{\@Sup{2}}\else\string#1\fi}%
+}%
+\def\questiondown#1#2#3{%
+ \@UC{#1}{#2}{#3}%
+ \gdef#1{\ifTR{?`}\else\string#1\fi}%
+}%
+\def\register#1#2#3{%
+ \@UC{#1}{#2}{#3}%
+ % no definition in CM
+ % no definition in DC
+}%
+\def\Sigma#1#2#3{%
+ \@UC{#1}{#2}{#3}%
+ \@MathSymbol{#1}{Sigma}%
+}%
+\def\sigma#1#2#3{%
+ \@UC{#1}{#2}{#3}%
+ \@MathSymbol{#1}{sigma}%
+}%
+\def\quoteright#1#2#3{%
+ \@UC{#1}{#2}{#3}%
+ \gdef#1{\ifTR{'}\else\string#1\fi}%
+}%
+\def\quoteleft#1#2#3{%
+ \@UC{#1}{#2}{#3}%
+ \gdef#1{\ifTR{`}\else\string#1\fi}%
+}%
+\def\splitbar#1#2#3{%
+ \@UC{#1}{#2}{#3}%
+ % no definition in CM
+}%
+\def\tau#1#2#3{%
+ \@UC{#1}{#2}{#3}%
+ \@MathSymbol{#1}{tau}%
+}%
+\def\ThetaSign#1#2#3{%
+ \@UC{#1}{#2}{#3}%
+ \@MathSymbol{#1}{Theta}%
+}%
+\def\threequarter#1#2#3{%
+ \@UC{#1}{#2}{#3}%
+ \gdef#1{\ifTR{\@Fraction{3}{4}}\else\string#1\fi}%
+}%
+\def\times#1#2#3{%
+ \@UC{#1}{#2}{#3}%
+ \@MathSymbol{#1}{times}%
+}%
+\def\trademark#1#2#3{%
+ \@UC{#1}{#2}{#3}%
+ \gdef#1{\ifTR\@Sup{TM}\else\string#1\fi}%
+}%
+\def\quotedblright#1#2#3{%
+ \@UC{#1}{#2}{#3}%
+ \gdef#1{\ifTR{''}\else\string#1\fi}%
+}%
+\def\quotedblleft#1#2#3{%
+ \@UC{#1}{#2}{#3}%
+ \gdef#1{\ifTR{``}\else\string#1\fi}%
+}%
+\def\yen#1#2#3{%
+ \@UC{#1}{#2}{#3}%
+ % no definition in CM
+ % no definition in DC
+}%
+\def\perthousand#1#2#3{%
+ \@UC{#1}{#2}{#3}%
+ % no definition in CM
+ % no definition in DC
+}%
+\def\florin#1#2#3{%
+ \@UC{#1}{#2}{#3}%
+ \gdef#1{\ifTR{\it f}\else\string#1\fi}%
+}%
+\catcode`\@=\atcatcode \let\atcatcode\relax
+%</shapecm>
+% \end{macrocode}
+%
+% These macros redefines all the effect of the macros to put accents on
+% characters
+% in order to produce directly the character in the font \textsc{Dc}.
+% The code is stolen from the file \Fich{DCLFONT.STY} from the \textsc{Nfss} distribution.
+% Two reasons have dictated this choice:
+% \begin{itemize}
+% \item When \textsc{Nfss} is not used, the composition of character+accent
+% will give directly the accented character;
+% \item When \textsc{Nfss} is used, it's better to have the translation done
+% in command |\char 'xxx| instead of |^^xx|. This avoid bad translation when
+% an auxiliary file is reread.
+% \end{itemize}
+% The first thing to do is to save the catcode of @ character.
+% \begin{macrocode}
+%<*shapedc>
+\chardef\atcatcode=\catcode`\@
+\catcode`\@=11\relax
+\global\chardef\aa="0E5%
+\global\chardef\ae="0E6%
+\global\chardef\l="0AA%
+\global\chardef\oe="0F7%
+\global\chardef\o="0F8%
+\global\chardef\ss="0FF%
+\global\chardef\AA="0C5%
+\global\chardef\AE="0C6%
+\global\chardef\L="8A%
+\global\chardef\OE="0D7%
+\global\chardef\O="0D8%
+\global\chardef\SS="0DF%
+\global\chardef\i="19%
+\global\chardef\j="1A%
+\global\chardef\pounds="0BF%
+\gdef\hbar{{\mathchar'11\mkern-9muh}}%
+\def\@accent@def#1#2#3{\expandafter\gdef
+ \csname @#1@\string#2@#1@\endcsname{#3}}%
+\gdef\@accent@use#1#2#3{%
+ \expandafter\ifx \csname @#1@\string#3@#1@\endcsname \relax
+ {\accent#2 #3}%
+ \else \csname @#1@\string#3@#1@\endcsname\fi}%
+\gdef\`{\@accent@use{grave}{0}}%
+\let\@accii=\`%
+\@accent@def{grave}{a}{\char"E0{}}%
+\@accent@def{grave}{e}{\char"E8{}}%
+\@accent@def{grave}{\i}{\char"EC{}}%
+\@accent@def{grave}{i}{\char"EC{}}%
+\@accent@def{grave}{o}{\char"F2{}}%
+\@accent@def{grave}{u}{\char"F9{}}%
+\@accent@def{grave}{A}{\char"C0{}}%
+\@accent@def{grave}{E}{\char"C8{}}%
+\@accent@def{grave}{I}{\char"CC{}}%
+\@accent@def{grave}{O}{\char"D2{}}%
+\@accent@def{grave}{U}{\char"D9{}}%
+\gdef\'{\@accent@use{acute}{1}}%
+\let\@acci=\'%
+\@accent@def{acute}{n}{\char"AB{}}%
+\@accent@def{acute}{l}{\char"A8{}}%
+\@accent@def{acute}{r}{\char"AF{}}%
+\@accent@def{acute}{s}{\char"B1{}}%
+\@accent@def{acute}{z}{\char"B9{}}%
+\@accent@def{acute}{a}{\char"E1{}}%
+\@accent@def{acute}{e}{\char"E9{}}%
+\@accent@def{acute}{\i}{\char"ED{}}%
+\@accent@def{acute}{i}{\char"ED{}}%
+\@accent@def{acute}{o}{\char"F3{}}%
+\@accent@def{acute}{u}{\char"FA{}}%
+\@accent@def{acute}{y}{\char"FD{}}%
+\@accent@def{acute}{N}{\char"8B{}}%
+\@accent@def{acute}{L}{\char"88{}}%
+\@accent@def{acute}{R}{\char"8F{}}%
+\@accent@def{acute}{S}{\char"91{}}%
+\@accent@def{acute}{Z}{\char"99{}}%
+\@accent@def{acute}{A}{\char"C1{}}%
+\@accent@def{acute}{E}{\char"C9{}}%
+\@accent@def{acute}{I}{\char"CD{}}%
+\@accent@def{acute}{O}{\char"D3{}}%
+\@accent@def{acute}{U}{\char"DA{}}%
+\@accent@def{acute}{Y}{\char"DD{}}%
+\@accent@def{acute}{c}{\char"A2{}}%
+\@accent@def{acute}{C}{\char"82{}}%
+\gdef\v{\@accent@use{check}{7}}%
+\@accent@def{check}{c}{\char"A3{}}%
+\@accent@def{check}{e}{\char"A5{}}%
+\@accent@def{check}{n}{\char"AC{}}%
+\@accent@def{check}{r}{\char"B0{}}%
+\@accent@def{check}{s}{\char"B2{}}%
+\@accent@def{check}{z}{\char"BA{}}%
+\@accent@def{check}{C}{\char"83{}}%
+\@accent@def{check}{D}{\char"84{}}%
+\@accent@def{check}{E}{\char"85{}}%
+\@accent@def{check}{N}{\char"8C{}}%
+\@accent@def{check}{R}{\char"90{}}%
+\@accent@def{check}{S}{\char"92{}}%
+\@accent@def{check}{T}{\char"94{}}%
+\@accent@def{check}{Z}{\char"9A{}}%
+\gdef\u{\@accent@use{breve}{8}}%
+\@accent@def{breve}{a}{\char"A0{}}%
+\@accent@def{breve}{g}{\char"A7{}}%
+\@accent@def{breve}{A}{\char"80{}}%
+\@accent@def{breve}{G}{\char"87{}}%
+\gdef\=#1{{\accent9 #1}}%
+\let\@acciii=\=%
+\gdef\^{\@accent@use{circflx}{2}}%
+\@accent@def{circflx}{a}{\char"E2{}}%
+\@accent@def{circflx}{e}{\char"EA{}}%
+\@accent@def{circflx}{\i}{\char"EE{}}%
+\@accent@def{circflx}{i}{\char"EE{}}%
+\@accent@def{circflx}{o}{\char"F4{}}%
+\@accent@def{circflx}{u}{\char"FB{}}%
+\@accent@def{circflx}{A}{\char"C2{}}%
+\@accent@def{circflx}{E}{\char"CA{}}%
+\@accent@def{circflx}{I}{\char"CE{}}%
+\@accent@def{circflx}{O}{\char"D4{}}%
+\@accent@def{circflx}{U}{\char"DB{}}%
+\gdef\.{\@accent@use{dot}{10}}%
+\@accent@def{dot}{z}{\char"BB{}}%
+\@accent@def{dot}{Z}{\char"9B{}}%
+\@accent@def{dot}{I}{\char"9D{}}%
+\@accent@def{dot}{i}{i}%
+\gdef\H{\@accent@use{Hung}{5}}%
+\@accent@def{Hung}{o}{\char"AE{}}%
+\@accent@def{Hung}{u}{\char"B6{}}%
+\@accent@def{Hung}{O}{\char"8E{}}%
+\@accent@def{Hung}{U}{\char"96{}}%
+\gdef\~{\@accent@use{tilde}{3}}%
+\@accent@def{tilde}{a}{\char"E3{}}%
+\@accent@def{tilde}{n}{\char"F1{}}%
+\@accent@def{tilde}{o}{\char"F5{}}%
+\@accent@def{tilde}{A}{\char"C3{}}%
+\@accent@def{tilde}{N}{\char"D1{}}%
+\@accent@def{tilde}{O}{\char"D5{}}%
+\gdef\"{\@accent@use{Umlaut}{4}}%
+\@accent@def{Umlaut}{a}{\char"E4{}}%
+\@accent@def{Umlaut}{e}{\char"EB{}}%
+\@accent@def{Umlaut}{\i}{\char"EF{}}%
+\@accent@def{Umlaut}{i}{\char"EF{}}%
+\@accent@def{Umlaut}{o}{\char"F6{}}%
+\@accent@def{Umlaut}{u}{\char"FC{}}%
+\@accent@def{Umlaut}{A}{\char"C4{}}%
+\@accent@def{Umlaut}{E}{\char"CB{}}%
+\@accent@def{Umlaut}{I}{\char"CF{}}%
+\@accent@def{Umlaut}{O}{\char"D6{}}%
+\@accent@def{Umlaut}{U}{\char"DC{}}%
+\gdef\pb#1{\oalign{#1\crcr\hidewidth
+ \vbox to.2ex{\hbox{\char9}\vss}\hidewidth}}%
+\gdef\pc#1{\expandafter\ifx
+ \csname @cedilla@\string#1@cedilla@\endcsname \relax
+ \c@dilla#1\else \csname @cedilla@\string#1@cedilla@\endcsname\fi}%
+\@accent@def{cedilla}{s}{\char"B3{}}%
+\@accent@def{cedilla}{t}{\char"B5{}}%
+\@accent@def{cedilla}{c}{\char"E7{}}%
+\@accent@def{cedilla}{S}{\char"93{}}%
+\@accent@def{cedilla}{T}{\char"95{}}%
+\@accent@def{cedilla}{C}{\char"C7{}}%
+\gdef\c@dilla#1{\setbox\z@\hbox{#1}\ifdim\ht\z@=1ex\accent11 #1%
+ \else{\ooalign{\hidewidth\char11\hidewidth\crcr\unhbox\z@}}\fi}%
+%
+\def\dieresis#1#2#3{%
+ \@UC{#1}{#2}{#3}%
+ \gdef#1{\ifTR\char'004{}\else\string#1\fi}%
+}%
+\def\acute#1#2#3{%
+ \@UC{#1}{#2}{#3}%
+ \gdef#1{\ifTR\char"01{}\else\string#1\fi}%
+}%
+\def\cedilla#1#2#3{%
+ \@UC{#1}{#2}{#3}%
+ \gdef#1{\ifTR\char"0D{}\else\string#1\fi}%
+}%
+\def\Agrave#1#2#3{%
+ \@UC{#1}{#2}{#3}%
+ \gdef#1{\ifTR\char"C0{}\else\string#1\fi}%
+}%
+\def\Aacute#1#2#3{%
+ \@UC{#1}{#2}{#3}%
+ \gdef#1{\ifTR\char"C1{}\else\string#1\fi}%
+}%
+\def\Acircumflex#1#2#3{%
+ \@UC{#1}{#2}{#3}%
+ \gdef#1{\ifTR\char"C2{}\else\string#1\fi}%
+}%
+\def\Atilde#1#2#3{%
+ \@UC{#1}{#2}{#3}%
+ \gdef#1{\ifTR\char"C3{}\else\string#1\fi}%
+}%
+\def\Adieresis#1#2#3{%
+ \@UC{#1}{#2}{#3}%
+ \gdef#1{\ifTR\char"C4{}\else\string#1\fi}%
+}%
+\def\Aring#1#2#3{%
+ \@UC{#1}{#2}{#3}%
+ \gdef#1{\ifTR\char"C5{}\else\string#1\fi}%
+}%
+\def\fiLigature#1#2#3{%
+ \@UC{#1}{#2}{#3}%
+ \gdef#1{\ifTR{fi}\else\string#1\fi}%
+}%
+\def\flLigature#1#2#3{%
+ \@UC{#1}{#2}{#3}%
+ \gdef#1{\ifTR{fl}\else\string#1\fi}%
+}%
+\def\AE#1#2#3{%
+ \@UC{#1}{#2}{#3}%
+ \gdef#1{\ifTR\char"C6{}\else\string#1\fi}%
+}%
+\def\Ccedilla#1#2#3{%
+ \@UC{#1}{#2}{#3}%
+ \gdef#1{\ifTR\char"C7{}\else\string#1\fi}%
+}%
+\def\Egrave#1#2#3{%
+ \@UC{#1}{#2}{#3}%
+ \gdef#1{\ifTR\char"C8{}\else\string#1\fi}%
+}%
+\def\Eacute#1#2#3{%
+ \@UC{#1}{#2}{#3}%
+ \gdef#1{\ifTR\char"C9{}\else\string#1\fi}%
+}%
+\def\Ecircumflex#1#2#3{%
+ \@UC{#1}{#2}{#3}%
+ \gdef#1{\ifTR\char"CA{}\else\string#1\fi}%
+}%
+\def\Edieresis#1#2#3{%
+ \@UC{#1}{#2}{#3}%
+ \gdef#1{\ifTR\char"CB{}\else\string#1\fi}%
+}%
+\def\Igrave#1#2#3{%
+ \@UC{#1}{#2}{#3}%
+ \gdef#1{\ifTR\char"CC{}\else\string#1\fi}%
+}%
+\def\Iacute#1#2#3{%
+ \@UC{#1}{#2}{#3}%
+ \gdef#1{\ifTR\char"CD{}\else\string#1\fi}%
+}%
+\def\Icircumflex#1#2#3{%
+ \@UC{#1}{#2}{#3}%
+ \gdef#1{\ifTR\char"CE{}\else\string#1\fi}%
+}%
+\def\Idieresis#1#2#3{%
+ \@UC{#1}{#2}{#3}%
+ \gdef#1{\ifTR\char"CF{}\else\string#1\fi}%
+}%
+\def\DBar#1#2#3{%
+ \@UC{#1}{#2}{#3}%
+ \gdef#1{\ifTR\char"D0{}\else\string#1\fi}%
+}%
+\def\Ntilde#1#2#3{%
+ \@UC{#1}{#2}{#3}%
+ \gdef#1{\ifTR\char"D1{}\else\string#1\fi}%
+}%
+\def\Ograve#1#2#3{%
+ \@UC{#1}{#2}{#3}%
+ \gdef#1{\ifTR\char"D2{}\else\string#1\fi}%
+}%
+\def\Oacute#1#2#3{%
+ \@UC{#1}{#2}{#3}%
+ \gdef#1{\ifTR\char"D3{}\else\string#1\fi}%
+}%
+\def\Ocircumflex#1#2#3{%
+ \@UC{#1}{#2}{#3}%
+ \gdef#1{\ifTR\char"D4{}\else\string#1\fi}%
+}%
+\def\Otilde#1#2#3{%
+ \@UC{#1}{#2}{#3}%
+ \gdef#1{\ifTR\char"D5{}\else\string#1\fi}%
+}%
+\def\Odieresis#1#2#3{%
+ \@UC{#1}{#2}{#3}%
+ \gdef#1{\ifTR\char"D6{}\else\string#1\fi}%
+}%
+\def\Oslash#1#2#3{%
+ \@UC{#1}{#2}{#3}%
+ \gdef#1{\ifTR\char"D8{}\else\string#1\fi}%
+}%
+\def\Ugrave#1#2#3{%
+ \@UC{#1}{#2}{#3}%
+ \gdef#1{\ifTR\char"D9{}\else\string#1\fi}%
+}%
+\def\Uacute#1#2#3{%
+ \@UC{#1}{#2}{#3}%
+ \gdef#1{\ifTR\char"DA{}\else\string#1\fi}%
+}%
+\def\Ucircumflex#1#2#3{%
+ \@UC{#1}{#2}{#3}%
+ \gdef#1{\ifTR\char"DB{}\else\string#1\fi}%
+}%
+\def\Udieresis#1#2#3{%
+ \@UC{#1}{#2}{#3}%
+ \gdef#1{\ifTR\char"DC{}\else\string#1\fi}%
+}%
+\def\Yacute#1#2#3{%
+ \@UC{#1}{#2}{#3}%
+ \gdef#1{\ifTR\char"DD{}\else\string#1\fi}%
+}%
+\def\Thorn#1#2#3{%
+ \@UC{#1}{#2}{#3}%
+ \gdef#1{\ifTR\char"DE{}\else\string#1\fi}%
+}%
+\def\germandbls#1#2#3{%
+ \@UC{#1}{#2}{#3}%
+ \gdef#1{\ifTR\char"DF{}\else\string#1\fi}%
+}%
+\def\agrave#1#2#3{%
+ \@UC{#1}{#2}{#3}%
+ \gdef#1{\ifTR\char"E0{}\else\string#1\fi}%
+}%
+\def\aacute#1#2#3{%
+ \@UC{#1}{#2}{#3}%
+ \gdef#1{\ifTR\char"E1{}\else\string#1\fi}%
+}%
+\def\acircumflex#1#2#3{%
+ \@UC{#1}{#2}{#3}%
+ \gdef#1{\ifTR\char"E2{}\else\string#1\fi}%
+}%
+\def\atilde#1#2#3{%
+ \@UC{#1}{#2}{#3}%
+ \gdef#1{\ifTR\char"E3{}\else\string#1\fi}%
+}%
+\def\adieresis#1#2#3{%
+ \@UC{#1}{#2}{#3}%
+ \gdef#1{\ifTR\char"E4{}\else\string#1\fi}%
+}%
+\def\aring#1#2#3{%
+ \@UC{#1}{#2}{#3}%
+ \gdef#1{\ifTR\char"E5{}\else\string#1\fi}%
+}%
+\def\ae#1#2#3{%
+ \@UC{#1}{#2}{#3}%
+ \gdef#1{\ifTR\char"E6{}\else\string#1\fi}%
+}%
+\def\ccedilla#1#2#3{%
+ \@UC{#1}{#2}{#3}%
+ \gdef#1{\ifTR\char"E7{}\else\string#1\fi}%
+}%
+\def\egrave#1#2#3{%
+ \@UC{#1}{#2}{#3}%
+ \gdef#1{\ifTR\char"E8{}\else\string#1\fi}%
+}%
+\def\eacute#1#2#3{%
+ \@UC{#1}{#2}{#3}%
+ \gdef#1{\ifTR\char"E9{}\else\string#1\fi}%
+}%
+\def\ecircumflex#1#2#3{%
+ \@UC{#1}{#2}{#3}%
+ \gdef#1{\ifTR\char"EA{}\else\string#1\fi}%
+}%
+\def\edieresis#1#2#3{%
+ \@UC{#1}{#2}{#3}%
+ \gdef#1{\ifTR\char"EB{}\else\string#1\fi}%
+}%
+\def\igrave#1#2#3{%
+ \@UC{#1}{#2}{#3}%
+ \gdef#1{\ifTR\char"EC{}\else\string#1\fi}%
+}%
+\def\iacute#1#2#3{%
+ \@UC{#1}{#2}{#3}%
+ \gdef#1{\ifTR\char"ED{}\else\string#1\fi}%
+}%
+\def\icircumflex#1#2#3{%
+ \@UC{#1}{#2}{#3}%
+ \gdef#1{\ifTR\char"EE{}\else\string#1\fi}%
+}%
+\def\idieresis#1#2#3{%
+ \@UC{#1}{#2}{#3}%
+ \gdef#1{\ifTR\char"EF{}\else\string#1\fi}%
+}%
+\def\dBar#1#2#3{%
+ \@UC{#1}{#2}{#3}%
+ \gdef#1{\ifTR\char"F0{}\else\string#1\fi}%
+}%
+\def\ntilde#1#2#3{%
+ \@UC{#1}{#2}{#3}%
+ \gdef#1{\ifTR\char"F1{}\else\string#1\fi}%
+}%
+\def\ograve#1#2#3{%
+ \@UC{#1}{#2}{#3}%
+ \gdef#1{\ifTR\char"F2{}\else\string#1\fi}%
+}%
+\def\oacute#1#2#3{%
+ \@UC{#1}{#2}{#3}%
+ \gdef#1{\ifTR\char"F3{}\else\string#1\fi}%
+}%
+\def\ocircumflex#1#2#3{%
+ \@UC{#1}{#2}{#3}%
+ \gdef#1{\ifTR\char"F4{}\else\string#1\fi}%
+}%
+\def\otilde#1#2#3{%
+ \@UC{#1}{#2}{#3}%
+ \gdef#1{\ifTR\char"F5{}\else\string#1\fi}%
+}%
+\def\odieresis#1#2#3{%
+ \@UC{#1}{#2}{#3}%
+ \gdef#1{\ifTR\char"F6{}\else\string#1\fi}%
+}%
+\def\OE#1#2#3{%
+ \@UC{#1}{#2}{#3}%
+ \gdef#1{\ifTR\OE{}\else\string#1\fi}%
+}%
+\def\oe#1#2#3{%
+ \@UC{#1}{#2}{#3}%
+ \gdef#1{\ifTR\oe{}\else\string#1\fi}%
+}%
+\def\oslash#1#2#3{%
+ \@UC{#1}{#2}{#3}%
+ \gdef#1{\ifTR\char"F8{}\else\string#1\fi}%
+}%
+\def\ugrave#1#2#3{%
+ \@UC{#1}{#2}{#3}%
+ \gdef#1{\ifTR\char"F9{}\else\string#1\fi}%
+}%
+\def\uacute#1#2#3{%
+ \@UC{#1}{#2}{#3}%
+ \gdef#1{\ifTR\char"FA{}\else\string#1\fi}%
+}%
+\def\ucircumflex#1#2#3{%
+ \@UC{#1}{#2}{#3}%
+ \gdef#1{\ifTR\char"FB{}\else\string#1\fi}%
+}%
+\def\udieresis#1#2#3{%
+ \@UC{#1}{#2}{#3}%
+ \gdef#1{\ifTR\char"FC{}\else\string#1\fi}%
+}%
+\def\yacute#1#2#3{%
+ \@UC{#1}{#2}{#3}%
+ \gdef#1{\ifTR\char"FD{}\else\string#1\fi}%
+}%
+\def\thorn#1#2#3{%
+ \@UC{#1}{#2}{#3}%
+ \gdef#1{\ifTR\char"FE{}\else\string#1\fi}%
+}%
+\def\ydieresis#1#2#3{%
+ \@UC{#1}{#2}{#3}%
+ \gdef#1{\ifTR\char"B8{}\else\string#1\fi}%
+}%
+\def\Ydieresis#1#2#3{%
+ \@UC{#1}{#2}{#3}%
+ \gdef#1{\ifTR\char"98{}\else\string#1\fi}%
+}%
+%
+\def\alpha#1#2#3{%
+ \@UC{#1}{#2}{#3}%
+ \@MathSymbol{#1}{alpha}%
+}%
+\def\approx#1#2#3{%
+ \@UC{#1}{#2}{#3}%
+ \@MathSymbol{#1}{approx}%
+}%
+\def\beta#1#2#3{%
+ \@UC{#1}{#2}{#3}%
+ \@MathSymbol{#1}{beta}%
+}%
+\def\bullet#1#2#3{%
+ \@UC{#1}{#2}{#3}%
+ \@MathSymbol{#1}{bullet}%
+}%
+\def\cap#1#2#3{%
+ \@UC{#1}{#2}{#3}%
+ \@MathSymbol{#1}{cap}%
+}%
+\def\cent#1#2#3{%
+ \@UC{#1}{#2}{#3}%
+ % no definition in DC
+}%
+\def\guillemeotright#1#2#3{%
+ \@UC{#1}{#2}{#3}%
+ % a small space is inserted before the french guillemot
+ % and the pre-existing space is removed
+ \gdef#1{\ifTR\unskip\@InMath{,}\char'024{}\else\string#1\fi}%
+}%
+\def\copyright#1#2#3{%
+ \@UC{#1}{#2}{#3}%
+ \gdef#1{\ifTR\copyright{}\else\string#1\fi}%
+}%
+\def\currency#1#2#3{% character hex A4 in Iso latin set 1
+ \@UC{#1}{#2}{#3}%
+ % no definition in DC
+}%
+\def\degree#1#2#3{%
+ \@UC{#1}{#2}{#3}%
+}%
+\def\dag#1#2#3{%
+ \@UC{#1}{#2}{#3}%
+ \@MathSymbol{#1}{dag}%
+}%
+\def\ddag#1#2#3{%
+ \@UC{#1}{#2}{#3}%
+ \@MathSymbol{#1}{ddag}%
+}%
+\def\delta#1#2#3{%
+ \@UC{#1}{#2}{#3}%
+ \@MathSymbol{#1}{delta}%
+}%
+\def\div#1#2#3{%
+ \@UC{#1}{#2}{#3}%
+ \@MathSymbol{#1}{div}%
+}%
+\def\diamond#1#2#3{%
+ \@UC{#1}{#2}{#3}%
+ \@MathSymbol{#1}{Diamond}%
+}%
+\def\emptysetSign#1#2#3{%
+ \@UC{#1}{#2}{#3}%
+ \@MathSymbol{#1}{emptyset}%
+}%
+\def\section#1#2#3{%
+ \@UC{#1}{#2}{#3}%
+ \gdef#1{\ifTR{\S}\else\string#1\fi}%
+}%
+\def\epsilon#1#2#3{%
+ \@UC{#1}{#2}{#3}%
+ \@MathSymbol{#1}{varepsilon}%
+}%
+\def\equiv#1#2#3{%
+ \@UC{#1}{#2}{#3}%
+ \@MathSymbol{#1}{equiv}%
+}%
+\def\ellipsis#1#2#3{%
+ \@UC{#1}{#2}{#3}%
+ \gdef#1{\ifTR{...}\else\string#1\fi}%
+}%
+\def\exclamdown#1#2#3{%
+ \@UC{#1}{#2}{#3}%
+ \gdef#1{\ifTR\char"BD{}\else\string#1\fi}%
+}%
+\def\ordfeminine#1#2#3{%
+ \@UC{#1}{#2}{#3}%
+ \gdef#1{\ifTR\@Sup{\b{a}}\else\string#1\fi}%
+}%
+\def\geq#1#2#3{%
+ \@UC{#1}{#2}{#3}%
+ \@MathSymbol{#1}{geq}%
+}%
+\def\Gamma#1#2#3{%
+ \@UC{#1}{#2}{#3}%
+ \@MathSymbol{#1}{Gamma}%
+}%
+\def\infty#1#2#3{%
+ \@UC{#1}{#2}{#3}%
+ \@MathSymbol{#1}{infty}%
+}%
+\def\leq#1#2#3{%
+ \@UC{#1}{#2}{#3}%
+ \@MathSymbol{#1}{leq}%
+}%
+\def\emdash#1#2#3{%
+ \@UC{#1}{#2}{#3}%
+ \gdef#1{\ifTR{---}\else\string#1\fi}%
+}%
+\def\ordmasculine#1#2#3{%
+ \@UC{#1}{#2}{#3}%
+ \gdef#1{\ifTR\@Sup{\b{o}}\else\string#1\fi}%
+}%
+\def\mu#1#2#3{%
+ \@UC{#1}{#2}{#3}%
+ \@MathSymbol{#1}{mu}%
+}%
+\def\neg#1#2#3{%
+ \@UC{#1}{#2}{#3}%
+ \@MathSymbol{#1}{neg}%
+}%
+\def\neq#1#2#3{%
+ \@UC{#1}{#2}{#3}%
+ \@MathSymbol{#1}{neq}%
+}%
+\def\unbreakablespace#1#2#3{%
+ \@UC{#1}{#2}{#3}%
+ \gdef#1{\ifTR~\else\string#1\fi}%
+}%
+\def\Omega#1#2#3{%
+ \@UC{#1}{#2}{#3}%
+ \@MathSymbol{#1}{Omega}%
+}%
+\def\OneHalf#1#2#3{%
+ \@UC{#1}{#2}{#3}%
+ \gdef#1{\ifTR{\@Fraction{1}{2}}\else\string#1\fi}%
+}%
+\def\OneQuarter#1#2#3{%
+ \@UC{#1}{#2}{#3}%
+ \gdef#1{\ifTR{\@Fraction{1}{4}}\else\string#1\fi}%
+}%
+\def\guilletmotleft#1#2#3{%
+ \@UC{#1}{#2}{#3}%
+ % a small space is added after the opening guillemot
+ % and the pre-existing space is removed
+ \gdef#1{\ifTR\char"13\unskip\@InMath{,}\else\string#1\fi}%
+}%
+\def\Pi#1#2#3{%
+ \@UC{#1}{#2}{#3}%
+ \@MathSymbol{#1}{Pi}%
+}%
+\def\pi#1#2#3{%
+ \@UC{#1}{#2}{#3}%
+ \@MathSymbol{#1}{pi}%
+}%
+\def\pm#1#2#3{%
+ \@UC{#1}{#2}{#3}%
+ \@MathSymbol{#1}{pm}%
+}%
+\def\ParagraphSign#1#2#3{%
+ \@UC{#1}{#2}{#3}%
+ \gdef#1{\ifTR{\P}\else\string#1\fi}%
+}%
+\def\partial#1#2#3{%
+ \@UC{#1}{#2}{#3}%
+ \@MathSymbol{#1}{partial}%
+}%
+\def\Phi#1#2#3{%
+ \@UC{#1}{#2}{#3}%
+ \@MathSymbol{#1}{Phi}%
+}%
+\def\pounds#1#2#3{%
+ \@UC{#1}{#2}{#3}%
+ \gdef#1{\ifTR\char"BF{}\else\string#1\fi}%
+}%
+\def\powerone#1#2#3{%
+ \@UC{#1}{#2}{#3}%
+ \gdef#1{\ifTR{\@Sup{1}}\else\string#1\fi}%
+}%
+\def\powerthree#1#2#3{%
+ \@UC{#1}{#2}{#3}%
+ \gdef#1{\ifTR{\@Sup{3}}\else\string#1\fi}%
+}%
+\def\powertwo#1#2#3{%
+ \@UC{#1}{#2}{#3}%
+ \gdef#1{\ifTR{\@Sup{2}}\else\string#1\fi}%
+}%
+\def\questiondown#1#2#3{%
+ \@UC{#1}{#2}{#3}%
+ \gdef#1{\ifTR\char"BE{}\else\string#1\fi}%
+}%
+\def\register#1#2#3{%
+ \@UC{#1}{#2}{#3}%
+ % no definition in DC
+}%
+\def\Sigma#1#2#3{%
+ \@UC{#1}{#2}{#3}%
+ \@MathSymbol{#1}{Sigma}%
+}%
+\def\sigma#1#2#3{%
+ \@UC{#1}{#2}{#3}%
+ \@MathSymbol{#1}{sigma}%
+}%
+\def\quoteright#1#2#3{%
+ \@UC{#1}{#2}{#3}%
+ \gdef#1{\ifTR{'}\else\string#1\fi}%
+}%
+\def\quoteleft#1#2#3{%
+ \@UC{#1}{#2}{#3}%
+ \gdef#1{\ifTR{`}\else\string#1\fi}%
+}%
+\def\splitbar#1#2#3{%
+ \@UC{#1}{#2}{#3}%
+ % no definition in DC
+}%
+\def\tau#1#2#3{%
+ \@UC{#1}{#2}{#3}%
+ \@MathSymbol{#1}{tau}%
+}%
+\def\ThetaSign#1#2#3{%
+ \@UC{#1}{#2}{#3}%
+ \@MathSymbol{#1}{Theta}%
+}%
+\def\threequarter#1#2#3{%
+ \@UC{#1}{#2}{#3}%
+ \gdef#1{\ifTR{\@Fraction{3}{4}}\else\string#1\fi}%
+}%
+\def\times#1#2#3{%
+ \@UC{#1}{#2}{#3}%
+ \@MathSymbol{#1}{times}%
+}%
+\def\trademark#1#2#3{%
+ \@UC{#1}{#2}{#3}%
+ \gdef#1{\ifTR\@Sup{TM}\else\string#1\fi}%
+}%
+\def\quotedblright#1#2#3{%
+ \@UC{#1}{#2}{#3}%
+ \gdef#1{\ifTR{''}\else\string#1\fi}%
+}%
+\def\quotedblleft#1#2#3{%
+ \@UC{#1}{#2}{#3}%
+ \gdef#1{\ifTR{``}\else\string#1\fi}%
+}%
+\def\yen#1#2#3{%
+ \@UC{#1}{#2}{#3}%
+ % no definition in DC
+}%
+\def\perthousand#1#2#3{%
+ \@UC{#1}{#2}{#3}%
+ % no definition in DC
+}%
+\def\florin#1#2#3{%
+ \@UC{#1}{#2}{#3}%
+ \gdef#1{\ifTR{\it f}\else\string#1\fi}%
+}%
+\catcode`\@=\atcatcode \let\atcatcode\relax
+%
+%</shapedc>
+% \end{macrocode}
+%
+% \subsection{Table for the code page 850 (file:
+% \Fich{code850.tex})\label{HYPHEN}}
+% This file contains code to set up the table to convert the
+% code page 850 to
+% the DC or Cm encoding scheme (depending on the value of global
+% variable \Comm{CurrentEncoding}). This file should be moved into
+% \TeX's
+% memory with an \Comm{input} command and all the characters above 127
+% should be active before the call to the \Comm{input} command.
+%
+%Some normal unaccented character should be made active, just for the case
+%where the \Comm{uppercase} command is used with lowercase accented character which don't
+%have uppercase accented equivalent (the normal unaccented character is used).
+%
+%Since the \Comm{uppercase} or \Comm{lowercase} command doesn't change the catcode,
+%the resulting character will have the catcode \Comm{active} (since all the characters
+%above 127 are active). Thus a macro should exist !
+% \begin{macrocode}
+%<*codepage850>
+\chardef\atcatcode=\catcode`\@
+\catcode`\@=11\relax
+ {%
+ \catcode`\Y=\active
+ \gdef Y{\string Y}%
+ }%
+% \end{macrocode}
+% All the characters are assigned to a default value (each character issue a message telling it
+% could not be drawn with \TeX{} commands) and a group is started (in effect
+% when the file \Fich{code850.tex} is read)
+% to limit the scope of macros created by the inputting
+% of files \Fich{shapecm} or \Fich{shapedc}. These macros
+% are used just for setting the tables and never useful
+% after that.
+% \begin{macrocode}
+\begingroup
+\input initcar %
+\ifcase\CurrentEncoding
+ \input shapecm %
+\or
+ \input shapedc %
+\fi
+\Ccedilla{^^80}{"80}{"87}%
+\udieresis{^^81}{"9A}{"81}%
+\eacute{^^82}{"90}{"82}%
+\acircumflex{^^83}{"B6}{"83}%
+\adieresis{^^84}{"8E}{"84}%
+\agrave{^^85}{"B7}{"85}%
+\aring{^^86}{"8F}{"86}%
+\ccedilla{^^87}{"80}{"87}%
+\ecircumflex{^^88}{"D2}{"88}%
+\edieresis{^^89}{"D3}{"89}%
+\egrave{^^8a}{"D4}{"8A}%
+\idieresis{^^8b}{"D8}{"8B}%
+\icircumflex{^^8c}{"D7}{"8C}%
+\igrave{^^8d}{"DE}{"8D}%
+\Adieresis{^^8e}{"8E}{"84}%
+\Aring{^^8f}{"8F}{"86}%
+\Eacute{^^90}{"90}{"82}%
+\ae{^^91}{"92}{"91}%
+\AE{^^92}{"92}{"91}%
+\ocircumflex{^^93}{"E2}{"93}%
+\odieresis{^^94}{"99}{"94}%
+\ograve{^^95}{"E3}{"95}%
+\ucircumflex{^^96}{"EA}{"96}%
+\ugrave{^^97}{"EB}{"97}%
+\ydieresis{^^98}{"59}{"98}%
+\Odieresis{^^99}{"99}{"94}%
+\Udieresis{^^9a}{"9A}{"81}%
+\oslash{^^9b}{"9D}{"9B}%
+\pounds{^^9c}{"9C}{"9C}%
+\Oslash{^^9d}{"9D}{"9B}%
+\times{^^9e}{"9E}{"9E}%
+\florin{^^9f}{"9F}{"9F}%
+\aacute{^^a0}{"B5}{"A0}%
+\iacute{^^a1}{"D6}{"A1}%
+\oacute{^^a2}{"E0}{"A2}%
+\uacute{^^a3}{"E9}{"A3}%
+\ntilde{^^a4}{"A5}{"A4}%
+\Ntilde{^^a5}{"A5}{"A4}%
+\ordfeminine{^^a6}{"A6}{"A6}%
+\ordmasculine{^^a7}{"A7}{"A7}%
+\questiondown{^^a8}{"A8}{"A8}%
+\register{^^a9}{"A9}{"A9}%
+\neg{^^aa}{"AA}{"AA}%
+\OneHalf{^^ab}{"AB}{"AB}%
+\OneQuarter{^^ac}{"AC}{"AC}%
+\exclamdown{^^ad}{"AD}{"AD}%
+\guilletmotleft{^^ae}{"AE}{"AE}%
+\guillemeotright{^^af}{"AF}{"AF}%
+\Aacute{^^b5}{"B5}{"A0}%
+\Acircumflex{^^b6}{"B6}{"83}%
+\Agrave{^^b7}{"B7}{"85}%
+\copyright{^^b8}{"B8}{"B8}%
+\cent{^^bd}{"BD}{"BD}%
+\yen{^^be}{"BE}{"BE}%
+\atilde{^^c6}{"C7}{"C6}%
+\Atilde{^^c7}{"C7}{"C6}%
+\currency{^^cf}{"CF}{"CF}%
+\dBar{^^d0}{"D1}{"D0}%
+\DBar{^^d1}{"D1}{"D0}%
+\Ecircumflex{^^d2}{"D2}{"88}%
+\Edieresis{^^d3}{"D3}{"89}%
+\Egrave{^^d4}{"D4}{"8A}%
+\powerone{^^d5}{"D5}{"D5}%
+\Iacute{^^d6}{"D6}{"A1}%
+\Icircumflex{^^d7}{"D7}{"8C}%
+\Idieresis{^^d8}{"D8}{"8B}%
+\splitbar{^^dd}{"DD}{"DD}%
+\Igrave{^^de}{"DE}{"8D}%
+\Oacute{^^e0}{"E0}{"A2}%
+\beta{^^e1}{"E1}{"E1}%
+\Ocircumflex{^^e2}{"E2}{"93}%
+\Ograve{^^e3}{"E3}{"95}%
+\otilde{^^e4}{"E5}{"E4}%
+\Otilde{^^e5}{"E5}{"E4}%
+\mu{^^e6}{"E6}{"E6}%
+\thorn{^^e7}{"E8}{"E7}%
+\Thorn{^^e8}{"E8}{"E7}%
+\Uacute{^^e9}{"E9}{"A3}%
+\Ucircumflex{^^ea}{"EA}{"96}%
+\Ugrave{^^eb}{"EB}{"97}%
+\yacute{^^ec}{"ED}{"EC}%
+\Yacute{^^ed}{"ED}{"EC}%
+\pm{^^f1}{"F1}{"F1}%
+\threequarter{^^f3}{"F3}{"F3}%
+\ParagraphSign{^^f4}{"F4}{"F4}%
+\section{^^f5}{"F5}{"F5}%
+\div{^^f6}{"F6}{"F6}%
+\cedilla{^^f7}{"F7}{"F7}%
+\degree{^^f8}{"F8}{"F8}%
+\dieresis{^^f9}{"F9}{"F9}%
+\bullet{^^fa}{"FA}{"FA}%
+\powerone{^^fb}{"FB}{"FB}%
+\powerthree{^^fc}{"FC}{"FC}%
+\powertwo{^^fd}{"FD}{"FD}%
+\endgroup
+% \end{macrocode}
+%
+% \DescribeMacro{\@MakeHyphenation850}
+%\Comm{@MakeHyphenationEightFiveZero} prepare a letter given as parameter
+%to do a letter for hyphenation exception.
+%
+% The algorithm to build the exception hyphenation pattern put all the characters
+% to lower case before setting up the hyphenation tables. When a string should be broken
+% it is transformed in lowercase and then compared with the hyphenation pattern.
+%
+% Since these two transformations are performed on two different characters (the first, before
+% a character from a code page was translated, the second after), a match could never occur.
+%
+% The aim of this macro is to adapt the value of the \Comm{lccode} of a character to be used
+% in the \Comm{hyphenation} to permit a match when this character will be translated in something
+% else.
+%
+%\textbf{Examples:}\\
+% ``e grave'' (character hexa 8a) in code page 850 will be translated in \textsc{Dc}
+% encoding scheme to character hexa (E8). In code page 850,
+% the character hexa
+% E8 will have a lowercase character hexa E7 (in code page 850). When the translated
+% character ``e grave'' will be put in lowercase, his value will be hexa E7.
+% From that we can deduce that to
+% use \Comm{hyphenation} with ``e grave'' (character hexa 8a in code page 850), ``e grave'' should
+% have \Comm{lccode="E7}.
+%
+% ``n tilde'' (character hexa A4 in code page 850) will be translated
+% to character hexa F1 in \textsc{Dc} encoding. Character hexa F1 in code page
+% 850 is ``plus-minus'' sign which has lowercase hexa F1 thus
+% the \Comm{lccode} for ``n tilde'' for use with the \Comm{hyphenation} command
+% should be hexa F1.
+%
+% This macro is meaningless with the \textsc{Cm} encoding !
+% \begin{macrocode}
+\ifnum\CurrentEncoding=\DC\relax
+\def\@MakeHyphenationEightFiveZero#1{%
+ \catcode`#1=12% make character given in parameter other which is
+ % a legal catcode for \hyphenation
+ \ifnum`#1="80
+ %C cedilla translated in DC encoding to "D7 (which is A tilde)
+ %with a tilde ("d6) as lowercase
+ \lccode`#1="D6%
+ \else\ifnum`#1="81
+ %u dieresis --> "FC
+ \lccode`#1="FC%
+ \else\ifnum`#1="82
+ %e acute --> "E9 (U acute) --> u acute
+ \lccode`#1="A3%
+ \else\ifnum`#1="83
+ %a circumflex --> "E2 O circumflex --> o circumflex
+ \lccode`#1="93%
+ \else\ifnum`#1="84
+ %a dieresis --> "E4 o tilde
+ \lccode`#1="E4%
+ \@ConflictHyphenCarMsg{a dieresis ("84)}{a ring ("86)}
+ \else\ifnum`#1="85
+ %a grave --> "E O acute --> "A2 (o acute in code page 850)
+ \lccode`#1="A2%
+ \else\ifnum`#1="86
+ %a ring --> "E5 O tilde --> "E4
+ \lccode`#1="E4%
+ \@ConflictHyphenCarMsg{a ring ("86)}{a dieresis ("84)}
+ \else\ifnum`#1="87
+ %c cedilla --> "E7 --> "E7
+ \lccode`#1="E7%
+ \@ConflictHyphenCarMsg{c cedilla ("87)}{e grave ("8A)}
+ \else\ifnum`#1="88
+ %e circumflex --> "EA (U circumflex ---> "96
+ \lccode`#1="96%
+ \else\ifnum`#1="89
+ %e dieresis --> "EB U grave --> "97
+ \lccode`#1="97%
+ \else\ifnum`#1="8A
+ %e grave --> "E8 Thorn --> "E7
+ \lccode`#1="E7%
+ \@ConflictHyphenCarMsg{e grave ("8A)}{c cedilla ("87)}
+ \else\ifnum`#1="8B
+ %i dieresis --> "EF (acute accent)
+ \lccode`#1="EF%
+ \else\ifnum`#1="8C
+ %i circumflex --> "EE (BAR Accent)
+ \lccode`#1="EE%
+ \else\ifnum`#1="8D
+ %i grave --> "EC (y acute)
+ \lccode`#1="EC%
+ \@ConflictHyphenCarMsg{i grave ("8D)}{i acute ("A1)}
+ \else\ifnum`#1="8E
+ %A dieresis --> "C4 (semi graphical character)
+ \lccode`#1="C4%
+ \else\ifnum`#1="8F
+ %A ring --> "C5 (semi graphical character)
+ \lccode`#1="C5%
+ \else\ifnum`#1="90
+ %E acute --> "C9 (semi graphical character)
+ \lccode`#1="C9%
+ \else\ifnum`#1="91
+ %ae ligature --> "E6 (mu sign)
+ \lccode`#1="E6%
+ \else\ifnum`#1="92
+ %AE ligature --> "C6 (a tilde)
+ \lccode`#1="C6%
+ \else\ifnum`#1="93
+ %o circumflex --> "F4 (Paragraph Sign)
+ \lccode`#1="F4%
+ \else\ifnum`#1="94
+ %o dieresis --> "F6 (divide sign)
+ \lccode`#1="F6%
+ \else\ifnum`#1="95
+ %O grave --> "F2 (equal sign)
+ \lccode`#1="F2%
+ \else\ifnum`#1="96
+ %u circumflex --> "FB (Power one sign)
+ \lccode`#1="FB%
+ \else\ifnum`#1="97
+ %u grave --> "F9 (dieresis accent)
+ \lccode`#1="F9%
+ \else\ifnum`#1="98
+ %y dieresis --> "B8 (Copyright sign)
+ \lccode`#1="B8%
+ \else\ifnum`#1="99
+ %O dieresis --> "D6 (I acute) --> i acute
+ \lccode`#1="A1%
+ \else\ifnum`#1="9A
+ %U dieresis --> "DC (semi graphical sign)
+ \lccode`#1="DC%
+ \else\ifnum`#1="9B
+ %o slash --> "F8 (Degree sign)
+ \lccode`#1="F8%
+ \else\ifnum`#1="9D
+ %O slash --> "D8 (I dieresis) --> i dieresis
+ \lccode`#1="8B%
+ \else\ifnum`#1="A0
+ %a acute --> "E1 (Beta sign)
+ \lccode`#1="E1%
+ \else\ifnum`#1="A1
+ %i acute --> "ED (Y acute) --> y acute
+ \lccode`#1="EC%
+ \@ConflictHyphenCarMsg{i acute ("A1)}{i grave ("8D)}
+ \else\ifnum`#1="A2
+ %o acute --> "F3 (three quarter sign)
+ \lccode`#1="F3%
+ \else\ifnum`#1="A3
+ %u acute --> "FA (Bullet sign)
+ \lccode`#1="FA%
+ \else\ifnum`#1="A4
+ %n tilde --> "F1 (Plus minus sign)
+ \lccode`#1="F1%
+ \else\ifnum`#1="A5
+ %N tilde --> "D1 (D bar) --> d bar
+ \lccode`#1="D0%
+ \@ConflictHyphenCarMsg{N tilde ("A5)}{D bar ("D1)}
+ \else\ifnum`#1="B5
+ %A acute --> "C1 (semi graphical sign)
+ \lccode`#1="C1%
+ \else\ifnum`#1="B6
+ %A circumflex --> "C2 (semi graphical sign)
+ \lccode`#1="C2%
+ \else\ifnum`#1="B7
+ %A grave --> "C0 (Semi graphical sign)
+ \lccode`#1="C0%
+ \else\ifnum`#1="D0
+ %d bar --> "F0 (minus sign)
+ \lccode`#1="F0%
+ \else\ifnum`#1="D1
+ %D bar --> "D0 (d bar)
+ \lccode`#1="D0%
+ \@ConflictHyphenCarMsg{D bar ("D1)}{N tilde ("A5}
+ \else\ifnum`#1="D2
+ %E circumflex --> "CA (semi-graphical sign)
+ \lccode`#1="CA%
+ \else\ifnum`#1="D3
+ %E dieresis --> "CB (semi graphical sign)
+ \lccode`#1="CB%
+ \else\ifnum`#1="D4
+ %E grave --> "C8 (semi graphical sign)
+ \lccode`#1="C8%
+ \else\ifnum`#1="D6
+ %I acute --> "CD (semi graphical sign)
+ \lccode`#1="CD%
+ \else\ifnum`#1="D7
+ %I circumflex --> "CE (semi-graphical sign)
+ \lccode`#1="CE%
+ \else\ifnum`#1="D8
+ %I dieresis --> "CF (currency sign)
+ \lccode`#1="CF%
+ \else\ifnum`#1="E0
+ %O acute --> "D3 (E dieresis) --> e dieresis
+ \lccode`#1="89%
+ \else\ifnum`#1="E2
+ %O circumflex --> "D4 (E grave) --> e grave
+ \lccode`#1="8A%
+ \else\ifnum`#1="E3
+ %O grave --> "D2 (E circumflex) --> e circumflex
+ \lccode`#1="88%
+ \else\ifnum`#1="E4
+ %o tilde --> "F5 (End of flow sign)
+ \lccode`#1="F5%
+ \else\ifnum`#1="E5
+ %O tilde --> "D5 (Power One sign)
+ \lccode`#1="D5%
+ \else\ifnum`#1="E7
+ %thorn --> "FE (semi graphical sign)
+ \lccode`#1="FE%
+ \else\ifnum`#1="E8
+ %P like letter --> "DE (I acute) --> i acute
+ \lccode`#1="8D%
+ \else\ifnum`#1="E9
+ %U acute --> "DA (semi graphical sign)
+ \lccode`#1="DA%
+ \else\ifnum`#1="EA
+ %U circumflex --> "DB (semi graphical sign)
+ \lccode`#1="DB%
+ \else\ifnum`#1="EB
+ %U grave --> "D9 (semi graphical sign)
+ \lccode`#1="D9%
+ \else\ifnum`#1="EC
+ %y acute --> "FD (Power two sign)
+ \lccode`#1="FD%
+ \else\ifnum`#1="ED
+ %Y acute --> "DD (Slit vertical bar sign)
+ \lccode`#1="DD%
+ \else
+ %we don't have a letter (a character to form word)
+ \@BadHyphenCarMsg{#1}
+ \catcode`#1=15% make this character invalid
+ \fi\fi\fi\fi\fi\fi\fi\fi\fi\fi
+ \fi\fi\fi\fi\fi\fi\fi\fi\fi\fi
+ \fi\fi\fi\fi\fi\fi\fi\fi\fi\fi
+ \fi\fi\fi\fi\fi\fi\fi\fi\fi\fi
+ \fi\fi\fi\fi\fi\fi\fi\fi\fi\fi
+ \fi\fi\fi\fi\fi\fi\fi\fi
+% We must have same count of \fi than \ifnum (58)
+}%\@MakeHyphenationEightFiveZero
+\fi % \ifx\CurrentEncoding...
+\catcode`\@=\atcatcode \let\atcatcode\relax
+%</codepage850>
+% \end{macrocode}
+% \subsection{Table for the code page 437 (file: \Fich{code437.tex})}
+% \DescribeMacro{\@FourThreeSeven}
+% \begin{macrocode}
+%<*codepage437>
+\chardef\atcatcode=\catcode`\@
+\catcode`\@=11\relax
+\begingroup
+ \catcode`\A=\active
+ \catcode`\E=\active
+ \catcode`\I=\active
+ \catcode`\O=\active
+ \catcode`\U=\active
+ \catcode`\Y=\active
+ \gdef A{\string A}%
+ \gdef E{\string E}%
+ \gdef I{\string I}%
+ \gdef O{\string O}%
+ \gdef U{\string U}%
+ \gdef Y{\string Y}%
+\endgroup
+\input initcar %
+\begingroup
+\ifcase\CurrentEncoding
+ \input shapecm %
+\or
+ \input shapedc %
+\fi
+\Ccedilla{^^80}{"80}{"87}%
+\Adieresis{^^8e}{"8E}{"84}%
+\Aring{^^8f}{"8F}{"86}%
+\Eacute{^^90}{"90}{"82}%
+\AE{^^92}{"92}{"91}%
+\Odieresis{^^99}{"99}{"94}%
+\Udieresis{^^9a}{"9A}{"81}%
+\Ntilde{^^a5}{"A5}{"A4}%
+\udieresis{^^81}{"9A}{"81}%
+\eacute{^^82}{"90}{"82}%
+\acircumflex{^^83}{"41}{"83}%
+\adieresis{^^84}{"8E}{"84}%
+\agrave{^^85}{"41}{"85}%
+\aring{^^86}{"8F}{"86}%
+\ccedilla{^^87}{"80}{"87}%
+\ecircumflex{^^88}{"45}{"88}%
+\edieresis{^^89}{"45}{"89}%
+\egrave{^^8a}{"45}{"8A}%
+\idieresis{^^8b}{"49}{"8B}%
+\icircumflex{^^8c}{"49}{"8C}%
+\igrave{^^8d}{"49}{"8D}%
+\ae{^^91}{"92}{"91}%
+\ocircumflex{^^93}{"4F}{"93}%
+\odieresis{^^94}{"99}{"94}%
+\ograve{^^95}{"4F}{"95}%
+\ucircumflex{^^96}{"55}{"96}%
+\ugrave{^^97}{"55}{"97}%
+\ydieresis{^^98}{"59}{"98}%
+\pounds{^^9c}{"9C}{"9C}%
+\florin{^^9f}{"9F}{"9F}%
+\aacute{^^a0}{"41}{"A0}%
+\iacute{^^a1}{"49}{"A1}%
+\oacute{^^a2}{"4F}{"A2}%
+\uacute{^^a3}{"55}{"A3}%
+\ntilde{^^a4}{"A5}{"A4}%
+\questiondown{^^a8}{"A8}{"A8}%
+\exclamdown{^^ad}{"AD}{"AD}%
+\guilletmotleft{^^ae}{"AE}{"AE}%
+\guillemeotright{^^af}{"AF}{"AF}%
+\alpha{^^e0}{"E0}{"E0}%
+\beta{^^e1}{"E1}{"E1}%
+\Gamma{^^e2}{"E2}{"E2}%
+\pi{^^e3}{"E3}{"E3}%
+\Sigma{^^e4}{"E4}{"E4}%
+\sigma{^^e5}{"E5}{"E5}%
+\mu{^^e6}{"E6}{"E6}%
+\tau{^^e7}{"E7}{"E7}%
+\Phi{^^e8}{"E8}{"E8}%
+\ThetaSign{^^e9}{"E9}{"E9}%
+\Omega{^^ea}{"EA}{"EA}%
+\delta{^^eb}{"EB}{"EB}%
+\infty{^^ec}{"EC}{"EC}%
+\emptysetSign{^^ed}{"ED}{"ED}%
+\epsilon{^^ee}{"EE}{"EE}%
+\cap{^^ef}{"EF}{"EF}%
+\equiv{^^f0}{"F0}{"F0}%
+\pm{^^f1}{"F1}{"F1}%
+\geq{^^f2}{"F2}{"F2}%
+\leq{^^f3}{"F3}{"F3}%
+\div{^^f6}{"F6}{"F6}%
+\approx{^^f7}{"F7}{"F7}%
+\bullet{^^f9}{"F9}{"F9}%
+\endgroup
+% \end{macrocode}
+% \DescribeMacro{\@MakeHyphenation437}
+% \begin{macrocode}
+\ifnum\CurrentEncoding=\DC\relax
+\def\@MakeHyphenationFourThreeSeven#1{%
+ \catcode`#1=12%
+ \ifnum`#1="80
+ % C cedilla translated in DC encoding to "D7 (which is a semi graphical
+ % sign in code page 437)
+ \lccode`#1="D7%
+ \else\ifnum`#1="81
+ %u dieresis --> "FC
+ \lccode`#1="FC%
+ \else\ifnum`#1="82
+ %e acute --> "E9 (Theta sign)
+ \lccode`#1="E9%
+ \else\ifnum`#1="83
+ %a circumflex --> "E2 (Gamma sign)
+ \lccode`#1="E2%
+ \else\ifnum`#1="84
+ %a dieresis --> "E4 o tilde
+ \lccode`#1="E4%
+ \else\ifnum`#1="85
+ %a grave --> "E0 (alpha sign)
+ \lccode`#1="E0%
+ \else\ifnum`#1="86
+ %a ring --> "E5 (sigma sign)
+ \lccode`#1="E5%
+ \else\ifnum`#1="87
+ %c cedilla --> "E7 (tau sign)
+ \lccode`#1="E7%
+ \else\ifnum`#1="88
+ %e circumflex --> "EA (Omega sign)
+ \lccode`#1="EA%
+ \else\ifnum`#1="89
+ %e dieresis --> "EB (delta sign)
+ \lccode`#1="EB%
+ \else\ifnum`#1="8A
+ %e grave --> "E8 (Phi sign)
+ \lccode`#1="E8%
+ \else\ifnum`#1="8B
+ %i dieresis --> "EF (set intersection sign)
+ \lccode`#1="EF%
+ \else\ifnum`#1="8C
+ %i circumflex --> "EE (epsilon sign)
+ \lccode`#1="EE%
+ \else\ifnum`#1="8D
+ %i grave --> "EC (infinity sign)
+ \lccode`#1="EC%
+ \else\ifnum`#1="8E
+ %A dieresis --> "C4 (semi graphical character)
+ \lccode`#1="C4%
+ \else\ifnum`#1="8F
+ %A ring --> "C5 (semi graphical character)
+ \lccode`#1="C5%
+ \else\ifnum`#1="90
+ %E acute --> "C9 (semi graphical character)
+ \lccode`#1="C9%
+ \else\ifnum`#1="91
+ %ae ligature --> "E6 (mu sign)
+ \lccode`#1="E6%
+ \else\ifnum`#1="92
+ %AE ligature --> "C6 (semi graphical character)
+ \lccode`#1="C6%
+ \else\ifnum`#1="93
+ %o circumflex --> "F4 (upper part of integral sign)
+ \lccode`#1="F4%
+ \else\ifnum`#1="94
+ %o dieresis --> "F6 (divide sign)
+ \lccode`#1="F6%
+ \else\ifnum`#1="95
+ %O grave --> "F2 (greater or equal sign)
+ \lccode`#1="F2%
+ \else\ifnum`#1="96
+ %u circumflex --> "FB (square sign)
+ \lccode`#1="FB%
+ \else\ifnum`#1="97
+ %u grave --> "F9 (big bullet sign)
+ \lccode`#1="F9%
+ \else\ifnum`#1="98
+ %y dieresis --> "B8 (semi graphical character)
+ \lccode`#1="B8%
+ \else\ifnum`#1="99
+ %O dieresis --> "D6 (semi graphical character)
+ \lccode`#1="D6%
+ \else\ifnum`#1="9A
+ %U dieresis --> "DC (semi graphical sign)
+ \lccode`#1="DC%
+ \else\ifnum`#1="A0
+ %a acute --> "E1 (Beta sign)
+ \lccode`#1="E1%
+ \else\ifnum`#1="A1
+ %i acute --> "ED (empty set sign)
+ \lccode`#1="ED%
+ \else\ifnum`#1="A2
+ %o acute --> "F3 (less or equal sign)
+ \lccode`#1="F3%
+ \else\ifnum`#1="A3
+ %u acute --> "FA (Bullet sign)
+ \lccode`#1="FA%
+ \else\ifnum`#1="A4
+ %n tilde --> "F1 (Plus minus sign)
+ \lccode`#1="F1%
+ \else\ifnum`#1="A5
+ %N tilde --> "D1 (semi graphical character)
+ \lccode`#1="D1%
+ \else
+ %we don't have a letter (a character to form word)
+ \@BadHyphenCarMsg{#1}
+ \catcode`#1=15% make this character invalid
+ \fi\fi\fi\fi\fi\fi\fi\fi\fi\fi
+ \fi\fi\fi\fi\fi\fi\fi\fi\fi\fi
+ \fi\fi\fi\fi\fi\fi\fi\fi\fi\fi
+ \fi\fi\fi
+% We must have same count of \fi than \ifnum (33)
+}%
+\fi %\ifx\CurrentEncoding...
+\catcode`\@=\atcatcode \let\atcatcode\relax
+%</codepage437>
+% \end{macrocode}
+% \subsection{Table for the code page of {\normalfont\textsc{Mc Intosh}} (file: \Fich{codemac.tex})}
+% \DescribeMacro{\@CodeMac}
+% \begin{macrocode}
+%<*codepagemac>
+\chardef\atcatcode=\catcode`\@
+\catcode`\@=11\relax
+ {%
+ \catcode`\Y=\active
+ \gdef Y{\string Y}%
+ }%
+\begingroup
+\input initcar %
+\ifcase\CurrentEncoding
+ \input shapecm %
+\or
+ \input shapedc %
+\fi
+\Adieresis{^^80}{"80}{"8A}%
+\Aring{^^81}{"81}{"8C}%
+\Ccedilla{^^82}{"82}{"8D}%
+\Eacute{^^83}{"83}{"8E}%
+\Ntilde{^^84}{"84}{"96}%
+\Odieresis{^^85}{"85}{"9A}%
+\Udieresis{^^86}{"86}{"9F}%
+\aacute{^^87}{"E7}{"87}%
+\agrave{^^88}{"CB}{"88}%
+\acircumflex{^^89}{"E5}{"89}%
+\adieresis{^^8a}{"80}{"8A}%
+\atilde{^^8b}{"CC}{"8B}%
+\aring{^^8c}{"81}{"8C}%
+\ccedilla{^^8d}{"82}{"8D}%
+\eacute{^^8e}{"83}{"8E}%
+\egrave{^^8f}{"E9}{"8F}%
+\ecircumflex{^^90}{"E6}{"90}%
+\edieresis{^^91}{"E8}{"91}%
+\iacute{^^92}{"EA}{"92}%
+\igrave{^^93}{"ED}{"93}%
+\icircumflex{^^94}{"EB}{"94}%
+\idieresis{^^95}{"EC}{"95}%
+\ntilde{^^96}{"84}{"96}%
+\oacute{^^97}{"EE}{"97}%
+\ograve{^^98}{"F1}{"98}%
+\ocircumflex{^^99}{"EF}{"99}%
+\odieresis{^^9a}{"85}{"9A}%
+\otilde{^^9b}{"CD}{"9B}%
+\uacute{^^9c}{"F2}{"9C}%
+\ugrave{^^9d}{"F4}{"9D}%
+\ucircumflex{^^9e}{"F3}{"9E}%
+\udieresis{^^9f}{"86}{"9F}%
+\dag{^^a0}{"A0}{"A0}%
+\degree{^^a1}{"A1}{"A1}%
+\cent{^^a2}{"A2}{"A2}%
+\pounds{^^a3}{"A3}{"A3}%
+\section{^^a4}{"A4}{"A4}%
+\bullet{^^a5}{"A5}{"A5}%
+\ParagraphSign{^^a6}{"A6}{"A6}%
+\beta{^^a7}{"A7}{"A7}%
+\register{^^a8}{"A8}{"A8}%
+\copyright{^^a9}{"A9}{"A9}%
+\trademark{^^aa}{"AA}{"AA}%
+\acute{^^ab}{"AB}{"AB}%
+\dieresis{^^ac}{"AC}{"AC}%
+\neq{^^ad}{"AD}{"AD}%
+\AE{^^ae}{"AE}{"BE}%
+\Oslash{^^af}{"AF}{"BF}%
+\pm{^^b1}{"B1}{"B1}%
+\leq{^^b2}{"B2}{"B2}%
+\geq{^^b3}{"B3}{"B3}%
+\yen{^^b4}{"B4}{"B4}%
+\mu{^^b5}{"B5}{"B5}%
+\delta{^^b6}{"B6}{"B6}%
+\Sigma{^^b7}{"B7}{"B7}%
+\Pi{^^b8}{"B8}{"B8}%
+\pi{^^b9}{"B9}{"B9}%
+\florin{^^ba}{"BA}{"BA}%
+\ordfeminine{^^bb}{"BB}{"BB}%
+\ordmasculine{^^bc}{"BC}{"BC}%
+\Omega{^^bd}{"BD}{"BD}%
+\ae{^^be}{"AE}{"BE}%
+\oslash{^^bf}{"AF}{"BF}%
+\questiondown{^^c0}{"C0}{"C0}%
+\exclamdown{^^c1}{"C1}{"C1}%
+\neg{^^c2}{"C2}{"C2}%
+\approx{^^c5}{"C5}{"C5}%
+\partial{^^c6}{"C6}{"C6}%
+\guilletmotleft{^^c7}{"C7}{"C7}%
+\guillemeotright{^^c8}{"C8}{"C8}%
+\ellipsis{^^c9}{"C9}{"C9}%
+\unbreakablespace{^^ca}{"CA}{"CA}%
+\Agrave{^^cb}{"CB}{"88}%
+\Atilde{^^cc}{"CC}{"8B}%
+\Otilde{^^cd}{"CD}{"9B}%
+\OE{^^ce}{"CE}{"CF}%
+\oe{^^cf}{"CE}{"CF}%
+\emdash{^^d1}{"D1}{"D1}%
+\quotedblleft{^^d2}{"D2}{"D2}%
+\quotedblright{^^d3}{"D3}{"D3}%
+\quoteleft{^^d4}{"D4}{"D4}%
+\quoteright{^^d5}{"D5}{"D5}%
+\div{^^d6}{"D6}{"D6}%
+\diamond{^^d7}{"D7}{"D7}%
+\ydieresis{^^d8}{"D9}{"D8}%
+\Ydieresis{^^d9}{"D9}{"D8}%
+\currency{^^db}{"DB}{"DB}%
+\fiLigature{^^de}{"DE}{"DE}%
+\flLigature{^^df}{"DF}{"DF}%
+\ddag{^^e0}{"E0}{"E0}%
+\cedilla{^^e2}{"E2}{"E2}%
+\perthousand{^^e4}{"E4}{"E4}%
+\Acircumflex{^^e5}{"E5}{"89}%
+\Ecircumflex{^^e6}{"E6}{"90}%
+\Aacute{^^e7}{"E7}{"87}%
+\Edieresis{^^e8}{"E8}{"91}%
+\Egrave{^^e9}{"E9}{"8F}%
+\Iacute{^^ea}{"EA}{"92}%
+\Icircumflex{^^eb}{"EB}{"94}%
+\Idieresis{^^ec}{"EC}{"95}%
+\Igrave{^^ed}{"ED}{"93}%
+\Oacute{^^ee}{"EE}{"97}%
+\Ocircumflex{^^ef}{"EF}{"99}%
+\Ograve{^^f1}{"F1}{"98}%
+\Uacute{^^f2}{"F2}{"9C}%
+\Ucircumflex{^^f3}{"F3}{"9E}%
+\Ugrave{^^f4}{"F4}{"9D}%
+\powerone{^^f5}{"F5}{"F5}%
+\endgroup
+% \end{macrocode}
+%
+% \DescribeMacro{\@MakeHyphenationMac}
+% \begin{macrocode}
+\ifnum\CurrentEncoding=\DC\relax
+\def\@MakeHyphenationMac#1{%
+ \catcode`#1=12%Legal value for \hyphenation
+ \ifnum`#1="80
+ % A dieresis --> C4 (graphical symbol)
+ \lccode`#1="C4%
+ \else\ifnum`#1="81
+ %A ring --> "C5 (approx sign)
+ \lccode`#1="C5%
+ \else\ifnum`#1="82
+ %C cedilla --> "C7 (french opening guillemet)
+ \lccode`#1="C7%
+ \else\ifnum`#1="83
+ %E acute --> "C9 (three dot sign)
+ \lccode`#1="C9%
+ \else\ifnum`#1="84
+ %N tilde --> "D1 (long dash)
+ \lccode`#1="D1%
+ \else\ifnum`#1="85
+ %O dieresis --> "D6 (divide sign)
+ \lccode`#1="D6%
+ \else\ifnum`#1="86
+ %U dieresis --> "DC (graphical symbol)
+ \lccode`#1="DC%
+ \else\ifnum`#1="87
+ %a acute --> "E1 (graphical symbol)
+ \lccode`#1="E1%
+ \else\ifnum`#1="88
+ %a grave --> "E0 (double dag sign)
+ \lccode`#1="E0%
+ \else\ifnum`#1="89
+ %a circumflex --> "E2 (cedilla accent)
+ \lccode`#1="E2%
+ \else\ifnum`#1="8A
+ %a dieresis --> "E4 (graphical symbol)
+ \lccode`#1="E4%
+ \else\ifnum`#1="8B
+ %a tilde --> "E3 (graphical symbol)
+ \lccode`#1="E3%
+ \else\ifnum`#1="8C
+ %a ring --> "E5 (A circumflex) --> a circumflex
+ \lccode`#1="89%
+ \else\ifnum`#1="8D
+ %c cedilla --> "E7 (A acute) --> a acute
+ \lccode`#1="87%
+ \else\ifnum`#1="8E
+ %e acute --> "E9 (E grave) --> e grave
+ \lccode`#1="8F%
+ \else\ifnum`#1="8F
+ %e grave --> "E8 (E dieresis) --> e dieresis
+ \lccode`#1="91%
+ \else\ifnum`#1="90
+ %e circumflex --> "EA (I acute) --> i acute
+ \lccode`#1="92%
+ \else\ifnum`#1="91
+ %e dieresis --> "EB (I circumflex) --> i circumflex
+ \lccode`#1="94%
+ \else\ifnum`#1="92
+ %i acute --> "ED (I grave) --> i grave
+ \lccode`#1="93%
+ \else\ifnum`#1="93
+ %i grave --> "EC (I dieresis) --> i dieresis
+ \lccode`#1="95%
+ \else\ifnum`#1="94
+ %i circumflex --> "EE (O acute) --> o acute
+ \lccode`#1="97%
+ \else\ifnum`#1="95
+ %i dieresis --> "EF (O circumflex) --> o circumflex
+ \lccode`#1="99%
+ \else\ifnum`#1="96
+ %n tilde --> "F1 (O grave) --> o grave
+ \lccode`#1="98%
+ \else\ifnum`#1="97
+ %o acute --> "F3 (U circumflex) --> u circumflex
+ \lccode`#1="9E%
+ \else\ifnum`#1="98
+ %o grave --> "F2 (U acute) --> u acute
+ \lccode`#1="9C%
+ \else\ifnum`#1="99
+ %o circumflex --> "F4 (U grave) --> u grave
+ \lccode`#1="9D%
+ \else\ifnum`#1="9A
+ %o dieresis --> "F6 (graphical sign)
+ \lccode`#1="F6%
+ \else\ifnum`#1="9B
+ %o tilde --> "F5 (power one sign)
+ \lccode`#1="F5%
+ \else\ifnum`#1="9C
+ %u acute --> "FA (graphical sign)
+ \lccode`#1="FA%
+ \else\ifnum`#1="9D
+ %u grave --> "F9 (graphical sign)
+ \lccode`#1="F9%
+ \else\ifnum`#1="9E
+ %u circumflex --> "FB (graphical sign)
+ \lccode`#1="FB%
+ \else\ifnum`#1="9F
+ %u dieresis --> "FC (graphical sign)
+ \lccode`#1="FC%
+ \else\ifnum`#1="AE
+ %AE ligature --> "C6 (differential sign)
+ \lccode`#1="C6%
+ \else\ifnum`#1="BE
+ %ae ligature --> "E6 (E circumflex) --> e circumflex
+ \lccode`#1="90%
+ \else\ifnum`#1="CB
+ %A grave --> "C0 (Interrogation down sign)
+ \lccode`#1="C0%
+ \else\ifnum`#1="CC
+ %A tilde --> "C3 (graphical sign)
+ \lccode`#1="C3%
+ \else\ifnum`#1="CD
+ %O tilde --> "D5 (closing american quote)
+ \lccode`#1="D5%
+ \else\ifnum`#1="CE
+ %OE ligature --> "D7 (diamond sign)
+ \lccode`#1="D7%
+ \else\ifnum`#1="CF
+ %oe ligature --> "F7 (graphical sign)
+ \lccode`#1="F7%
+ \else\ifnum`#1="D8
+ %y dieresis --> "B8 (Pi sign)
+ \lccode`#1="B8%
+ \else\ifnum`#1="E5
+ %A circumflex --> "C2 (neg sign)
+ \lccode`#1="C2%
+ \else\ifnum`#1="E6
+ %E circumflex --> "CA (graphical sign)
+ \lccode`#1="CA%
+ \else\ifnum`#1="E7
+ %A acute --> "C1 (Exclam down sign)
+ \lccode`#1="C1%
+ \else\ifnum`#1="E8
+ %E dieresis --> "CB (A acute) --> a acute
+ \lccode`#1="88%
+ \else\ifnum`#1="E9
+ %E grave --> "C8 (closing french guillemet)
+ \lccode`#1="C8%
+ \else\ifnum`#1="EA
+ %I acute --> "CD (O tilde) --> o tilde
+ \lccode`#1="9B%
+ \else\ifnum`#1="EB
+ %I circumflex --> "CE (OE ligature) --> oe ligature
+ \lccode`#1="EF%
+ \@ConflictHyphenCarMsg{I circumflex ("EB)}{I dieresis ("EC)}%
+ \else\ifnum`#1="EC
+ %I dieresis --> "CF (oe ligature)
+ \lccode`#1="EF%
+ \@ConflictHyphenCarMsg{I dieresis ("EC)}{I circumflex ("EB)}%
+ \else\ifnum`#1="ED
+ %I acute --> "CC (A tilde) --> a tilde
+ \lccode`#1="8B%
+ \else\ifnum`#1="EE%
+ %O acute --> "D3 (closing us guillemet)
+ \lccode`#1="D3%
+ \else\ifnum`#1="EF%
+ %O circumflex --> "D4 (opening quote)
+ \lccode`#1="D4%
+ \else\ifnum`#1="F1%
+ %O grave --> "D2 (Opening US guillemets)
+ \lccode`#1="D2%
+ \else\ifnum`#1="F2%
+ %U acute --> "DA (graphical character)
+ \lccode`#1="DA%
+ \else\ifnum`#1="F3%
+ %U circumflex --> "DB (graphical character)
+ \lccode`#1="DB%
+ \else\ifnum`#1="F4%
+ %U grave --> "D9 (Y dieresis) --> y dieresis
+ \lccode`#1="D8%
+ \else
+ %we don't have a letter (a character to form word)
+ \@BadHyphenCarMsg{#1}
+ \catcode`#1=15% make this character invalid
+ \fi\fi\fi\fi\fi\fi\fi\fi\fi\fi
+ \fi\fi\fi\fi\fi\fi\fi\fi\fi\fi
+ \fi\fi\fi\fi\fi\fi\fi\fi\fi\fi
+ \fi\fi\fi\fi\fi\fi\fi\fi\fi\fi
+ \fi\fi\fi\fi\fi\fi\fi\fi\fi\fi
+ \fi\fi\fi\fi\fi
+% We must have same count of \fi than \ifnum (55)
+}%
+\fi %\ifx\CurrentEncoding...
+\catcode`\@=\atcatcode \let\atcatcode\relax
+%</codepagemac>
+% \end{macrocode}
+% \subsection{Table for the code page of {\normalfont\textsc{Iso Latin set One}} (file: \Fich{codeiso1.tex})}
+% \DescribeMacro{\@IsoLatinSetOne}
+% \begin{macrocode}
+%<*codepageiso1>
+\chardef\atcatcode=\catcode`\@
+\catcode`\@=11\relax
+ {%
+ \catcode`\Y=\active
+ \gdef Y{\string Y}%
+ }%
+\begingroup
+\input initcar %
+\ifcase\CurrentEncoding
+ \input shapecm %
+ \Agrave{^^c0}{"C0}{"E0}%
+ \Aacute{^^c1}{"C1}{"E1}%
+ \Acircumflex{^^c2}{"C2}{"E2}%
+ \Atilde{^^c3}{"C3}{"E3}%
+ \Adieresis{^^c4}{"C4}{"E4}%
+ \Aring{^^c5}{"C5}{"E5}%
+ \AE{^^c6}{"C6}{"E6}%
+ \Ccedilla{^^c7}{"C7}{"E7}%
+ \Egrave{^^c8}{"C8}{"E8}%
+ \Eacute{^^c9}{"C9}{"E9}%
+ \Ecircumflex{^^ca}{"CA}{"EA}%
+ \Edieresis{^^cb}{"CB}{"EB}%
+ \Igrave{^^cc}{"CC}{"EC}%
+ \Iacute{^^cd}{"CD}{"ED}%
+ \Icircumflex{^^ce}{"CE}{"EE}%
+ \Idieresis{^^cf}{"CF}{"EF}%
+ \DBar{^^d0}{"D0}{"F0}%
+ \Ntilde{^^d1}{"D1}{"F1}%
+ \Ograve{^^d2}{"D2}{"F2}%
+ \Oacute{^^d3}{"D3}{"F3}%
+ \Ocircumflex{^^d4}{"D4}{"F4}%
+ \Otilde{^^d5}{"D5}{"F5}%
+ \Odieresis{^^d6}{"D6}{"F6}%
+ \times{^^d7}{"D7}{"D7}%
+ \Oslash{^^d8}{"D8}{"F8}%
+ \Ugrave{^^d9}{"D9}{"F9}%
+ \Uacute{^^da}{"DA}{"FA}%
+ \Ucircumflex{^^db}{"DB}{"FB}%
+ \Udieresis{^^dc}{"DC}{"FC}%
+ \Yacute{^^dd}{"DD}{"FD}%
+ \thorn{^^de}{"FE}{"DE}%
+ \beta{^^df}{"DF}{"DF}%
+ \agrave{^^e0}{"C0}{"E0}%
+ \aacute{^^e1}{"C1}{"E1}%
+ \acircumflex{^^e2}{"C2}{"E2}%
+ \atilde{^^e3}{"C3}{"E3}%
+ \adieresis{^^e4}{"C4}{"E4}%
+ \aring{^^e5}{"C5}{"E5}%
+ \ae{^^e6}{"C6}{"E6}%
+ \ccedilla{^^e7}{"C7}{"E7}%
+ \egrave{^^e8}{"C8}{"E8}%
+ \eacute{^^e9}{"C9}{"E9}%
+ \ecircumflex{^^ea}{"CA}{"EA}%
+ \edieresis{^^eb}{"CB}{"EB}%
+ \igrave{^^ec}{"CC}{"EC}%
+ \iacute{^^ed}{"CD}{"ED}%
+ \icircumflex{^^ee}{"CE}{"EE}%
+ \idieresis{^^ef}{"CF}{"EF}%
+ \dBar{^^f0}{"D0}{"F0}%
+ \ntilde{^^f1}{"D1}{"F1}%
+ \ograve{^^f2}{"D2}{"F2}%
+ \oacute{^^f3}{"D3}{"F3}%
+ \ocircumflex{^^f4}{"D4}{"F4}%
+ \otilde{^^f5}{"D5}{"F5}%
+ \odieresis{^^f6}{"D6}{"F6}%
+ \div{^^f7}{"F7}{"F7}%
+ \oslash{^^f8}{"D8}{"F8}%
+ \ugrave{^^f9}{"D9}{"F9}%
+ \uacute{^^fa}{"DA}{"FA}%
+ \ucircumflex{^^fb}{"DB}{"FB}%
+ \udieresis{^^fc}{"DC}{"FC}%
+ \yacute{^^fd}{"DD}{"FD}%
+ \Thorn{^^fe}{"DE}{"FE}%
+ \ydieresis{^^ff}{"59}{"FF}%
+\or
+ \input shapedc %
+% \end{macrocode}
+% The following characters are in the same place in both
+% (\textsc{Iso1} and \textsc{Dc}) encodings. Thus the only
+% thing to do is to change the \emph{catcode} to transform
+% the character in letter (can be used in control sequence, but
+% this is not recommended if one want have portable documents) and
+% to define good values for uppercase and lowercase characters.
+% \begin{macrocode}
+ %Agrave
+ \global\catcode"C0=11\global\uccode"C0="C0\global\lccode"C0="E0%
+ %Aacute
+ \global\catcode"C1=11\global\uccode"C1="C1\global\lccode"C1="E1%
+ %Acircumflex
+ \global\catcode"C2=11\global\uccode"C2="C2\global\lccode"C2="E2%
+ %Atilde
+ \global\catcode"C3=11\global\uccode"C3="C3\global\lccode"C3="E3%
+ %Adieresis
+ \global\catcode"C4=11\global\uccode"C4="C4\global\lccode"C4="E4%
+ %Aring
+ \global\catcode"C5=11\global\uccode"C5="C5\global\lccode"C5="E5%
+ %AE
+ \global\catcode"C6=11\global\uccode"C6="C6\global\lccode"C6="E6%
+ %Ccedilla
+ \global\catcode"C7=11\global\uccode"C7="C7\global\lccode"C7="E7
+ %Egrave
+ \global\catcode"C8=11\global\uccode"C8="C8\global\lccode"C8="E8%
+ %Eacute
+ \global\catcode"C9=11\global\uccode"C9="C9\global\lccode"C9="E9%
+ %Ecircumflex
+ \global\catcode"CA=11\global\uccode"CA="CA\global\lccode"CA="EA%
+ %Edieresis
+ \global\catcode"CB=11\global\uccode"CB="CB\global\lccode"CB="EB%
+ %Igrave
+ \global\catcode"CC=11\global\uccode"CC="CC\global\lccode"CC="EC%
+ %Iacute
+ \global\catcode"CD=11\global\uccode"CD="CD\global\lccode"CD="ED%
+ %Icircumflex
+ \global\catcode"CE=11\global\uccode"CE="CE\global\lccode"CE="EE%
+ %Idieresis
+ \global\catcode"CF=11\global\uccode"CF="CF\global\lccode"CF="EF%
+ %DBar
+ \global\catcode"D0=11\global\uccode"D0="D0\global\lccode"D0="F0%
+ %Ntilde
+ \global\catcode"D1=11\global\uccode"D1="D1\global\lccode"D1="F1%
+ %Ograve
+ \global\catcode"D2=11\global\uccode"D2="D2\global\lccode"D2="F2%
+ %Oacute
+ \global\catcode"D3=11\global\uccode"D3="D3\global\lccode"D3="F3%
+ %Ocircumflex
+ \global\catcode"D4=11\global\uccode"D4="D4\global\lccode"D4="F4%
+ %Otilde
+ \global\catcode"D5=11\global\uccode"D5="D5\global\lccode"D5="F5%
+ %Odieresis
+ \global\catcode"D6=11\global\uccode"D6="D6\global\lccode"D6="F6%
+ \times{^^d7}{"D7}{"D7}%
+ %Oslash
+ \global\catcode"D8=11\global\uccode"D8="D8\global\lccode"D8="F8%
+ %Ugrave
+ \global\catcode"D9=11\global\uccode"D9="D9\global\lccode"D9="F9%
+ %Uacute
+ \global\catcode"DA=11\global\uccode"DA="DA\global\lccode"DA="FA%
+ %Ucircumflex
+ \global\catcode"DB=11\global\uccode"DB="DB\global\lccode"DB="FB%
+ %Udieresis
+ \global\catcode"DC=11\global\uccode"DC="DC\global\lccode"DC="FC%
+ %Yacute
+ \global\catcode"DD=11\global\uccode"DD="DD\global\lccode"DD="FD%
+ %thorn
+ \global\catcode"DE=11\global\uccode"DE="FE\global\lccode"DE="DE%
+ \beta{^^df}{"DF}{"DF}%
+ %agrave
+ \global\catcode"E0=11\global\uccode"E0="C0\global\lccode"E0="E0%
+ %aacute
+ \global\catcode"E1=11\global\uccode"E1="C1\global\lccode"E1="E1%
+ %acircumflex
+ \global\catcode"E2=11\global\uccode"E2="C2\global\lccode"E2="E2%
+ %atilde
+ \global\catcode"E3=11\global\uccode"E3="C3\global\lccode"E3="E3%
+ %adieresis
+ \global\catcode"E4=11\global\uccode"E4="C4\global\lccode"E4="E4%
+ %aring
+ \global\catcode"E5=11\global\uccode"E5="C5\global\lccode"E5="E5%
+ %ae
+ \global\catcode"E6=11\global\uccode"E6="C6\global\lccode"E6="E6%
+ %ccedilla
+ \global\catcode"E7=11\global\uccode"E7="C7\global\lccode"E7="E7%
+ %egrave
+ \global\catcode"E8=11\global\uccode"E8="C8\global\lccode"E8="E8%
+ %eacute
+ \global\catcode"E9=11\global\uccode"E9="C9\global\lccode"E9="E9%
+ %ecircumflex
+ \global\catcode"EA=11\global\uccode"EA="CA\global\lccode"EA="EA%
+ %edieresis
+ \global\catcode"EB=11\global\uccode"EB="CB\global\lccode"EB="EB%
+ %igrave
+ \global\catcode"EC=11\global\uccode"EC="CC\global\lccode"EC="EC%
+ %iacute
+ \global\catcode"ED=11\global\uccode"ED="CD\global\lccode"ED="ED%
+ %icircumflex
+ \global\catcode"EE=11\global\uccode"EE="CE\global\lccode"EE="EE%
+ %idieresis
+ \global\catcode"EF=11\global\uccode"EF="CF\global\lccode"EF="EF%
+ %dBar
+ \global\catcode"F0=11\global\uccode"F0="D0\global\lccode"F0="F0%
+ %ntilde
+ \global\catcode"F1=11\global\uccode"F1="D1\global\lccode"F1="F1%
+ %ograve
+ \global\catcode"F2=11\global\uccode"F2="D2\global\lccode"F2="F2%
+ %oacute
+ \global\catcode"F3=11\global\uccode"F3="D3\global\lccode"F3="F3%
+ %ocircumflex
+ \global\catcode"F4=11\global\uccode"F4="D4\global\lccode"F4="F4%
+ %otilde
+ \global\catcode"F5=11\global\uccode"F5="D5\global\lccode"F5="F5%
+ %odieresis
+ \global\catcode"F6=11\global\uccode"F6="D6\global\lccode"F6="F6%
+ \div{^^f7}{"F7}{"F7}%
+ %oslash
+ \global\catcode"F8=11\global\uccode"F8="D8\global\lccode"F8="F8%
+ %ugrave
+ \global\catcode"F9=11\global\uccode"F9="D9\global\lccode"F9="F9%
+ %uacute
+ \global\catcode"FA=11\global\uccode"FA="DA\global\lccode"FA="FA%
+ %ucircumflex
+ \global\catcode"FB=11\global\uccode"FB="DB\global\lccode"FB="FB%
+ %udieresis
+ \global\catcode"FC=11\global\uccode"FC="DC\global\lccode"FC="FC%
+ %yacute
+ \global\catcode"FD=11\global\uccode"FD="DD\global\lccode"FD="FD%
+ %Thorn
+ \global\catcode"FE=11\global\uccode"FE="DE\global\lccode"FE="FE%
+ %ydieresis
+ \global\catcode"FF=11\global\uccode"FF="59\global\lccode"FF="FF%
+\fi %\ifcase
+% \end{macrocode}
+% These symbols are drawn with mathematical commands and thus are aleways
+% ``active'' in both encoding
+% \begin{macrocode}
+\exclamdown{^^a1}{"A1}{"A1}%
+\cent{^^a2}{"A2}{"A2}%
+\pounds{^^a3}{"A3}{"A3}%
+\currency{^^a4}{"A4}{"A4}%
+\yen{^^a5}{"A5}{"A5}%
+\splitbar{^^a6}{"A6}{"A6}%
+\section{^^a7}{"A7}{"A7}%
+\dieresis{^^a8}{"A8}{"A8}%
+\copyright{^^a9}{"A9}{"A9}%
+\ordfeminine{^^aa}{"AA}{"AA}%
+\guilletmotleft{^^ab}{"AB}{"AB}%
+\neg{^^ac}{"AC}{"AC}%
+\register{^^ad}{"AD}{"AD}%
+\degree{^^b0}{"B0}{"B0}%
+\pm{^^b1}{"B1}{"B1}%
+\powertwo{^^b2}{"B2}{"B2}%
+\powerthree{^^b3}{"B3}{"B3}%
+\mu{^^b5}{"B5}{"B5}%
+\ParagraphSign{^^b6}{"B6}{"B6}%
+\bullet{^^b7}{"B7}{"B7}%
+\cedilla{^^b8}{"B8}{"B8}%
+\powerone{^^b9}{"B9}{"B9}%
+\ordmasculine{^^ba}{"BA}{"BA}%
+\guillemeotright{^^bb}{"BB}{"BB}%
+\OneQuarter{^^bc}{"BC}{"BC}%
+\OneHalf{^^bd}{"BD}{"BD}%
+\threequarter{^^be}{"BE}{"BE}%
+\questiondown{^^bf}{"BF}{"BF}%
+\endgroup
+% \end{macrocode}
+% \DescribeMacro{\@MakeHyphenationLatin1}
+% \begin{macrocode}
+\ifnum\CurrentEncoding=\DC
+\def\@MakeHyphenationLatinOne#1{%
+% Here we have not too much work since the character from Iso Latin set one and
+% from DC encoding are the same. We just do the verification that the character
+% is a letter.
+ \catcode`#1=12%
+ \ifnum`#1>"C0%
+ \ifnum`#1="D7% Times sign
+ \@BadHyphenCarMsg{#1}%
+ \fi
+ \ifnum`#1="DF% beta sign
+ \@BadHyphenCarMsg{#1}%
+ \fi
+ \ifnum`#1="F7% Divide sign
+ \@BadHyphenCarMsg{#1}%
+ \fi
+ \else
+ \@BadHyphenCarMsg{#1}%
+ \fi
+}%
+\fi %\ifnum\CurrentEncoding...
+\catcode`\@=\atcatcode \let\atcatcode\relax
+%</codepageiso1>
+% \end{macrocode}
+% \subsection{Default value for each character (file: \Fich{initcar.tex})}
+%
+% The file when inputting give a default value to each character above
+% 127, and set the value for
+% \Comm{lccode} and \Comm{uccode} to the character itself.
+% This convention doesn't follow the normal \TeX{} convention
+% (where a character without uppercase or lowercase has value zero for both code) but it
+% is necessary to be able to declare hyphenation exception
+% (containing character above 127) with the command \Comm{hyphenation}.
+% \begin{macrocode}
+%<*initcar>
+\gdef^^80{\@DefaultValue{80}}\global\uccode"80="80\global\lccode"80="80%
+\gdef^^81{\@DefaultValue{81}}\global\uccode"81="81\global\lccode"81="81%
+\gdef^^82{\@DefaultValue{82}}\global\uccode"82="82\global\lccode"82="82%
+\gdef^^83{\@DefaultValue{83}}\global\uccode"83="83\global\lccode"83="83%
+\gdef^^84{\@DefaultValue{84}}\global\uccode"84="84\global\lccode"84="84%
+\gdef^^85{\@DefaultValue{85}}\global\uccode"85="85\global\lccode"85="85%
+\gdef^^86{\@DefaultValue{86}}\global\uccode"86="86\global\lccode"86="86%
+\gdef^^87{\@DefaultValue{87}}\global\uccode"87="87\global\lccode"87="87%
+\gdef^^88{\@DefaultValue{88}}\global\uccode"88="88\global\lccode"88="88%
+\gdef^^89{\@DefaultValue{89}}\global\uccode"89="89\global\lccode"89="89%
+\gdef^^8a{\@DefaultValue{8a}}\global\uccode"8A="8A\global\lccode"8A="8A%
+\gdef^^8b{\@DefaultValue{8b}}\global\uccode"8B="8B\global\lccode"8B="8B%
+\gdef^^8c{\@DefaultValue{8c}}\global\uccode"8C="8C\global\lccode"8C="8C%
+\gdef^^8d{\@DefaultValue{8d}}\global\uccode"8D="8D\global\lccode"8D="8D%
+\gdef^^8e{\@DefaultValue{8e}}\global\uccode"8E="8E\global\lccode"8E="8E%
+\gdef^^8f{\@DefaultValue{8f}}\global\uccode"8F="8F\global\lccode"8F="8F%
+\gdef^^90{\@DefaultValue{90}}\global\uccode"90="90\global\lccode"90="90%
+\gdef^^91{\@DefaultValue{91}}\global\uccode"91="91\global\lccode"91="91%
+\gdef^^92{\@DefaultValue{92}}\global\uccode"92="92\global\lccode"92="92%
+\gdef^^93{\@DefaultValue{93}}\global\uccode"93="93\global\lccode"93="93%
+\gdef^^94{\@DefaultValue{94}}\global\uccode"94="94\global\lccode"94="94%
+\gdef^^95{\@DefaultValue{95}}\global\uccode"95="95\global\lccode"95="95%
+\gdef^^96{\@DefaultValue{96}}\global\uccode"96="96\global\lccode"96="96%
+\gdef^^97{\@DefaultValue{97}}\global\uccode"97="97\global\lccode"97="97%
+\gdef^^98{\@DefaultValue{98}}\global\uccode"98="98\global\lccode"98="98%
+\gdef^^99{\@DefaultValue{99}}\global\uccode"99="99\global\lccode"99="99%
+\gdef^^9a{\@DefaultValue{9a}}\global\uccode"9A="9A\global\lccode"9A="9A%
+\gdef^^9b{\@DefaultValue{9b}}\global\uccode"9B="9B\global\lccode"9B="9B%
+\gdef^^9c{\@DefaultValue{9c}}\global\uccode"9C="9C\global\lccode"9C="9C%
+\gdef^^9d{\@DefaultValue{9d}}\global\uccode"9D="9D\global\lccode"9D="9D%
+\gdef^^9e{\@DefaultValue{9e}}\global\uccode"9E="9E\global\lccode"9E="9E%
+\gdef^^9f{\@DefaultValue{9f}}\global\uccode"9F="9F\global\lccode"9F="9F%
+\gdef^^a0{\@DefaultValue{a0}}\global\uccode"A0="A0\global\lccode"A0="A0%
+\gdef^^a1{\@DefaultValue{a1}}\global\uccode"A1="A1\global\lccode"A1="A1%
+\gdef^^a2{\@DefaultValue{a2}}\global\uccode"A2="A2\global\lccode"A2="A2%
+\gdef^^a3{\@DefaultValue{a3}}\global\uccode"A3="A3\global\lccode"A3="A3%
+\gdef^^a4{\@DefaultValue{a4}}\global\uccode"A4="A4\global\lccode"A4="A4%
+\gdef^^a5{\@DefaultValue{a5}}\global\uccode"A5="A5\global\lccode"A5="A5%
+\gdef^^a6{\@DefaultValue{a6}}\global\uccode"A6="A6\global\lccode"A6="A6%
+\gdef^^a7{\@DefaultValue{a7}}\global\uccode"A7="A7\global\lccode"A7="A7%
+\gdef^^a8{\@DefaultValue{a8}}\global\uccode"A8="A8\global\lccode"A8="A8%
+\gdef^^a9{\@DefaultValue{a9}}\global\uccode"A9="A9\global\lccode"A9="A9%
+\gdef^^aa{\@DefaultValue{aa}}\global\uccode"AA="AA\global\lccode"AA="AA%
+\gdef^^ab{\@DefaultValue{ab}}\global\uccode"AB="AB\global\lccode"AB="AB%
+\gdef^^ac{\@DefaultValue{ac}}\global\uccode"AC="AC\global\lccode"AC="AC%
+\gdef^^ad{\@DefaultValue{ad}}\global\uccode"AD="AD\global\lccode"AD="AD%
+\gdef^^ae{\@DefaultValue{ae}}\global\uccode"AE="AE\global\lccode"AE="AE%
+\gdef^^af{\@DefaultValue{af}}\global\uccode"AF="AF\global\lccode"AF="AF%
+\gdef^^b0{\@DefaultValue{b0}}\global\uccode"B0="B0\global\lccode"B0="B0%
+\gdef^^b1{\@DefaultValue{b1}}\global\uccode"B1="B1\global\lccode"B1="B1%
+\gdef^^b2{\@DefaultValue{b2}}\global\uccode"B2="B2\global\lccode"B2="B2%
+\gdef^^b3{\@DefaultValue{b3}}\global\uccode"B3="B3\global\lccode"B3="B3%
+\gdef^^b4{\@DefaultValue{b4}}\global\uccode"B4="B4\global\lccode"B4="B4%
+\gdef^^b5{\@DefaultValue{b5}}\global\uccode"B5="B5\global\lccode"B5="B5%
+\gdef^^b6{\@DefaultValue{b6}}\global\uccode"B6="B6\global\lccode"B6="B6%
+\gdef^^b7{\@DefaultValue{b7}}\global\uccode"B7="B7\global\lccode"B7="B7%
+\gdef^^b8{\@DefaultValue{b8}}\global\uccode"B8="B8\global\lccode"B8="B8%
+\gdef^^b9{\@DefaultValue{b9}}\global\uccode"B9="B9\global\lccode"B9="B9%
+\gdef^^ba{\@DefaultValue{ba}}\global\uccode"BA="BA\global\lccode"BA="BA%
+\gdef^^bb{\@DefaultValue{bb}}\global\uccode"BB="BB\global\lccode"BB="BB%
+\gdef^^bc{\@DefaultValue{bc}}\global\uccode"BC="BC\global\lccode"BC="BC%
+\gdef^^bd{\@DefaultValue{bd}}\global\uccode"BD="BD\global\lccode"BD="BD%
+\gdef^^be{\@DefaultValue{be}}\global\uccode"BE="BE\global\lccode"BE="BE%
+\gdef^^bf{\@DefaultValue{bf}}\global\uccode"BF="BF\global\lccode"BF="BF%
+\gdef^^c0{\@DefaultValue{c0}}\global\uccode"C0="C0\global\lccode"C0="C0%
+\gdef^^c1{\@DefaultValue{c1}}\global\uccode"C1="C1\global\lccode"C1="C1%
+\gdef^^c2{\@DefaultValue{c2}}\global\uccode"C2="C2\global\lccode"C2="C2%
+\gdef^^c3{\@DefaultValue{c3}}\global\uccode"C3="C3\global\lccode"C3="C3%
+\gdef^^c4{\@DefaultValue{c4}}\global\uccode"C4="C4\global\lccode"C4="C4%
+\gdef^^c5{\@DefaultValue{c5}}\global\uccode"C5="C5\global\lccode"C5="C5%
+\gdef^^c6{\@DefaultValue{c6}}\global\uccode"C6="C6\global\lccode"C6="C6%
+\gdef^^c7{\@DefaultValue{c7}}\global\uccode"C7="C7\global\lccode"C7="C7%
+\gdef^^c8{\@DefaultValue{c8}}\global\uccode"C8="C8\global\lccode"C8="C8%
+\gdef^^c9{\@DefaultValue{c9}}\global\uccode"C9="C9\global\lccode"C9="C9%
+\gdef^^ca{\@DefaultValue{ca}}\global\uccode"CA="CA\global\lccode"CA="CA%
+\gdef^^cb{\@DefaultValue{cb}}\global\uccode"CB="CB\global\lccode"CB="CB%
+\gdef^^cc{\@DefaultValue{cc}}\global\uccode"CC="CC\global\lccode"CC="CC%
+\gdef^^cd{\@DefaultValue{cd}}\global\uccode"CD="CD\global\lccode"CD="CD%
+\gdef^^ce{\@DefaultValue{ce}}\global\uccode"CE="CE\global\lccode"CE="CE%
+\gdef^^cf{\@DefaultValue{cf}}\global\uccode"CF="CF\global\lccode"CF="CF%
+\gdef^^d0{\@DefaultValue{d0}}\global\uccode"D0="D0\global\lccode"D0="D0%
+\gdef^^d1{\@DefaultValue{d1}}\global\uccode"D1="D1\global\lccode"D1="D1%
+\gdef^^d2{\@DefaultValue{d2}}\global\uccode"D2="D2\global\lccode"D2="D2%
+\gdef^^d3{\@DefaultValue{d3}}\global\uccode"D3="D3\global\lccode"D3="D3%
+\gdef^^d4{\@DefaultValue{d4}}\global\uccode"D4="D4\global\lccode"D4="D4%
+\gdef^^d5{\@DefaultValue{d5}}\global\uccode"D5="D5\global\lccode"D5="D5%
+\gdef^^d6{\@DefaultValue{d6}}\global\uccode"D6="D6\global\lccode"D6="D6%
+\gdef^^d7{\@DefaultValue{d7}}\global\uccode"D7="D7\global\lccode"D7="D7%
+\gdef^^d8{\@DefaultValue{d8}}\global\uccode"D8="D8\global\lccode"D8="D8%
+\gdef^^d9{\@DefaultValue{d9}}\global\uccode"D9="D9\global\lccode"D9="D9%
+\gdef^^da{\@DefaultValue{da}}\global\uccode"DA="DA\global\lccode"DA="DA%
+\gdef^^db{\@DefaultValue{db}}\global\uccode"DB="DB\global\lccode"DB="DB%
+\gdef^^dc{\@DefaultValue{dc}}\global\uccode"DC="DC\global\lccode"DC="DC%
+\gdef^^dd{\@DefaultValue{dd}}\global\uccode"DD="DD\global\lccode"DD="DD%
+\gdef^^de{\@DefaultValue{de}}\global\uccode"DE="DE\global\lccode"DE="DE%
+\gdef^^df{\@DefaultValue{df}}\global\uccode"DF="DF\global\lccode"DF="DF%
+\gdef^^e0{\@DefaultValue{e0}}\global\uccode"E0="E0\global\lccode"E0="E0%
+\gdef^^e1{\@DefaultValue{e1}}\global\uccode"E1="E1\global\lccode"E1="E1%
+\gdef^^e2{\@DefaultValue{e2}}\global\uccode"E2="E2\global\lccode"E2="E2%
+\gdef^^e3{\@DefaultValue{e3}}\global\uccode"E3="E3\global\lccode"E3="E3%
+\gdef^^e4{\@DefaultValue{e4}}\global\uccode"E4="E4\global\lccode"E4="E4%
+\gdef^^e5{\@DefaultValue{e5}}\global\uccode"E5="E5\global\lccode"E5="E5%
+\gdef^^e6{\@DefaultValue{e6}}\global\uccode"E6="E6\global\lccode"E6="E6%
+\gdef^^e7{\@DefaultValue{e7}}\global\uccode"E7="E7\global\lccode"E7="E7%
+\gdef^^e8{\@DefaultValue{e8}}\global\uccode"E8="E8\global\lccode"E8="E8%
+\gdef^^e9{\@DefaultValue{e9}}\global\uccode"E9="E9\global\lccode"E9="E9%
+\gdef^^ea{\@DefaultValue{ea}}\global\uccode"EA="EA\global\lccode"EA="EA%
+\gdef^^eb{\@DefaultValue{eb}}\global\uccode"EB="EB\global\lccode"EB="EB%
+\gdef^^ec{\@DefaultValue{ec}}\global\uccode"EC="EC\global\lccode"EC="EC%
+\gdef^^ed{\@DefaultValue{ed}}\global\uccode"ED="ED\global\lccode"ED="ED%
+\gdef^^ee{\@DefaultValue{ee}}\global\uccode"EE="EE\global\lccode"EE="EE%
+\gdef^^ef{\@DefaultValue{ef}}\global\uccode"EF="EF\global\lccode"EF="EF%
+\gdef^^f0{\@DefaultValue{f0}}\global\uccode"F0="F0\global\lccode"F0="F0%
+\gdef^^f1{\@DefaultValue{f1}}\global\uccode"F1="F1\global\lccode"F1="F1%
+\gdef^^f2{\@DefaultValue{f2}}\global\uccode"F2="F2\global\lccode"F2="F2%
+\gdef^^f3{\@DefaultValue{f3}}\global\uccode"F3="F3\global\lccode"F3="F3%
+\gdef^^f4{\@DefaultValue{f4}}\global\uccode"F4="F4\global\lccode"F4="F4%
+\gdef^^f5{\@DefaultValue{f5}}\global\uccode"F5="F5\global\lccode"F5="F5%
+\gdef^^f6{\@DefaultValue{f6}}\global\uccode"F6="F6\global\lccode"F6="F6%
+\gdef^^f7{\@DefaultValue{f7}}\global\uccode"F7="F7\global\lccode"F7="F7%
+\gdef^^f8{\@DefaultValue{f8}}\global\uccode"F8="F8\global\lccode"F8="F8%
+\gdef^^f9{\@DefaultValue{f9}}\global\uccode"F9="F9\global\lccode"F9="F9%
+\gdef^^fa{\@DefaultValue{fa}}\global\uccode"FA="FA\global\lccode"FA="FA%
+\gdef^^fb{\@DefaultValue{fb}}\global\uccode"FB="FB\global\lccode"FB="FB%
+\gdef^^fc{\@DefaultValue{fc}}\global\uccode"FC="FC\global\lccode"FC="FC%
+\gdef^^fd{\@DefaultValue{fd}}\global\uccode"FD="FD\global\lccode"FD="FD%
+\gdef^^fe{\@DefaultValue{fe}}\global\uccode"FE="FE\global\lccode"FE="FE%
+\gdef^^ff{\@DefaultValue{ff}}\global\uccode"FF="FF\global\lccode"FF="FF%
+%</initcar>
+% \end{macrocode}
+%\Finale
+
diff --git a/macros/latex/contrib/codepage/codepage.ins b/macros/latex/contrib/codepage/codepage.ins
new file mode 100644
index 0000000000..26c869d409
--- /dev/null
+++ b/macros/latex/contrib/codepage/codepage.ins
@@ -0,0 +1,27 @@
+\def\batchfile{codepage.ins}
+\input docstrip.tex
+\preamble
+ This package provides some commands to handle different code pages in the same
+ document. It works with TeX and LaTeX, but his documentation should be produced
+ with the docstrip package.
+
+ Disclaimer:
+ This package is provided 'as is' without any warranty.
+
+ Author:
+ Alain Aubord
+ Geneva
+ Switzerland
+
+ E-mail: aubord@uni2a.unige.ch
+\endpreamble
+\generateFile{codepage.sty}{t}{\from{codepage.dtx}{codepage}}
+\generateFile{shapecm.tex}{t}{\from{codepage.dtx}{shapecm}}
+\generateFile{shapedc.tex}{t}{\from{codepage.dtx}{shapedc}}
+\generateFile{code850.tex}{t}{\from{codepage.dtx}{codepage850}}
+\generateFile{code437.tex}{t}{\from{codepage.dtx}{codepage437}}
+\generateFile{codemac.tex}{t}{\from{codepage.dtx}{codepagemac}}
+\generateFile{codeiso1.tex}{t}{\from{codepage.dtx}{codepageiso1}}
+\generateFile{initcar.tex}{t}{\from{codepage.dtx}{initcar}}
+
+
diff --git a/macros/latex/contrib/codepage/codepage.pdf b/macros/latex/contrib/codepage/codepage.pdf
new file mode 100644
index 0000000000..f5ee5f9ca9
--- /dev/null
+++ b/macros/latex/contrib/codepage/codepage.pdf
Binary files differ
diff --git a/macros/latex/contrib/codepage/frintro.drv b/macros/latex/contrib/codepage/frintro.drv
new file mode 100644
index 0000000000..ddf902f419
--- /dev/null
+++ b/macros/latex/contrib/codepage/frintro.drv
@@ -0,0 +1,136 @@
+\documentclass{article}
+\usepackage{doc}
+
+%
+%-------------------------------------------Macro used by the documentaion-----------------------------
+%
+ \let\Grave=\`%
+ \let\Circumflex=\^%
+ \let\Tilda=\~%
+ \let\OverBar=\=%
+ \let\UnderBar=\b%
+ \let\Join=\t%
+ \let\HungarUmlaut=\H%
+ \let\Acute=\'%
+ \let\Diaresis=\"%
+ \let\Breve=\u%
+ \let\OverDot=\.%
+ \let\UnderDot=\d%
+ \let\Tcheche=\v%
+ \let\Cedille=\c%
+\makeatletter
+\def\CarSmaller{\ifx\@currsize\normalsize\relax
+ \small
+ \else
+ \ifx\@currsize\small\relax
+ \footnotesize
+ \else
+ \ifx\@currsize\footnotesize\relax
+ \scriptsize
+ \else
+ \ifx\@currsize\scriptsize\relax
+ \tiny % we cannot have less
+ \fi
+ \fi
+ \fi
+ \fi
+ \ifx\@currsize\large\relax
+ \normalsize
+ \else
+ \ifx\@currsize\Large\relax
+ \large
+ \else
+ \ifx\@currsize\LARGE\relax
+ \Large
+ \else
+ \ifx\@currsize\huge\relax
+ \LARGE
+ \else
+ \ifx\@currsize\Huge\relax
+ \huge
+ \fi
+ \fi
+ \fi
+ \fi
+ \fi
+ }% \CarSmaller
+
+ \gdef\@StartNewWord{\penalty\@M\hskip\z@skip}%
+ \gdef\@TreatDotLessCar#1#2{%
+ \@StartNewWord
+ \ifx#1i%
+ \csname#2\endcsname \i
+ \else
+ \ifx#1j%
+ \csname#2\endcsname \j
+ \else
+ \csname#2\endcsname #1%
+ \fi
+ \fi
+ \@StartNewWord}%
+ \gdef\`#1{{\@TreatDotLessCar{#1}{Grave}}}%
+ \gdef\^#1{{\@TreatDotLessCar{#1}{Circumflex}}}%
+ \gdef\~#1{{\@TreatDotLessCar{#1}{Tilda}}}%
+ \gdef\=#1{{\@TreatDotLessCar{#1}{OverBar}}}%
+ \gdef\b#1{{\underbar #1\@StartNewWord}}%
+ \gdef\t#1{{\@TreatDotLessCar{#1}{Join}}}%
+ \gdef\H#1{{\@TreatDotLessCar{#1}{HungarUmlaut}}}%
+ \gdef\'#1{{\@TreatDotLessCar{#1}{Acute}}}%
+ \gdef\"#1{{\@TreatDotLessCar{#1}{Diaresis}}}%
+ \gdef\u#1{{\@TreatDotLessCar{#1}{Breve}}}%
+ \gdef\.#1{{\@TreatDotLessCar{#1}{OverDot}}}%
+ \gdef\d#1{{\UnderDot #1\@StartNewWord}}%
+ \gdef\v#1{{\@TreatDotLessCar{#1}{Tcheche}}}%
+ \gdef\c#1{{\Cedille #1\@StartNewWord}}%
+
+\makeatother
+
+\def\today{le \number\day\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}
+
+\renewcommand{\abstractname}{R\'esum\'e}
+\renewcommand{\refname}{R\'ef\'erences}
+
+\let\iffrench=\iftrue
+\let\ifenglish=\iffalse
+
+\def\og{\leavevmode\raise.3ex\hbox{$\scriptscriptstyle\langle\!%
+ \langle\, $}}
+\def\fg{\leavevmode\raise.3ex\hbox{$\scriptscriptstyle\,\rangle\!%
+ \rangle$}}
+
+\chardef\Circonflexe="5E
+\chardef\TildeChar="7E
+\chardef\bslash='134
+\let\ft=\footnote
+\def\Fich#1{{\CarSmaller\sf #1}} % write a file name
+\def\Comm#1{{\CarSmaller\tt\bslash #1}}
+
+\hyphenation{l'uti-li-sa-tion}
+\frenchspacing
+%
+%------------------------------------------Page dimensions---------------------------------------------
+%
+% Suppression of the standard TeX offset
+\hoffset=-1in
+\voffset=-1in
+
+\setlength{\parindent}{0pt}
+\setlength{\oddsidemargin}{2cm}
+\setlength{\marginparwidth}{4cm}
+\setlength{\textwidth}{15cm}
+\setlength{\textheight}{24cm}
+%
+%----------------------------------------------Doc package parameters-----------------------------------
+%
+\OnlyDescription %Only the description of package, not the implementation will be printed
+\DisableCrossrefs % no full index
+\CodelineIndex % by line number
+\RecordChanges % make change history
+
+\begin{document}
+\DocInput{codepage.dtx} \PrintIndex \PrintChanges
+\end{document}
+
diff --git a/macros/latex/contrib/codepage/frintro.pdf b/macros/latex/contrib/codepage/frintro.pdf
new file mode 100644
index 0000000000..2fe9edc3e2
--- /dev/null
+++ b/macros/latex/contrib/codepage/frintro.pdf
Binary files differ