From e0c6872cf40896c7be36b11dcc744620f10adf1d Mon Sep 17 00:00:00 2001 From: Norbert Preining Date: Mon, 2 Sep 2019 13:46:59 +0900 Subject: Initial commit --- macros/latex/contrib/codepage/LISEZMOI | 39 + macros/latex/contrib/codepage/README | 59 + macros/latex/contrib/codepage/codepage.drv | 79 + macros/latex/contrib/codepage/codepage.dtx | 3593 ++++++++++++++++++++++++++++ macros/latex/contrib/codepage/codepage.ins | 27 + macros/latex/contrib/codepage/codepage.pdf | Bin 0 -> 221115 bytes macros/latex/contrib/codepage/frintro.drv | 136 ++ macros/latex/contrib/codepage/frintro.pdf | Bin 0 -> 94768 bytes 8 files changed, 3933 insertions(+) create mode 100644 macros/latex/contrib/codepage/LISEZMOI create mode 100644 macros/latex/contrib/codepage/README create mode 100644 macros/latex/contrib/codepage/codepage.drv create mode 100644 macros/latex/contrib/codepage/codepage.dtx create mode 100644 macros/latex/contrib/codepage/codepage.ins create mode 100644 macros/latex/contrib/codepage/codepage.pdf create mode 100644 macros/latex/contrib/codepage/frintro.drv create mode 100644 macros/latex/contrib/codepage/frintro.pdf (limited to 'macros/latex/contrib/codepage') 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 +% +% \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 +% +% \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 +% +% +% \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 +% +% \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 +% +% \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 +% +% \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 +% +% \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% +% +% \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 Binary files /dev/null and b/macros/latex/contrib/codepage/codepage.pdf 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 Binary files /dev/null and b/macros/latex/contrib/codepage/frintro.pdf differ -- cgit v1.2.3