\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