code-page a style to handle different code-pages in the same document

Alain Aubord

January 2, 1995

Abstract

This package provides some new commands to handle code page^{1}. This text describes the interface offered by the package and some problems which occur when the implementation is done only in TEX.

1 Introduction

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 L^{A}TEX style should be adapted to the different languages and new polices of characters containing glyphs^{2} for the characters used in other language than English should be defined. The style Babel and the new font 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 Dc font obeys more or less to the Iso Latin Set 1 standard, but many other code pages exist. The solutions to this problem are multiples:

• The use of on external program to do the translation. If the program is well interfaced with TEX (like the Tcp tables of 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.

• 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^{3}, 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 1.1) is not solved.

• The use of the standard convention to write accented character in TEX (i.e.\'e for é). This solution works well with 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.

• The use of the package 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.

1A code page is the convention for associating a character with a number used to represent it in a computer.

2Most 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.

3Some old driver don’t work with virtual fonts.

As one could see, no solution is totally perfect, this is due to the lack of a standard for code page not to TEX^{4}.

1.1 The hyphenation problem

The algorithm used in the TEX program to hyphenate word is based on patterns read when the format^{5} is build. During the build of the hyphenation table, all the characters are put to lowercase by using the \lccode value. When a string of characters in a text is to be hyphenated, it is put in lowercase by using the \lccode value and the compared with hyphenation table to find a good break point. If the pattern file use the \lccode values defined for the 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 \lccode are adapted to that code page^{6}. Despite this fact, the use of a pattern file containing characters above 127 is a good idea^{7}, because the results are surprisingly good (almost with French language). Moreover, the package codepage provides the command \MakeHyphenationLetter to adapt locally the \lccode value to a value usable by the \hyphenation command.

2 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:

\FourThreeSeven for the code page 437 of the PC; this code page is the standard code page used with English system.

\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.

\IsoOne Iso Latin set 1 (the windows characters).

\Mac Mac Intosh characters.

The TEX encoding are defined by two other constants:

\CM for the standard original TEX encoding. This code is defined on only 128 position and does not contain characters with diacritical marks.

\DC for the new code defined at Cork. When this code is chosen, the Dc fonts should be available.

Now the two main macros:

\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.

4If, 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...).

5A format is a precompiled version of commands used to composed a document.

6This is mandatory to have a correct behaviour with the command \uppercase and \lowercase, which transform a character in lower or upper case, according to the values: \lccode and \uccode.

7The 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.

New name  Original command

                              \Grave          \`
                              \Circumflex     \^
                              \Tilda          \~
                              \OverBar        \=
                              \UnderBar       \b
                              \Join           \t
                              \HungarUmlaut   \H
                              \Acute          \'
                              \Diaresis       \"
                              \Breve          \u
                              \OverDot        \.
                              \UnderDot       \d
                              \Tcheche        \v
                              \Cedille        \c

After the call of \codepage all the characters above 127 are “active”.

\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 \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 \lccode. In this case a warning is used, but this could affect only exceptionally the use of \hyphenation command^{8}. This macro is defined only when the Dc encoding is chosen.

\CurrentEncoding This macro contain the value of the encoding chosen. Its value is meaningful only after the call to the \codepage command.

Now we have some other macros defined by the package. Normally they should be quite rarely used:

\TRtrue to allow the translation of special characters (this is the default value !).

\TRfalse to suppress the translation of special character. This is useful when writing special characters into auxiliary (external) files like (.idx, .toc). Sometimes, the translation should be done only when these files are read again and not when they are written.

\AllActive put the \catcode for all characters above 127 to \active.

\AllOther put the \catcode for all characters above 127 to the value 12 (other).

\og draw the opening french guillomet (defined only when Cm encoding is used).

\fg draw the closing french guillomet (defined only when Cm encoding is used).

\atcatcode contain the value of the \catcode for the character @ or \relax outside the part of code where this \catcode is modified.

\CurrentEncoding contain the value of the TEX encoding choosen.

3 A short example (for L^{A}TEX2e)

   \documentclass{article}
      \usepackage{t1enc,codepage}
      {\MakeHyphenationLetter{\EightFiveZero}{è}
       \hyphenation{sys-tè-me sys-tè-mes}
      }
      \codepage{\EightFiveZero}{\DC}

8The tests done with the French language haven’t shown any problem, although some french letters are in conflict.

    \begin{document}
       Unix est un joli système d'exploitation.
    \end{document}

This example will work correctly if all the characters above 127 are usable. Some implementations (like Emtex) map all characters above 127 on character 127 or use special translation tables (Tcp tables for EmTeX). With Emtex the options /8 should be used when the format is generated.

4 The implementation

4.1 Introduction

The package is divided in three parts:

1. The drawing of characters^{9}.

2. The definition for the different code pages.

3. The interface.

Inside the package the characters above 127 are defined by commands whose names try to follow the standard defined by the Postscript language (\eacute will draw the character é). The definition of a code page is done by associating a character with the command which draw it. To be more precise the command \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 (\uccode and \lccode) are adapted to the values used in the code page to have a correct behaviour with the commands \uppercase and \lowercase. The change of \lccode prohibit correct hyphenation^{10}, therefore the command \MakeHyphenationLetter is provided to circumvent this problem.

4.2 File codepage.sty

First of all, a general purpose counter used in all package is declared:

1 ⟨∗codepage⟩

Now we save the category code for the character @

 2 \chardef\atcatcode=\catcode`\@
 3 \catcode`\@=11\relax

and we define some conditionals to be able to test:

• what format is used (because some commands do not exist in TEX)

• 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 \lowercase or \uppercase.

• if it’s the first time that the command \codepage is called, because the definition for the command drawing of accents should be saved just the first time (to avoid recursion problem).

 4 \newif\if@FirstCodePageCall
 5 \@FirstCodePageCalltrue
 6 \newif\ifTeX
 7 \newif\ifTR        % True if we do the translation of character
 8 \TRtrue

9Not all the characters in all code page could be represented in TEX.

10Generally, the hyphenation patterns are defined with the Dc characters and it’s not a good idea to modify this file to adapt it to a particular code page.

Here is the test to know if the format is plain TEX or L^{A}TEX. This code is stolen from [2].

 9 \expandafter\ifx\csname @currsize\endcsname\relax\TeXtrue\else\TeXfalse\fi
10 \ifTeX
11 \message{codepage.sty used in TeX context}%
12 \else
13 \typeout{codepage.sty used in LaTeX context}%
14 \fi

\@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.

15 \def\@BadHyphenCarMsg#1{%
16 \ifTeX
17  \message{Warning: the character \string #1 is not a character
18  to form a word}%
19  \message{Hyphenation can't be done with it}%
20 \else
21  \typeout{Warning: the character \string #1 is not a character
22  to form a word}%
23  \typeout{Hyphenation can't be done with it}%
24 \fi
25 }%@BadHyphenCarMsg

\@ConflictHyphenCarMsg Due to the manner to treat the hyphenation (see paragraph 4.4), some conflicts could arise between two characters for hyphenation. The two arguments of the macro are the two characters in conflict.

26 \def\@ConflictHyphenCarMsg#1#2{%
27 \ifTeX
28  \message{Warning the character #1 could be in conflict}%
29  \message{with character #2 for hyphenation algorithm !}%
30 \else
31  \typeout{Warning the character #1 could be in conflict}%
32  \typeout{with character #2 for hyphenation algorithm !}%
33 \fi
34 }%\@ConflictHyphenCarMsg

Now we could declare the interface of the package, first the definition of constants

35 \chardef\CM=0%                The target font is CM encoding
36 \chardef\DC=1%                The target font is DC encoding
37 \chardef\FourThreeSeven=0%    Code page 437
38 \chardef\EightFiveZero=1%     Code page 850
39 \chardef\IsoOne=2%            Iso latin set 1
40 \chardef\Mac=3%               Apple Mac Intosh characters

\codepage This is the main macro which take two parameters:

1. the source code page of the document;

2. the encoding scheme chosen for the output (T1 or OT1).

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.

41 \def\codepage#1#2{%
42 \chardef\CurrentEncoding=#2%
43 \if@FirstCodePageCall
44 \let\Grave=\`%
45 \let\Circumflex=\^%
46 \let\Tilda=\~%
47 \let\OverBar=\=%

48 \let\UnderBar=\b%
49 \let\Join=\t%
50 \let\HungarUmlaut=\H%
51 \let\Acute=\'%
52 \let\Diaresis=\"%
53 \let\Breve=\u%
54 \let\OverDot=\.%
55 \let\UnderDot=\d%
56 \let\Tcheche=\v%
57 \let\Cedille=\c%
58 \@FirstCodePageCallfalse
59 \fi

All the characters upper 127 are made active and the table for the code page of document is set.

60 \AllActive
61 \ifcase#1%
62 \input code437 %
63 \or
64 \input code850 %
65 \or
66 \input codeiso1 %
67 \or
68 \input codemac %
69 \fi

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 L^{A}TEX and the suppression of white space generated. Thus the same macro’s name could be used everywhere to put accent on character.

70 \let\@Grave=\`%
71 \let\@Aigu=\'%
72 \let\@OverBar=\=%
73 \ignorespaces
74 }%\codepage
\AllActive
75 \def\AllActive{%
76 \catcode`\^^80=\active \catcode`\^^81=\active \catcode`\^^82=\active
77 \catcode`\^^83=\active \catcode`\^^84=\active \catcode`\^^85=\active
78 \catcode`\^^86=\active \catcode`\^^87=\active \catcode`\^^88=\active
79 \catcode`\^^89=\active \catcode`\^^8a=\active \catcode`\^^8b=\active
80 \catcode`\^^8c=\active \catcode`\^^8d=\active \catcode`\^^8e=\active
81 \catcode`\^^8f=\active \catcode`\^^90=\active \catcode`\^^91=\active
82 \catcode`\^^92=\active \catcode`\^^93=\active \catcode`\^^94=\active
83 \catcode`\^^95=\active \catcode`\^^96=\active \catcode`\^^97=\active
84 \catcode`\^^98=\active \catcode`\^^99=\active \catcode`\^^9a=\active
85 \catcode`\^^9b=\active \catcode`\^^9c=\active \catcode`\^^9d=\active
86 \catcode`\^^9e=\active \catcode`\^^9f=\active \catcode`\^^a0=\active
87 \catcode`\^^a1=\active \catcode`\^^a2=\active \catcode`\^^a3=\active
88 \catcode`\^^a4=\active \catcode`\^^a5=\active \catcode`\^^a6=\active
89 \catcode`\^^a7=\active \catcode`\^^a8=\active \catcode`\^^a9=\active
90 \catcode`\^^aa=\active \catcode`\^^ab=\active \catcode`\^^ac=\active
91 \catcode`\^^ad=\active \catcode`\^^ae=\active \catcode`\^^af=\active
92 \catcode`\^^b0=\active \catcode`\^^b1=\active \catcode`\^^b2=\active
93 \catcode`\^^b3=\active \catcode`\^^b4=\active \catcode`\^^b5=\active
94 \catcode`\^^b6=\active \catcode`\^^b7=\active \catcode`\^^b8=\active
95 \catcode`\^^b9=\active \catcode`\^^ba=\active \catcode`\^^bb=\active
96 \catcode`\^^bc=\active \catcode`\^^bd=\active \catcode`\^^be=\active
97 \catcode`\^^bf=\active \catcode`\^^c0=\active \catcode`\^^c1=\active
98 \catcode`\^^c2=\active \catcode`\^^c3=\active \catcode`\^^c4=\active
99 \catcode`\^^c5=\active \catcode`\^^c6=\active \catcode`\^^c7=\active
100 \catcode`\^^c8=\active \catcode`\^^c9=\active \catcode`\^^ca=\active
101 \catcode`\^^cb=\active \catcode`\^^cc=\active \catcode`\^^cd=\active
102 \catcode`\^^ce=\active \catcode`\^^cf=\active \catcode`\^^d0=\active

103 \catcode`\^^d1=\active \catcode`\^^d2=\active \catcode`\^^d3=\active
104 \catcode`\^^d4=\active \catcode`\^^d5=\active \catcode`\^^d6=\active
105 \catcode`\^^d7=\active \catcode`\^^d8=\active \catcode`\^^d9=\active
106 \catcode`\^^da=\active \catcode`\^^db=\active \catcode`\^^dc=\active
107 \catcode`\^^dd=\active \catcode`\^^de=\active \catcode`\^^df=\active
108 \catcode`\^^e0=\active \catcode`\^^e1=\active \catcode`\^^e2=\active
109 \catcode`\^^e3=\active \catcode`\^^e4=\active \catcode`\^^e5=\active
110 \catcode`\^^e6=\active \catcode`\^^e7=\active \catcode`\^^e8=\active
111 \catcode`\^^e9=\active \catcode`\^^ea=\active \catcode`\^^eb=\active
112 \catcode`\^^ec=\active \catcode`\^^ed=\active \catcode`\^^ee=\active
113 \catcode`\^^ef=\active \catcode`\^^f0=\active \catcode`\^^f1=\active
114 \catcode`\^^f2=\active \catcode`\^^f3=\active \catcode`\^^f4=\active
115 \catcode`\^^f5=\active \catcode`\^^f6=\active \catcode`\^^f7=\active
116 \catcode`\^^f8=\active \catcode`\^^f9=\active \catcode`\^^fa=\active
117 \catcode`\^^fb=\active \catcode`\^^fc=\active \catcode`\^^fd=\active
118 \catcode`\^^fe=\active \catcode`\^^ff=\active
119 }% \AllActive
\AllOther
120 \def\AllOther{%

This definition is used to save space (two digits take twice as space than and macro) and to clarify the meaning of catcode.

121 \chardef\other=12\relax
122 \catcode`\^^80=\other \catcode`\^^81=\other \catcode`\^^82=\other
123 \catcode`\^^83=\other \catcode`\^^84=\other \catcode`\^^85=\other
124 \catcode`\^^86=\other \catcode`\^^87=\other \catcode`\^^88=\other
125 \catcode`\^^89=\other \catcode`\^^8a=\other \catcode`\^^8b=\other
126 \catcode`\^^8c=\other \catcode`\^^8d=\other \catcode`\^^8e=\other
127 \catcode`\^^8f=\other \catcode`\^^90=\other \catcode`\^^91=\other
128 \catcode`\^^92=\other \catcode`\^^93=\other \catcode`\^^94=\other
129 \catcode`\^^95=\other \catcode`\^^96=\other \catcode`\^^97=\other
130 \catcode`\^^98=\other \catcode`\^^99=\other \catcode`\^^9a=\other
131 \catcode`\^^9b=\other \catcode`\^^9c=\other \catcode`\^^9d=\other
132 \catcode`\^^9e=\other \catcode`\^^9f=\other \catcode`\^^a0=\other
133 \catcode`\^^a1=\other \catcode`\^^a2=\other \catcode`\^^a3=\other
134 \catcode`\^^a4=\other \catcode`\^^a5=\other \catcode`\^^a6=\other
135 \catcode`\^^a7=\other \catcode`\^^a8=\other \catcode`\^^a9=\other
136 \catcode`\^^aa=\other \catcode`\^^ab=\other \catcode`\^^ac=\other
137 \catcode`\^^ad=\other \catcode`\^^ae=\other \catcode`\^^af=\other
138 \catcode`\^^b0=\other \catcode`\^^b1=\other \catcode`\^^b2=\other
139 \catcode`\^^b3=\other \catcode`\^^b4=\other \catcode`\^^b5=\other
140 \catcode`\^^b6=\other \catcode`\^^b7=\other \catcode`\^^b8=\other
141 \catcode`\^^b9=\other \catcode`\^^ba=\other \catcode`\^^bb=\other
142 \catcode`\^^bc=\other \catcode`\^^bd=\other \catcode`\^^be=\other
143 \catcode`\^^bf=\other \catcode`\^^c0=\other \catcode`\^^c1=\other
144 \catcode`\^^c2=\other \catcode`\^^c3=\other \catcode`\^^c4=\other
145 \catcode`\^^c5=\other \catcode`\^^c6=\other \catcode`\^^c7=\other
146 \catcode`\^^c8=\other \catcode`\^^c9=\other \catcode`\^^ca=\other
147 \catcode`\^^cb=\other \catcode`\^^cc=\other \catcode`\^^cd=\other
148 \catcode`\^^ce=\other \catcode`\^^cf=\other \catcode`\^^d0=\other
149 \catcode`\^^d1=\other \catcode`\^^d2=\other \catcode`\^^d3=\other
150 \catcode`\^^d4=\other \catcode`\^^d5=\other \catcode`\^^d6=\other
151 \catcode`\^^d7=\other \catcode`\^^d8=\other \catcode`\^^d9=\other
152 \catcode`\^^da=\other \catcode`\^^db=\other \catcode`\^^dc=\other
153 \catcode`\^^dd=\other \catcode`\^^de=\other \catcode`\^^df=\other
154 \catcode`\^^e0=\other \catcode`\^^e1=\other \catcode`\^^e2=\other
155 \catcode`\^^e3=\other \catcode`\^^e4=\other \catcode`\^^e5=\other
156 \catcode`\^^e6=\other \catcode`\^^e7=\other \catcode`\^^e8=\other
157 \catcode`\^^e9=\other \catcode`\^^ea=\other \catcode`\^^eb=\other
158 \catcode`\^^ec=\other \catcode`\^^ed=\other \catcode`\^^ee=\other
159 \catcode`\^^ef=\other \catcode`\^^f0=\other \catcode`\^^f1=\other
160 \catcode`\^^f2=\other \catcode`\^^f3=\other \catcode`\^^f4=\other

161 \catcode`\^^f5=\other \catcode`\^^f6=\other \catcode`\^^f7=\other
162 \catcode`\^^f8=\other \catcode`\^^f9=\other \catcode`\^^fa=\other
163 \catcode`\^^fb=\other \catcode`\^^fc=\other \catcode`\^^fd=\other
164 \catcode`\^^fe=\other \catcode`\^^ff=\other
165 }% \AllOther

\MakeHyphenationLetter This macro allow a special letter to be use in a \hyphenation command to declare hyphenation exceptions. To do the hyphenation TEX will transform all the characters to lowercase (by using the \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 \lccode and the \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 Dc encoding. Thus a match is never possible. The macro \MakeHyphenationLetter will then change locally the value of \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 \hyphenation command.
166 \def\MakeHyphenationLetter#1#2{%
167 \ifcase#1%
168  \@MakeHyphenationFourThreeSeven{#2}%
169 \or
170  \@MakeHyphenationEightFiveZero{#2}%
171 \or
172  \@MakeHyphenationLatinOne{#2}%
173 \or
174  \@MakeHyphenationMac{#2}%
175 \fi
176 }% MakeHyphenationLetter

\@CarSmaller Macros that work only with L^{A}TEX, and draw character smaller (two steps less than current writing size ie. normalsize is set to footnotesize). With TEX this macros does nothing.

177 \def\@CarSmaller{\ifTeX
178  %Do nothing
179  \else
180  %We are in LaTeX
181  \ifx\@currsize\normalsize\relax
182  \footnotesize
183  \else
184  \ifx\@currsize\small\relax
185  \scriptsize
186  \else
187  \ifx\@currsize\footnotesize\relax
188  \tiny
189  \else
190  \ifx\@currsize\scriptsize\relax
191  \tiny % we cannot have less
192  \fi
193  \fi
194  \fi
195  \fi
196  \ifx\@currsize\large\relax
197  \small
198  \else
199  \ifx\@currsize\Large\relax
200  \normalsize
201  \else
202  \ifx\@currsize\LARGE\relax
203  \large
204  \else
205  \ifx\@currsize\huge\relax
206  \Large

207  \else
208  \ifx\@currsize\Huge\relax
209  \LARGE
210  \fi
211  \fi
212  \fi
213  \fi
214  \fi
215  \fi
216  }% \@CarSmaller
\@Sup
217 \def\@Sup#1{%
218  \ifmmode
219  ^{\hbox{\@CarSmaller #1}}%
220  \else
221  $^{\hbox{\@CarSmaller #1}}$%
222  \fi
223 }%\@Sup

\@Fraction Create a fraction (for one half, one quarter etc.)

224 \def\@Fraction#1#2{%
225  \ifmmode
226  \ifTeX
227  #1\over#2%
228  \else
229  \frac{#1}{#2}%
230  \fi
231  \else
232  \ifTeX
233  $#1\over#2$%
234  \else
235  $\frac{#1}{#2}$%
236  \fi
237  \fi
238 }%\@Fraction

\@MathSymbol MathSymbol defines its first parameter to print the mathematical symbol given as second parameter (given without \)

239 \def\@MathSymbol#1#2{%
240  %Do the global definitions
241  \gdef#1{\ifTR
242  \ifmmode
243  % Already in math ==> no $
244  \csname#2\endcsname
245  \else
246  $\csname#2\endcsname$%
247  \fi
248  \else
249  %No translation to do
250  \string#1%
251  \fi

252 }%

253  }%\@MathSymbol

\@InMath @InMath write its argument in mathematical mode (given without \)

254 \def\@InMath#1{%
255  \ifmmode
256  % Already in math ==> no $
257  \csname#1\endcsname
258  \else
259  $\csname#1\endcsname$%
260  \fi
261  }%\@InMath

\@UC
262 \def\@UC#1#2#3{%
263 \global\uccode`#1=#2\global\lccode`#1=#3%

264 }%

\@DefaultValue Define the default macro for an active character which could not be printed.

265 \def\@DefaultValue#1{%
266 \ifTeX
267 \message{The character No #1 doesn't exist in target
268  font (ignored) !}%
269 \else
270 \typeout{The character No #1 doesn't exist in target
271  font (ignored) !}%
272 \fi

273 }%

The last thing to do is to restore the value of @ character

274 \catcode`\@=\atcatcode \let\atcatcode\relax

275 ⟨/codepage⟩

4.3 The drawing of characters (Files shapecm.tex, 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. Two types of macros are provided:

• 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 codepage.tex).

• 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.

The auxiliary macros which are used are:

\@Sup to put its argument in superscript

\@Fraction to create a fraction with the first parameter over the second in smaller size than the current writing size.

\@CarSmaller which change the font to have a font two steps smaller than the current font (do nothing in TEX).

\@MathSymbol draw a predefined TEX math symbol.

\@UC just to have one macro for doing the same action many times.

276 ⟨∗shapecm⟩

277 \chardef\atcatcode=\catcode`\@
278 \catcode`\@=11\relax

\@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.

279 \gdef\@StartNewWord{\penalty\@M\hskip\z@skip}%

\@TreatDotLessCar Change a dot character to remove the dot when used with an accented character.

280 \gdef\@TreatDotLessCar#1#2{%
281  \@StartNewWord
282  \ifx#1i%
283  \csname#2\endcsname \i
284  \else
285  \ifx#1j%

286  \csname#2\endcsname \j
287  \else
288  \csname#2\endcsname #1%
289  \fi
290  \fi
291  \@StartNewWord}%
292 \gdef\`#1{{\@TreatDotLessCar{#1}{Grave}}}%
293 \gdef\^#1{{\@TreatDotLessCar{#1}{Circumflex}}}%
294 \gdef\~#1{{\@TreatDotLessCar{#1}{Tilda}}}%
295 \gdef\=#1{{\@TreatDotLessCar{#1}{OverBar}}}%
296 \gdef\b#1{{\underbar #1\@StartNewWord}}%
297 \gdef\t#1{{\@TreatDotLessCar{#1}{Join}}}%
298 \gdef\H#1{{\@TreatDotLessCar{#1}{HungarUmlaut}}}%
299 \gdef\'#1{{\@TreatDotLessCar{#1}{Acute}}}%
300 \gdef\"#1{{\@TreatDotLessCar{#1}{Diaresis}}}%
301 \gdef\u#1{{\@TreatDotLessCar{#1}{Breve}}}%
302 \gdef\.#1{{\@TreatDotLessCar{#1}{OverDot}}}%
303 \gdef\d#1{{\UnderDot #1\@StartNewWord}}%
304 \gdef\v#1{{\@TreatDotLessCar{#1}{Tcheche}}}%
305 \gdef\c#1{{\Cedille #1\@StartNewWord}}%

Now we should define the definition for the french quotation marks which aren’t defined in the Cm font. The code is taken from [3].

306 \gdef\og{\leavevmode\raise.3ex\hbox{$\scriptscriptstyle\langle\!\langle\,$}}%
307 \gdef\fg{\leavevmode\raise.3ex\hbox{$\scriptscriptstyle\,\rangle\!\rangle$}}%

This is a rudimentary code to obtain pounds sign in TEX mode.

308 \ifTeX\gdef\pounds{{\it\$}}\fi

The macros for defining a active character to draw its glyph has always three parameters:

1. The character in source font (should be active before the call)

2. The uppercase code

3. The lowercase code

309 \def\dieresis#1#2#3{%

This macro will define an active character to draw a “diaresis” character. The first thing to do is to set the \lccode and \uccode to values meaningful for the code page of the document.

310  \@UC{#1}{#2}{#3}%

Then, depending on the TEX encoding, the translation is done if the test \ifTR is true, else the character is left verbatim (with \catcode=12). When \ifTR is true, the character is written \char "xx for the Dc encoding and it is composed (i.e. \'e) for the Cm encoding.

311  \gdef#1{\ifTR\char"7F{}\else\string#1\fi}%

312 }%

313 \def\acute#1#2#3{%
314  \@UC{#1}{#2}{#3}%
315  \gdef#1{\ifTR\char"13{}\else\string#1\fi}%

316 }%

317 \def\cedilla#1#2#3{%
318  \@UC{#1}{#2}{#3}%
319  \gdef#1{\ifTR\char"18{}\else\string#1\fi}%

320 }%

321 \def\Agrave#1#2#3{%
322  \@UC{#1}{#2}{#3}%
323  \gdef#1{\ifTR\ifmmode\grave{A}\else\@Grave{A}\fi\else\string#1\fi}%

324 }%

325 \def\Aacute#1#2#3{%
326  \@UC{#1}{#2}{#3}%
327  \gdef#1{\ifTR\ifmmode\acute{A}\else\@Aigu{A}\fi\else\string#1\fi}%

328 }%

329 \def\Acircumflex#1#2#3{%

330  \@UC{#1}{#2}{#3}%
331  \gdef#1{\ifTR\ifmmode\hat{A}\else\^{A}\fi\else\string#1\fi}%

332 }%

333 \def\Atilde#1#2#3{%
334  \@UC{#1}{#2}{#3}%
335  \gdef#1{\ifTR\ifmmode\tilde{A}\else\~{A}\fi\else\string#1\fi}%

336 }%

337 \def\Adieresis#1#2#3{%
338  \@UC{#1}{#2}{#3}%
339  \gdef#1{\ifTR\ifmmode\ddot{A}\else\"{A}\fi\else\string#1\fi}%

340 }%

341 \def\Aring#1#2#3{%
342  \@UC{#1}{#2}{#3}%
343  \gdef#1{\ifTR\AA{}\else\string#1\fi}%

344 }%

345 \def\fiLigature#1#2#3{%
346  \@UC{#1}{#2}{#3}%
347  \gdef#1{\ifTR{fi}\else\string#1\fi}%

348 }%

349 \def\flLigature#1#2#3{%
350  \@UC{#1}{#2}{#3}%
351  \gdef#1{\ifTR{fl}\else\string#1\fi}%

352 }%

353 \def\AE#1#2#3{%
354  \@UC{#1}{#2}{#3}%
355  \gdef#1{\ifTR\AE{}\else\string#1\fi}%

356 }%

357 \def\Ccedilla#1#2#3{%
358  \@UC{#1}{#2}{#3}%
359  \gdef#1{\ifTR\c {C}\else\string#1\fi}%

360 }%

361 \def\Egrave#1#2#3{%
362  \@UC{#1}{#2}{#3}%
363  \gdef#1{\ifTR\ifmmode\grave{E}\else\@Grave{E}\fi\else\string#1\fi}%

364 }%

365 \def\Eacute#1#2#3{%
366  \@UC{#1}{#2}{#3}%
367  \gdef#1{\ifTR\ifmmode\acute{E}\else\@Aigu{E}\fi\else\string#1\fi}%

368 }%

369 \def\Ecircumflex#1#2#3{%
370  \@UC{#1}{#2}{#3}%
371  \gdef#1{\ifTR\ifmmode\hat{E}\else\^{E}\fi\else\string#1\fi}%

372 }%

373 \def\Edieresis#1#2#3{%
374  \@UC{#1}{#2}{#3}%
375  \gdef#1{\ifTR\ifmmode\ddot{E}\else\"{E}\fi\else\string#1\fi}%

376 }%

377 \def\Igrave#1#2#3{%
378  \@UC{#1}{#2}{#3}%
379  \gdef#1{\ifTR\ifmmode\grave{I}\else\@Grave{I}\fi\else\string#1\fi}%

380 }%

381 \def\Iacute#1#2#3{%
382  \@UC{#1}{#2}{#3}%
383  \gdef#1{\ifTR\ifmmode\acute{I}\else\@Aigu{I}\fi\else\string#1\fi}%

384 }%

385 \def\Icircumflex#1#2#3{%
386  \@UC{#1}{#2}{#3}%
387  \gdef#1{\ifTR\ifmmode\hat{I}\else\^{I}\fi\else\string#1\fi}%

388 }%

389 \def\Idieresis#1#2#3{%
390  \@UC{#1}{#2}{#3}%
391  \gdef#1{\ifTR\ifmmode\ddot{I}\else\"{I}\fi\else\string#1\fi}%

392 }%

393 \def\DBar#1#2#3{%
394  \@UC{#1}{#2}{#3}%
395  % nothing to do we use the default value

396 }%

397 \def\Ntilde#1#2#3{%
398  \@UC{#1}{#2}{#3}%
399  \gdef#1{\ifTR\ifmmode\tilde{N}\else\~{N}\fi\else\string#1\fi}%

400 }%

401 \def\Ograve#1#2#3{%
402  \@UC{#1}{#2}{#3}%
403  \gdef#1{\ifTR\ifmmode\grave{O}\else\@Grave{O}\fi\else\string#1\fi}%

404 }%

405 \def\Oacute#1#2#3{%
406  \@UC{#1}{#2}{#3}%
407  \gdef#1{\ifTR\ifmmode\acute{O}\else\@Aigu{O}\fi\else\string#1\fi}%

408 }%

409 \def\Ocircumflex#1#2#3{%
410  \@UC{#1}{#2}{#3}%
411  \gdef#1{\ifTR\ifmmode\hat{O}\else\^{O}\fi\else\string#1\fi}%

412 }%

413 \def\Otilde#1#2#3{%
414  \@UC{#1}{#2}{#3}%
415  \gdef#1{\ifTR\ifmmode\tilde{O}\else\~{O}\fi\else\string#1\fi}%

416 }%

417 \def\Odieresis#1#2#3{%
418  \@UC{#1}{#2}{#3}%
419  \gdef#1{\ifTR\ifmmode\ddot{O}\else\"{O}\fi\else\string#1\fi}%

420 }%

421 \def\Oslash#1#2#3{%
422  \@UC{#1}{#2}{#3}%
423  \gdef#1{\ifTR\O{}\else\string#1\fi}%

424 }%

425 \def\Ugrave#1#2#3{%
426  \@UC{#1}{#2}{#3}%
427  \gdef#1{\ifTR\ifmmode\grave{U}\else\@Grave{U}\fi\else\string#1\fi}%

428 }%

429 \def\Uacute#1#2#3{%
430  \@UC{#1}{#2}{#3}%
431  \gdef#1{\ifTR\ifmmode\acute{U}\else\@Aigu{U}\fi\else\string#1\fi}%

432 }%

433 \def\Ucircumflex#1#2#3{%
434  \@UC{#1}{#2}{#3}%
435  \gdef#1{\ifTR\ifmmode\hat{U}\else\^{U}\fi\else\string#1\fi}%

436 }%

437 \def\Udieresis#1#2#3{%
438  \@UC{#1}{#2}{#3}%
439  \gdef#1{\ifTR\ifmmode\ddot{U}\else\"{U}\fi\else\string#1\fi}%

440 }%

441 \def\Yacute#1#2#3{%
442  \@UC{#1}{#2}{#3}%
443  \gdef#1{\ifTR\ifmmode\acute{Y}\else\@Aigu{Y}\fi\else\string#1\fi}%

444 }%

445 \def\Thorn#1#2#3{%
446  \@UC{#1}{#2}{#3}%
447  % no definition in CM

448 }%

449 \def\germandbls#1#2#3{%
450  \@UC{#1}{#2}{#3}%
451  \gdef#1{\ifTR{SS}\else\string#1\fi}%

452 }%

453 \def\agrave#1#2#3{%

454  \@UC{#1}{#2}{#3}%
455  \gdef#1{\ifTR\ifmmode\grave{a}\else\@Grave{a}\fi\else\string#1\fi}%

456 }%

457 \def\aacute#1#2#3{%
458  \@UC{#1}{#2}{#3}%
459  \gdef#1{\ifTR\ifmmode\acute{a}\else\@Aigu{a}\fi\else\string#1\fi}%

460 }%

461 \def\acircumflex#1#2#3{%
462  \@UC{#1}{#2}{#3}%
463  \gdef#1{\ifTR\ifmmode\hat{a}\else\^{a}\fi\else\string#1\fi}%

464 }%

465 \def\atilde#1#2#3{%
466  \@UC{#1}{#2}{#3}%
467  \gdef#1{\ifTR\ifmmode\tilde{a}\else\~{a}\fi\else\string#1\fi}%

468 }%

469 \def\adieresis#1#2#3{%
470  \@UC{#1}{#2}{#3}%
471  \gdef#1{\ifTR\ifmmode\ddot{a}\else\"{a}\fi\else\string#1\fi}%

472 }%

473 \def\aring#1#2#3{%
474  \@UC{#1}{#2}{#3}%
475  \gdef#1{\ifTR\aa{}\else\string#1\fi}%

476 }%

477 \def\ae#1#2#3{%
478  \@UC{#1}{#2}{#3}%
479  \gdef#1{\ifTR\ae{}\else\string#1\fi}%

480 }%

481 \def\ccedilla#1#2#3{%
482  \@UC{#1}{#2}{#3}%
483  \gdef#1{\ifTR\c {c}\else\string#1\fi}%

484 }%

485 \def\egrave#1#2#3{%
486  \@UC{#1}{#2}{#3}%
487  \gdef#1{\ifTR\ifmmode\grave{e}\else\@Grave{e}\fi\else\string#1\fi}%

488 }%

489 \def\eacute#1#2#3{%
490  \@UC{#1}{#2}{#3}%
491  \gdef#1{\ifTR\ifmmode\acute{e}\else\@Aigu{e}\fi\else\string#1\fi}%

492 }%

493 \def\ecircumflex#1#2#3{%
494  \@UC{#1}{#2}{#3}%
495  \gdef#1{\ifTR\ifmmode\hat{e}\else\^{e}\fi\else\string#1\fi}%

496 }%

497 \def\edieresis#1#2#3{%
498  \@UC{#1}{#2}{#3}%
499  \gdef#1{\ifTR\ifmmode\ddot{e}\else\"{e}\fi\else\string#1\fi}%

500 }%

501 \def\igrave#1#2#3{%
502  \@UC{#1}{#2}{#3}%
503  \gdef#1{\ifTR\ifmmode\grave{i}\else\@Grave{i}\fi\else\string#1\fi}%

504 }%

505 \def\iacute#1#2#3{%
506  \@UC{#1}{#2}{#3}%
507  \gdef#1{\ifTR\ifmmode\acute{i}\else\@Aigu{i}\fi\else\string#1\fi}%

508 }%

509 \def\icircumflex#1#2#3{%
510  \@UC{#1}{#2}{#3}%
511  \gdef#1{\ifTR\ifmmode\hat{i}\else\^{i}\fi\else\string#1\fi}%

512 }%

513 \def\idieresis#1#2#3{%
514  \@UC{#1}{#2}{#3}%
515  \gdef#1{\ifTR\ifmmode\ddot{i}\else\"{i}\fi\else\string#1\fi}%

516 }%

517 \def\dBar#1#2#3{%
518  \@UC{#1}{#2}{#3}%
519  % no definition in CM

520 }%

521 \def\ntilde#1#2#3{%
522  \@UC{#1}{#2}{#3}%
523  \gdef#1{\ifTR\ifmmode\tilde{n}\else\~{n}\fi\else\string#1\fi}%

524 }%

525 \def\ograve#1#2#3{%
526  \@UC{#1}{#2}{#3}%
527  \gdef#1{\ifTR\ifmmode\grave{o}\else\@Grave{o}\fi\else\string#1\fi}%

528 }%

529 \def\oacute#1#2#3{%
530  \@UC{#1}{#2}{#3}%
531  \gdef#1{\ifTR\ifmmode\acute{o}\else\@Aigu{o}\fi\else\string#1\fi}%

532 }%

533 \def\ocircumflex#1#2#3{%
534  \@UC{#1}{#2}{#3}%
535  \gdef#1{\ifTR\ifmmode\hat{o}\else\^{o}\fi\else\string#1\fi}%

536 }%

537 \def\otilde#1#2#3{%
538  \@UC{#1}{#2}{#3}%
539  \gdef#1{\ifTR\ifmmode\tilde{o}\else\~{o}\fi\else\string#1\fi}%

540 }%

541 \def\odieresis#1#2#3{%
542  \@UC{#1}{#2}{#3}%
543  \gdef#1{\ifTR\ifmmode\ddot{o}\else\"{o}\fi\else\string#1\fi}%

544 }%

545 \def\OE#1#2#3{%
546  \@UC{#1}{#2}{#3}%
547  \gdef#1{\ifTR\OE{}\else\string#1\fi}%

548 }%

549 \def\oe#1#2#3{%
550  \@UC{#1}{#2}{#3}%
551  \gdef#1{\ifTR\oe{}\else\string#1\fi}%

552 }%

553 \def\oslash#1#2#3{%
554  \@UC{#1}{#2}{#3}%
555  \gdef#1{\ifTR\o{}\else\string#1\fi}%

556 }%

557 \def\ugrave#1#2#3{%
558  \@UC{#1}{#2}{#3}%
559  \gdef#1{\ifTR\ifmmode\grave{u}\else\@Grave{u}\fi\else\string#1\fi}%

560 }%

561 \def\uacute#1#2#3{%
562  \@UC{#1}{#2}{#3}%
563  \gdef#1{\ifTR\ifmmode\acute{u}\else\@Aigu{u}\fi\else\string#1\fi}%

564 }%

565 \def\ucircumflex#1#2#3{%
566  \@UC{#1}{#2}{#3}%
567  \gdef#1{\ifTR\ifmmode\hat{u}\else\^{u}\fi\else\string#1\fi}%

568 }%

569 \def\udieresis#1#2#3{%
570  \@UC{#1}{#2}{#3}%
571  \gdef#1{\ifTR\ifmmode\ddot{u}\else\"{u}\fi\else\string#1\fi}%

572 }%

573 \def\yacute#1#2#3{%
574  \@UC{#1}{#2}{#3}%
575  \gdef#1{\ifTR\ifmmode\acute{y}\else\@Aigu{y}\fi\else\string#1\fi}%

576 }%

577 \def\thorn#1#2#3{%

578  \@UC{#1}{#2}{#3}%
579  % no definition in CM

580 }%

581 \def\ydieresis#1#2#3{%
582  \@UC{#1}{#2}{#3}%
583  \gdef#1{\ifTR\ifmmode\ddot{y}\else\"{y}\fi\else\string#1\fi}%

584 }%

585 \def\Ydieresis#1#2#3{%
586  \@UC{#1}{#2}{#3}%
587  \gdef#1{\ifTR\ifmmode\ddot{Y}\else\"{Y}\fi\else\string#1\fi}%

588 }% 589 %

590 \def\alpha#1#2#3{%
591  \@UC{#1}{#2}{#3}%
592  \@MathSymbol{#1}{alpha}%

593 }%

594 \def\approx#1#2#3{%
595  \@UC{#1}{#2}{#3}%
596  \@MathSymbol{#1}{approx}%

597 }%

598 \def\beta#1#2#3{%
599  \@UC{#1}{#2}{#3}%
600  \@MathSymbol{#1}{beta}%

601 }%

602 \def\bullet#1#2#3{%
603  \@UC{#1}{#2}{#3}%
604  \@MathSymbol{#1}{bullet}%

605 }%

606 \def\cap#1#2#3{%
607  \@UC{#1}{#2}{#3}%
608  \@MathSymbol{#1}{cap}%

609 }%

610 \def\cent#1#2#3{%
611  \@UC{#1}{#2}{#3}%
612  % no definition in CM
613  % no definition in DC

614 }%

615 \def\guillemeotright#1#2#3{%
616  \@UC{#1}{#2}{#3}%
617  \gdef#1{\ifTR\fg{}\else\string#1\fi}%

618 }%

619 \def\copyright#1#2#3{%
620  \@UC{#1}{#2}{#3}%
621  \gdef#1{\ifTR\copyright{}\else\string#1\fi}%

622 }%

623 \def\currency#1#2#3{% character hex A4 in Iso latin set 1
624  \@UC{#1}{#2}{#3}%
625  % no definition in CM

626 }%

627 \def\degree#1#2#3{%
628  \@UC{#1}{#2}{#3}%

629 }%

630 \def\dag#1#2#3{%
631  \@UC{#1}{#2}{#3}%
632  \@MathSymbol{#1}{dag}%

633 }%

634 \def\ddag#1#2#3{%
635  \@UC{#1}{#2}{#3}%
636  \@MathSymbol{#1}{ddag}%

637 }%

638 \def\delta#1#2#3{%
639  \@UC{#1}{#2}{#3}%

640  \@MathSymbol{#1}{delta}%

641 }%

642 \def\div#1#2#3{%
643  \@UC{#1}{#2}{#3}%
644  \@MathSymbol{#1}{div}%

645 }%

646 \def\diamond#1#2#3{%
647  \@UC{#1}{#2}{#3}%
648  \@MathSymbol{#1}{Diamond}%

649 }%

650 \def\emptysetSign#1#2#3{%
651  \@UC{#1}{#2}{#3}%
652  \@MathSymbol{#1}{emptyset}% is nicer than epsilon

653 }%

654 \def\section#1#2#3{%
655  \@UC{#1}{#2}{#3}%
656  \gdef#1{\ifTR{\S}\else\string#1\fi}%

657 }%

658 \def\epsilon#1#2#3{%
659  \@UC{#1}{#2}{#3}%
660  \@MathSymbol{#1}{varepsilon}% is nicer than epsilon

661 }%

662 \def\equiv#1#2#3{%
663  \@UC{#1}{#2}{#3}%
664  \@MathSymbol{#1}{equiv}%

665 }%

666 \def\ellipsis#1#2#3{%
667  \@UC{#1}{#2}{#3}%
668  \gdef#1{\ifTR{...}\else\string#1\fi}%

669 }%

670 \def\exclamdown#1#2#3{%
671  \@UC{#1}{#2}{#3}%
672  \gdef#1{\ifTR{!`}\else\string#1\fi}%

673 }%

674 \def\ordfeminine#1#2#3{%
675  \@UC{#1}{#2}{#3}%
676  \gdef#1{\ifTR\@Sup{\b{a}}\else\string#1\fi}%

677 }%

678 \def\geq#1#2#3{%
679  \@UC{#1}{#2}{#3}%
680  \@MathSymbol{#1}{geq}%

681 }%

682 \def\Gamma#1#2#3{%
683  \@UC{#1}{#2}{#3}%
684  \@MathSymbol{#1}{Gamma}%

685 }%

686 \def\infty#1#2#3{%
687  \@UC{#1}{#2}{#3}%
688  \@MathSymbol{#1}{infty}%

689 }%

690 \def\leq#1#2#3{%
691  \@UC{#1}{#2}{#3}%
692  \@MathSymbol{#1}{leq}%

693 }%

694 \def\emdash#1#2#3{%
695  \@UC{#1}{#2}{#3}%
696  \gdef#1{\ifTR{---}\else\string#1\fi}%

697 }%

698 \def\ordmasculine#1#2#3{%
699  \@UC{#1}{#2}{#3}%
700  \gdef#1{\ifTR\@Sup{\b{o}}\else\string#1\fi}%

701 }%

702 \def\mu#1#2#3{%
703  \@UC{#1}{#2}{#3}%
704  \@MathSymbol{#1}{mu}%

705 }%

706 \def\neg#1#2#3{%
707  \@UC{#1}{#2}{#3}%
708  \@MathSymbol{#1}{neg}%

709 }%

710 \def\neq#1#2#3{%
711  \@UC{#1}{#2}{#3}%
712  \@MathSymbol{#1}{neq}%

713 }%

714 \def\unbreakablespace#1#2#3{%
715  \@UC{#1}{#2}{#3}%
716  \gdef#1{\ifTR~\else\string#1\fi}%

717 }%

718 \def\Omega#1#2#3{%
719  \@UC{#1}{#2}{#3}%
720  \@MathSymbol{#1}{Omega}%

721 }%

722 \def\OneHalf#1#2#3{%
723  \@UC{#1}{#2}{#3}%
724  \gdef#1{\ifTR{\@Fraction{1}{2}}\else\string#1\fi}%

725 }%

726 \def\OneQuarter#1#2#3{%
727  \@UC{#1}{#2}{#3}%
728  \gdef#1{\ifTR{\@Fraction{1}{4}}\else\string#1\fi}%

729 }%

730 \def\guilletmotleft#1#2#3{%
731  \@UC{#1}{#2}{#3}%
732  \gdef#1{\ifTR\og{}\else\string#1\fi}%

733 }%

734 \def\Pi#1#2#3{%
735  \@UC{#1}{#2}{#3}%
736  \@MathSymbol{#1}{Pi}%

737 }%

738 \def\pi#1#2#3{%
739  \@UC{#1}{#2}{#3}%
740  \@MathSymbol{#1}{pi}%

741 }%

742 \def\pm#1#2#3{%
743  \@UC{#1}{#2}{#3}%
744  \@MathSymbol{#1}{pm}%

745 }%

746 \def\ParagraphSign#1#2#3{%
747  \@UC{#1}{#2}{#3}%
748  \gdef#1{\ifTR{\P}\else\string#1\fi}%

749 }%

750 \def\partial#1#2#3{%
751  \@UC{#1}{#2}{#3}%
752  \@MathSymbol{#1}{partial}%

753 }%

754 \def\Phi#1#2#3{%
755  \@UC{#1}{#2}{#3}%
756  \@MathSymbol{#1}{Phi}%

757 }%

758 \def\pounds#1#2#3{%
759  \@UC{#1}{#2}{#3}%
760  \gdef#1{\ifTR\pounds{}\else\string#1\fi}%

761 }%

762 \def\powerone#1#2#3{%
763  \@UC{#1}{#2}{#3}%

764  \gdef#1{\ifTR{\@Sup{1}}\else\string#1\fi}%

765 }%

766 \def\powerthree#1#2#3{%
767  \@UC{#1}{#2}{#3}%
768  \gdef#1{\ifTR{\@Sup{3}}\else\string#1\fi}%

769 }%

770 \def\powertwo#1#2#3{%
771  \@UC{#1}{#2}{#3}%
772  \gdef#1{\ifTR{\@Sup{2}}\else\string#1\fi}%

773 }%

774 \def\questiondown#1#2#3{%
775  \@UC{#1}{#2}{#3}%
776  \gdef#1{\ifTR{?`}\else\string#1\fi}%

777 }%

778 \def\register#1#2#3{%
779  \@UC{#1}{#2}{#3}%
780  % no definition in CM
781  % no definition in DC

782 }%

783 \def\Sigma#1#2#3{%
784  \@UC{#1}{#2}{#3}%
785  \@MathSymbol{#1}{Sigma}%

786 }%

787 \def\sigma#1#2#3{%
788  \@UC{#1}{#2}{#3}%
789  \@MathSymbol{#1}{sigma}%

790 }%

791 \def\quoteright#1#2#3{%
792  \@UC{#1}{#2}{#3}%
793  \gdef#1{\ifTR{'}\else\string#1\fi}%

794 }%

795 \def\quoteleft#1#2#3{%
796  \@UC{#1}{#2}{#3}%
797  \gdef#1{\ifTR{`}\else\string#1\fi}%

798 }%

799 \def\splitbar#1#2#3{%
800  \@UC{#1}{#2}{#3}%
801  % no definition in CM

802 }%

803 \def\tau#1#2#3{%
804  \@UC{#1}{#2}{#3}%
805  \@MathSymbol{#1}{tau}%

806 }%

807 \def\ThetaSign#1#2#3{%
808  \@UC{#1}{#2}{#3}%
809  \@MathSymbol{#1}{Theta}%

810 }%

811 \def\threequarter#1#2#3{%
812  \@UC{#1}{#2}{#3}%
813  \gdef#1{\ifTR{\@Fraction{3}{4}}\else\string#1\fi}%

814 }%

815 \def\times#1#2#3{%
816  \@UC{#1}{#2}{#3}%
817  \@MathSymbol{#1}{times}%

818 }%

819 \def\trademark#1#2#3{%
820  \@UC{#1}{#2}{#3}%
821  \gdef#1{\ifTR\@Sup{TM}\else\string#1\fi}%

822 }%

823 \def\quotedblright#1#2#3{%
824  \@UC{#1}{#2}{#3}%
825  \gdef#1{\ifTR{''}\else\string#1\fi}%

826 }%

827 \def\quotedblleft#1#2#3{%
828  \@UC{#1}{#2}{#3}%
829  \gdef#1{\ifTR{``}\else\string#1\fi}%

830 }%

831 \def\yen#1#2#3{%
832  \@UC{#1}{#2}{#3}%
833  % no definition in CM
834  % no definition in DC

835 }%

836 \def\perthousand#1#2#3{%
837  \@UC{#1}{#2}{#3}%
838  % no definition in CM
839  % no definition in DC

840 }%

841 \def\florin#1#2#3{%
842  \@UC{#1}{#2}{#3}%
843  \gdef#1{\ifTR{\it f}\else\string#1\fi}%

844 }%

845 \catcode`\@=\atcatcode \let\atcatcode\relax

846 ⟨/shapecm⟩ These macros redefines all the effect of the macros to put accents on characters in order to produce directly the character in the font Dc. The code is stolen from the file DCLFONT.STY from the Nfss distribution. Two reasons have dictated this choice:

• When Nfss is not used, the composition of character+accent will give directly the accented character;

• When 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.

The first thing to do is to save the catcode of @ character. 847 ⟨∗shapedc⟩

848 \chardef\atcatcode=\catcode`\@
849 \catcode`\@=11\relax
850 \global\chardef\aa="0E5%
851 \global\chardef\ae="0E6%
852 \global\chardef\l="0AA%
853 \global\chardef\oe="0F7%
854 \global\chardef\o="0F8%
855 \global\chardef\ss="0FF%
856 \global\chardef\AA="0C5%
857 \global\chardef\AE="0C6%
858 \global\chardef\L="8A%
859 \global\chardef\OE="0D7%
860 \global\chardef\O="0D8%
861 \global\chardef\SS="0DF%
862 \global\chardef\i="19%
863 \global\chardef\j="1A%
864 \global\chardef\pounds="0BF%
865 \gdef\hbar{{\mathchar'11\mkern-9muh}}%
866 \def\@accent@def#1#2#3{\expandafter\gdef
867  \csname @#1@\string#2@#1@\endcsname{#3}}%
868 \gdef\@accent@use#1#2#3{%
869 \expandafter\ifx \csname @#1@\string#3@#1@\endcsname \relax
870  {\accent#2 #3}%
871  \else  \csname @#1@\string#3@#1@\endcsname\fi}%
872 \gdef\`{\@accent@use{grave}{0}}%
873 \let\@accii=\`%
874 \@accent@def{grave}{a}{\char"E0{}}%
875 \@accent@def{grave}{e}{\char"E8{}}%
876 \@accent@def{grave}{\i}{\char"EC{}}%

877 \@accent@def{grave}{i}{\char"EC{}}%
878 \@accent@def{grave}{o}{\char"F2{}}%
879 \@accent@def{grave}{u}{\char"F9{}}%
880 \@accent@def{grave}{A}{\char"C0{}}%
881 \@accent@def{grave}{E}{\char"C8{}}%
882 \@accent@def{grave}{I}{\char"CC{}}%
883 \@accent@def{grave}{O}{\char"D2{}}%
884 \@accent@def{grave}{U}{\char"D9{}}%
885 \gdef\'{\@accent@use{acute}{1}}%
886 \let\@acci=\'%
887 \@accent@def{acute}{n}{\char"AB{}}%
888 \@accent@def{acute}{l}{\char"A8{}}%
889 \@accent@def{acute}{r}{\char"AF{}}%
890 \@accent@def{acute}{s}{\char"B1{}}%
891 \@accent@def{acute}{z}{\char"B9{}}%
892 \@accent@def{acute}{a}{\char"E1{}}%
893 \@accent@def{acute}{e}{\char"E9{}}%
894 \@accent@def{acute}{\i}{\char"ED{}}%
895 \@accent@def{acute}{i}{\char"ED{}}%
896 \@accent@def{acute}{o}{\char"F3{}}%
897 \@accent@def{acute}{u}{\char"FA{}}%
898 \@accent@def{acute}{y}{\char"FD{}}%
899 \@accent@def{acute}{N}{\char"8B{}}%
900 \@accent@def{acute}{L}{\char"88{}}%
901 \@accent@def{acute}{R}{\char"8F{}}%
902 \@accent@def{acute}{S}{\char"91{}}%
903 \@accent@def{acute}{Z}{\char"99{}}%
904 \@accent@def{acute}{A}{\char"C1{}}%
905 \@accent@def{acute}{E}{\char"C9{}}%
906 \@accent@def{acute}{I}{\char"CD{}}%
907 \@accent@def{acute}{O}{\char"D3{}}%
908 \@accent@def{acute}{U}{\char"DA{}}%
909 \@accent@def{acute}{Y}{\char"DD{}}%
910 \@accent@def{acute}{c}{\char"A2{}}%
911 \@accent@def{acute}{C}{\char"82{}}%
912 \gdef\v{\@accent@use{check}{7}}%
913 \@accent@def{check}{c}{\char"A3{}}%
914 \@accent@def{check}{e}{\char"A5{}}%
915 \@accent@def{check}{n}{\char"AC{}}%
916 \@accent@def{check}{r}{\char"B0{}}%
917 \@accent@def{check}{s}{\char"B2{}}%
918 \@accent@def{check}{z}{\char"BA{}}%
919 \@accent@def{check}{C}{\char"83{}}%
920 \@accent@def{check}{D}{\char"84{}}%
921 \@accent@def{check}{E}{\char"85{}}%
922 \@accent@def{check}{N}{\char"8C{}}%
923 \@accent@def{check}{R}{\char"90{}}%
924 \@accent@def{check}{S}{\char"92{}}%
925 \@accent@def{check}{T}{\char"94{}}%
926 \@accent@def{check}{Z}{\char"9A{}}%
927 \gdef\u{\@accent@use{breve}{8}}%
928 \@accent@def{breve}{a}{\char"A0{}}%
929 \@accent@def{breve}{g}{\char"A7{}}%
930 \@accent@def{breve}{A}{\char"80{}}%
931 \@accent@def{breve}{G}{\char"87{}}%
932 \gdef\=#1{{\accent9 #1}}%
933 \let\@acciii=\=%
934 \gdef\^{\@accent@use{circflx}{2}}%
935 \@accent@def{circflx}{a}{\char"E2{}}%
936 \@accent@def{circflx}{e}{\char"EA{}}%
937 \@accent@def{circflx}{\i}{\char"EE{}}%
938 \@accent@def{circflx}{i}{\char"EE{}}%

939 \@accent@def{circflx}{o}{\char"F4{}}%
940 \@accent@def{circflx}{u}{\char"FB{}}%
941 \@accent@def{circflx}{A}{\char"C2{}}%
942 \@accent@def{circflx}{E}{\char"CA{}}%
943 \@accent@def{circflx}{I}{\char"CE{}}%
944 \@accent@def{circflx}{O}{\char"D4{}}%
945 \@accent@def{circflx}{U}{\char"DB{}}%
946 \gdef\.{\@accent@use{dot}{10}}%
947 \@accent@def{dot}{z}{\char"BB{}}%
948 \@accent@def{dot}{Z}{\char"9B{}}%
949 \@accent@def{dot}{I}{\char"9D{}}%
950 \@accent@def{dot}{i}{i}%
951 \gdef\H{\@accent@use{Hung}{5}}%
952 \@accent@def{Hung}{o}{\char"AE{}}%
953 \@accent@def{Hung}{u}{\char"B6{}}%
954 \@accent@def{Hung}{O}{\char"8E{}}%
955 \@accent@def{Hung}{U}{\char"96{}}%
956 \gdef\~{\@accent@use{tilde}{3}}%
957 \@accent@def{tilde}{a}{\char"E3{}}%
958 \@accent@def{tilde}{n}{\char"F1{}}%
959 \@accent@def{tilde}{o}{\char"F5{}}%
960 \@accent@def{tilde}{A}{\char"C3{}}%
961 \@accent@def{tilde}{N}{\char"D1{}}%
962 \@accent@def{tilde}{O}{\char"D5{}}%
963 \gdef\"{\@accent@use{Umlaut}{4}}%
964 \@accent@def{Umlaut}{a}{\char"E4{}}%
965 \@accent@def{Umlaut}{e}{\char"EB{}}%
966 \@accent@def{Umlaut}{\i}{\char"EF{}}%
967 \@accent@def{Umlaut}{i}{\char"EF{}}%
968 \@accent@def{Umlaut}{o}{\char"F6{}}%
969 \@accent@def{Umlaut}{u}{\char"FC{}}%
970 \@accent@def{Umlaut}{A}{\char"C4{}}%
971 \@accent@def{Umlaut}{E}{\char"CB{}}%
972 \@accent@def{Umlaut}{I}{\char"CF{}}%
973 \@accent@def{Umlaut}{O}{\char"D6{}}%
974 \@accent@def{Umlaut}{U}{\char"DC{}}%
975 \gdef\pb#1{\oalign{#1\crcr\hidewidth
976  \vbox to.2ex{\hbox{\char9}\vss}\hidewidth}}%
977 \gdef\pc#1{\expandafter\ifx
978  \csname @cedilla@\string#1@cedilla@\endcsname \relax
979  \c@dilla#1\else \csname @cedilla@\string#1@cedilla@\endcsname\fi}%
980 \@accent@def{cedilla}{s}{\char"B3{}}%
981 \@accent@def{cedilla}{t}{\char"B5{}}%
982 \@accent@def{cedilla}{c}{\char"E7{}}%
983 \@accent@def{cedilla}{S}{\char"93{}}%
984 \@accent@def{cedilla}{T}{\char"95{}}%
985 \@accent@def{cedilla}{C}{\char"C7{}}%
986 \gdef\c@dilla#1{\setbox\z@\hbox{#1}\ifdim\ht\z@=1ex\accent11 #1%
987 \else{\ooalign{\hidewidth\char11\hidewidth\crcr\unhbox\z@}}\fi}%

988 %

989 \def\dieresis#1#2#3{%
990  \@UC{#1}{#2}{#3}%
991  \gdef#1{\ifTR\char'004{}\else\string#1\fi}%

992 }%

993 \def\acute#1#2#3{%
994  \@UC{#1}{#2}{#3}%
995  \gdef#1{\ifTR\char"01{}\else\string#1\fi}%

996 }%

997 \def\cedilla#1#2#3{%
998  \@UC{#1}{#2}{#3}%
999  \gdef#1{\ifTR\char"0D{}\else\string#1\fi}%

1000 }%

1001 \def\Agrave#1#2#3{%
1002  \@UC{#1}{#2}{#3}%
1003  \gdef#1{\ifTR\char"C0{}\else\string#1\fi}%

1004 }%

1005 \def\Aacute#1#2#3{%
1006  \@UC{#1}{#2}{#3}%
1007  \gdef#1{\ifTR\char"C1{}\else\string#1\fi}%

1008 }%

1009 \def\Acircumflex#1#2#3{%
1010  \@UC{#1}{#2}{#3}%
1011  \gdef#1{\ifTR\char"C2{}\else\string#1\fi}%

1012 }%

1013 \def\Atilde#1#2#3{%
1014  \@UC{#1}{#2}{#3}%
1015  \gdef#1{\ifTR\char"C3{}\else\string#1\fi}%

1016 }%

1017 \def\Adieresis#1#2#3{%
1018  \@UC{#1}{#2}{#3}%
1019  \gdef#1{\ifTR\char"C4{}\else\string#1\fi}%

1020 }%

1021 \def\Aring#1#2#3{%
1022  \@UC{#1}{#2}{#3}%
1023  \gdef#1{\ifTR\char"C5{}\else\string#1\fi}%

1024 }%

1025 \def\fiLigature#1#2#3{%
1026  \@UC{#1}{#2}{#3}%
1027  \gdef#1{\ifTR{fi}\else\string#1\fi}%

1028 }%

1029 \def\flLigature#1#2#3{%
1030  \@UC{#1}{#2}{#3}%
1031  \gdef#1{\ifTR{fl}\else\string#1\fi}%

1032 }%

1033 \def\AE#1#2#3{%
1034  \@UC{#1}{#2}{#3}%
1035  \gdef#1{\ifTR\char"C6{}\else\string#1\fi}%

1036 }%

1037 \def\Ccedilla#1#2#3{%
1038  \@UC{#1}{#2}{#3}%
1039  \gdef#1{\ifTR\char"C7{}\else\string#1\fi}%

1040 }%

1041 \def\Egrave#1#2#3{%
1042  \@UC{#1}{#2}{#3}%
1043  \gdef#1{\ifTR\char"C8{}\else\string#1\fi}%

1044 }%

1045 \def\Eacute#1#2#3{%
1046  \@UC{#1}{#2}{#3}%
1047  \gdef#1{\ifTR\char"C9{}\else\string#1\fi}%

1048 }%

1049 \def\Ecircumflex#1#2#3{%
1050  \@UC{#1}{#2}{#3}%
1051  \gdef#1{\ifTR\char"CA{}\else\string#1\fi}%

1052 }%

1053 \def\Edieresis#1#2#3{%
1054  \@UC{#1}{#2}{#3}%
1055  \gdef#1{\ifTR\char"CB{}\else\string#1\fi}%

1056 }%

1057 \def\Igrave#1#2#3{%
1058  \@UC{#1}{#2}{#3}%
1059  \gdef#1{\ifTR\char"CC{}\else\string#1\fi}%

1060 }%

1061 \def\Iacute#1#2#3{%
1062  \@UC{#1}{#2}{#3}%

1063  \gdef#1{\ifTR\char"CD{}\else\string#1\fi}%

1064 }%

1065 \def\Icircumflex#1#2#3{%
1066  \@UC{#1}{#2}{#3}%
1067  \gdef#1{\ifTR\char"CE{}\else\string#1\fi}%

1068 }%

1069 \def\Idieresis#1#2#3{%
1070  \@UC{#1}{#2}{#3}%
1071  \gdef#1{\ifTR\char"CF{}\else\string#1\fi}%

1072 }%

1073 \def\DBar#1#2#3{%
1074  \@UC{#1}{#2}{#3}%
1075  \gdef#1{\ifTR\char"D0{}\else\string#1\fi}%

1076 }%

1077 \def\Ntilde#1#2#3{%
1078  \@UC{#1}{#2}{#3}%
1079  \gdef#1{\ifTR\char"D1{}\else\string#1\fi}%

1080 }%

1081 \def\Ograve#1#2#3{%
1082  \@UC{#1}{#2}{#3}%
1083  \gdef#1{\ifTR\char"D2{}\else\string#1\fi}%

1084 }%

1085 \def\Oacute#1#2#3{%
1086  \@UC{#1}{#2}{#3}%
1087  \gdef#1{\ifTR\char"D3{}\else\string#1\fi}%

1088 }%

1089 \def\Ocircumflex#1#2#3{%
1090  \@UC{#1}{#2}{#3}%
1091  \gdef#1{\ifTR\char"D4{}\else\string#1\fi}%

1092 }%

1093 \def\Otilde#1#2#3{%
1094  \@UC{#1}{#2}{#3}%
1095  \gdef#1{\ifTR\char"D5{}\else\string#1\fi}%

1096 }%

1097 \def\Odieresis#1#2#3{%
1098  \@UC{#1}{#2}{#3}%
1099  \gdef#1{\ifTR\char"D6{}\else\string#1\fi}%

1100 }%

1101 \def\Oslash#1#2#3{%
1102  \@UC{#1}{#2}{#3}%
1103  \gdef#1{\ifTR\char"D8{}\else\string#1\fi}%

1104 }%

1105 \def\Ugrave#1#2#3{%
1106  \@UC{#1}{#2}{#3}%
1107  \gdef#1{\ifTR\char"D9{}\else\string#1\fi}%

1108 }%

1109 \def\Uacute#1#2#3{%
1110  \@UC{#1}{#2}{#3}%
1111  \gdef#1{\ifTR\char"DA{}\else\string#1\fi}%

1112 }%

1113 \def\Ucircumflex#1#2#3{%
1114  \@UC{#1}{#2}{#3}%
1115  \gdef#1{\ifTR\char"DB{}\else\string#1\fi}%

1116 }%

1117 \def\Udieresis#1#2#3{%
1118  \@UC{#1}{#2}{#3}%
1119  \gdef#1{\ifTR\char"DC{}\else\string#1\fi}%

1120 }%

1121 \def\Yacute#1#2#3{%
1122  \@UC{#1}{#2}{#3}%
1123  \gdef#1{\ifTR\char"DD{}\else\string#1\fi}%

1124 }%

1125 \def\Thorn#1#2#3{%
1126  \@UC{#1}{#2}{#3}%
1127  \gdef#1{\ifTR\char"DE{}\else\string#1\fi}%

1128 }%

1129 \def\germandbls#1#2#3{%
1130  \@UC{#1}{#2}{#3}%
1131  \gdef#1{\ifTR\char"DF{}\else\string#1\fi}%

1132 }%

1133 \def\agrave#1#2#3{%
1134  \@UC{#1}{#2}{#3}%
1135  \gdef#1{\ifTR\char"E0{}\else\string#1\fi}%

1136 }%

1137 \def\aacute#1#2#3{%
1138  \@UC{#1}{#2}{#3}%
1139  \gdef#1{\ifTR\char"E1{}\else\string#1\fi}%

1140 }%

1141 \def\acircumflex#1#2#3{%
1142  \@UC{#1}{#2}{#3}%
1143  \gdef#1{\ifTR\char"E2{}\else\string#1\fi}%

1144 }%

1145 \def\atilde#1#2#3{%
1146  \@UC{#1}{#2}{#3}%
1147  \gdef#1{\ifTR\char"E3{}\else\string#1\fi}%

1148 }%

1149 \def\adieresis#1#2#3{%
1150  \@UC{#1}{#2}{#3}%
1151  \gdef#1{\ifTR\char"E4{}\else\string#1\fi}%

1152 }%

1153 \def\aring#1#2#3{%
1154  \@UC{#1}{#2}{#3}%
1155  \gdef#1{\ifTR\char"E5{}\else\string#1\fi}%

1156 }%

1157 \def\ae#1#2#3{%
1158  \@UC{#1}{#2}{#3}%
1159  \gdef#1{\ifTR\char"E6{}\else\string#1\fi}%

1160 }%

1161 \def\ccedilla#1#2#3{%
1162  \@UC{#1}{#2}{#3}%
1163  \gdef#1{\ifTR\char"E7{}\else\string#1\fi}%

1164 }%

1165 \def\egrave#1#2#3{%
1166  \@UC{#1}{#2}{#3}%
1167  \gdef#1{\ifTR\char"E8{}\else\string#1\fi}%

1168 }%

1169 \def\eacute#1#2#3{%
1170  \@UC{#1}{#2}{#3}%
1171  \gdef#1{\ifTR\char"E9{}\else\string#1\fi}%

1172 }%

1173 \def\ecircumflex#1#2#3{%
1174  \@UC{#1}{#2}{#3}%
1175  \gdef#1{\ifTR\char"EA{}\else\string#1\fi}%

1176 }%

1177 \def\edieresis#1#2#3{%
1178  \@UC{#1}{#2}{#3}%
1179  \gdef#1{\ifTR\char"EB{}\else\string#1\fi}%

1180 }%

1181 \def\igrave#1#2#3{%
1182  \@UC{#1}{#2}{#3}%
1183  \gdef#1{\ifTR\char"EC{}\else\string#1\fi}%

1184 }%

1185 \def\iacute#1#2#3{%
1186  \@UC{#1}{#2}{#3}%

1187  \gdef#1{\ifTR\char"ED{}\else\string#1\fi}%

1188 }%

1189 \def\icircumflex#1#2#3{%
1190  \@UC{#1}{#2}{#3}%
1191  \gdef#1{\ifTR\char"EE{}\else\string#1\fi}%

1192 }%

1193 \def\idieresis#1#2#3{%
1194  \@UC{#1}{#2}{#3}%
1195  \gdef#1{\ifTR\char"EF{}\else\string#1\fi}%

1196 }%

1197 \def\dBar#1#2#3{%
1198  \@UC{#1}{#2}{#3}%
1199  \gdef#1{\ifTR\char"F0{}\else\string#1\fi}%

1200 }%

1201 \def\ntilde#1#2#3{%
1202  \@UC{#1}{#2}{#3}%
1203  \gdef#1{\ifTR\char"F1{}\else\string#1\fi}%

1204 }%

1205 \def\ograve#1#2#3{%
1206  \@UC{#1}{#2}{#3}%
1207  \gdef#1{\ifTR\char"F2{}\else\string#1\fi}%

1208 }%

1209 \def\oacute#1#2#3{%
1210  \@UC{#1}{#2}{#3}%
1211  \gdef#1{\ifTR\char"F3{}\else\string#1\fi}%

1212 }%

1213 \def\ocircumflex#1#2#3{%
1214  \@UC{#1}{#2}{#3}%
1215  \gdef#1{\ifTR\char"F4{}\else\string#1\fi}%

1216 }%

1217 \def\otilde#1#2#3{%
1218  \@UC{#1}{#2}{#3}%
1219  \gdef#1{\ifTR\char"F5{}\else\string#1\fi}%

1220 }%

1221 \def\odieresis#1#2#3{%
1222  \@UC{#1}{#2}{#3}%
1223  \gdef#1{\ifTR\char"F6{}\else\string#1\fi}%

1224 }%

1225 \def\OE#1#2#3{%
1226  \@UC{#1}{#2}{#3}%
1227  \gdef#1{\ifTR\OE{}\else\string#1\fi}%

1228 }%

1229 \def\oe#1#2#3{%
1230  \@UC{#1}{#2}{#3}%
1231  \gdef#1{\ifTR\oe{}\else\string#1\fi}%

1232 }%

1233 \def\oslash#1#2#3{%
1234  \@UC{#1}{#2}{#3}%
1235  \gdef#1{\ifTR\char"F8{}\else\string#1\fi}%

1236 }%

1237 \def\ugrave#1#2#3{%
1238  \@UC{#1}{#2}{#3}%
1239  \gdef#1{\ifTR\char"F9{}\else\string#1\fi}%

1240 }%

1241 \def\uacute#1#2#3{%
1242  \@UC{#1}{#2}{#3}%
1243  \gdef#1{\ifTR\char"FA{}\else\string#1\fi}%

1244 }%

1245 \def\ucircumflex#1#2#3{%
1246  \@UC{#1}{#2}{#3}%
1247  \gdef#1{\ifTR\char"FB{}\else\string#1\fi}%

1248 }%

1249 \def\udieresis#1#2#3{%
1250  \@UC{#1}{#2}{#3}%
1251  \gdef#1{\ifTR\char"FC{}\else\string#1\fi}%

1252 }%

1253 \def\yacute#1#2#3{%
1254  \@UC{#1}{#2}{#3}%
1255  \gdef#1{\ifTR\char"FD{}\else\string#1\fi}%

1256 }%

1257 \def\thorn#1#2#3{%
1258  \@UC{#1}{#2}{#3}%
1259  \gdef#1{\ifTR\char"FE{}\else\string#1\fi}%

1260 }%

1261 \def\ydieresis#1#2#3{%
1262  \@UC{#1}{#2}{#3}%
1263  \gdef#1{\ifTR\char"B8{}\else\string#1\fi}%

1264 }%

1265 \def\Ydieresis#1#2#3{%
1266  \@UC{#1}{#2}{#3}%
1267  \gdef#1{\ifTR\char"98{}\else\string#1\fi}%

1268 }% 1269 %

1270 \def\alpha#1#2#3{%
1271  \@UC{#1}{#2}{#3}%
1272  \@MathSymbol{#1}{alpha}%

1273 }%

1274 \def\approx#1#2#3{%
1275  \@UC{#1}{#2}{#3}%
1276  \@MathSymbol{#1}{approx}%

1277 }%

1278 \def\beta#1#2#3{%
1279  \@UC{#1}{#2}{#3}%
1280  \@MathSymbol{#1}{beta}%

1281 }%

1282 \def\bullet#1#2#3{%
1283  \@UC{#1}{#2}{#3}%
1284  \@MathSymbol{#1}{bullet}%

1285 }%

1286 \def\cap#1#2#3{%
1287  \@UC{#1}{#2}{#3}%
1288  \@MathSymbol{#1}{cap}%

1289 }%

1290 \def\cent#1#2#3{%
1291  \@UC{#1}{#2}{#3}%
1292  % no definition in DC

1293 }%

1294 \def\guillemeotright#1#2#3{%
1295  \@UC{#1}{#2}{#3}%
1296  % a small space is inserted before the french guillemot
1297  % and the pre-existing space is removed
1298  \gdef#1{\ifTR\unskip\@InMath{,}\char'024{}\else\string#1\fi}%

1299 }%

1300 \def\copyright#1#2#3{%
1301  \@UC{#1}{#2}{#3}%
1302  \gdef#1{\ifTR\copyright{}\else\string#1\fi}%

1303 }%

1304 \def\currency#1#2#3{% character hex A4 in Iso latin set 1
1305  \@UC{#1}{#2}{#3}%
1306  % no definition in DC

1307 }%

1308 \def\degree#1#2#3{%
1309  \@UC{#1}{#2}{#3}%

1310 }%

1311 \def\dag#1#2#3{%
1312  \@UC{#1}{#2}{#3}%
1313  \@MathSymbol{#1}{dag}%

1314 }%

1315 \def\ddag#1#2#3{%
1316  \@UC{#1}{#2}{#3}%
1317  \@MathSymbol{#1}{ddag}%

1318 }%

1319 \def\delta#1#2#3{%
1320  \@UC{#1}{#2}{#3}%
1321  \@MathSymbol{#1}{delta}%

1322 }%

1323 \def\div#1#2#3{%
1324  \@UC{#1}{#2}{#3}%
1325  \@MathSymbol{#1}{div}%

1326 }%

1327 \def\diamond#1#2#3{%
1328  \@UC{#1}{#2}{#3}%
1329  \@MathSymbol{#1}{Diamond}%

1330 }%

1331 \def\emptysetSign#1#2#3{%
1332  \@UC{#1}{#2}{#3}%
1333  \@MathSymbol{#1}{emptyset}%

1334 }%

1335 \def\section#1#2#3{%
1336  \@UC{#1}{#2}{#3}%
1337  \gdef#1{\ifTR{\S}\else\string#1\fi}%

1338 }%

1339 \def\epsilon#1#2#3{%
1340  \@UC{#1}{#2}{#3}%
1341  \@MathSymbol{#1}{varepsilon}%

1342 }%

1343 \def\equiv#1#2#3{%
1344  \@UC{#1}{#2}{#3}%
1345  \@MathSymbol{#1}{equiv}%

1346 }%

1347 \def\ellipsis#1#2#3{%
1348  \@UC{#1}{#2}{#3}%
1349  \gdef#1{\ifTR{...}\else\string#1\fi}%

1350 }%

1351 \def\exclamdown#1#2#3{%
1352  \@UC{#1}{#2}{#3}%
1353  \gdef#1{\ifTR\char"BD{}\else\string#1\fi}%

1354 }%

1355 \def\ordfeminine#1#2#3{%
1356  \@UC{#1}{#2}{#3}%
1357  \gdef#1{\ifTR\@Sup{\b{a}}\else\string#1\fi}%

1358 }%

1359 \def\geq#1#2#3{%
1360  \@UC{#1}{#2}{#3}%
1361  \@MathSymbol{#1}{geq}%

1362 }%

1363 \def\Gamma#1#2#3{%
1364  \@UC{#1}{#2}{#3}%
1365  \@MathSymbol{#1}{Gamma}%

1366 }%

1367 \def\infty#1#2#3{%
1368  \@UC{#1}{#2}{#3}%
1369  \@MathSymbol{#1}{infty}%

1370 }%

1371 \def\leq#1#2#3{%
1372  \@UC{#1}{#2}{#3}%

1373  \@MathSymbol{#1}{leq}%

1374 }%

1375 \def\emdash#1#2#3{%
1376  \@UC{#1}{#2}{#3}%
1377  \gdef#1{\ifTR{---}\else\string#1\fi}%

1378 }%

1379 \def\ordmasculine#1#2#3{%
1380  \@UC{#1}{#2}{#3}%
1381  \gdef#1{\ifTR\@Sup{\b{o}}\else\string#1\fi}%

1382 }%

1383 \def\mu#1#2#3{%
1384  \@UC{#1}{#2}{#3}%
1385  \@MathSymbol{#1}{mu}%

1386 }%

1387 \def\neg#1#2#3{%
1388  \@UC{#1}{#2}{#3}%
1389  \@MathSymbol{#1}{neg}%

1390 }%

1391 \def\neq#1#2#3{%
1392  \@UC{#1}{#2}{#3}%
1393  \@MathSymbol{#1}{neq}%

1394 }%

1395 \def\unbreakablespace#1#2#3{%
1396  \@UC{#1}{#2}{#3}%
1397  \gdef#1{\ifTR~\else\string#1\fi}%

1398 }%

1399 \def\Omega#1#2#3{%
1400  \@UC{#1}{#2}{#3}%
1401  \@MathSymbol{#1}{Omega}%

1402 }%

1403 \def\OneHalf#1#2#3{%
1404  \@UC{#1}{#2}{#3}%
1405  \gdef#1{\ifTR{\@Fraction{1}{2}}\else\string#1\fi}%

1406 }%

1407 \def\OneQuarter#1#2#3{%
1408  \@UC{#1}{#2}{#3}%
1409  \gdef#1{\ifTR{\@Fraction{1}{4}}\else\string#1\fi}%

1410 }%

1411 \def\guilletmotleft#1#2#3{%
1412  \@UC{#1}{#2}{#3}%
1413  % a small space is added after the opening guillemot
1414  % and the pre-existing space is removed
1415  \gdef#1{\ifTR\char"13\unskip\@InMath{,}\else\string#1\fi}%

1416 }%

1417 \def\Pi#1#2#3{%
1418  \@UC{#1}{#2}{#3}%
1419  \@MathSymbol{#1}{Pi}%

1420 }%

1421 \def\pi#1#2#3{%
1422  \@UC{#1}{#2}{#3}%
1423  \@MathSymbol{#1}{pi}%

1424 }%

1425 \def\pm#1#2#3{%
1426  \@UC{#1}{#2}{#3}%
1427  \@MathSymbol{#1}{pm}%

1428 }%

1429 \def\ParagraphSign#1#2#3{%
1430  \@UC{#1}{#2}{#3}%
1431  \gdef#1{\ifTR{\P}\else\string#1\fi}%

1432 }%

1433 \def\partial#1#2#3{%
1434  \@UC{#1}{#2}{#3}%

1435  \@MathSymbol{#1}{partial}%

1436 }%

1437 \def\Phi#1#2#3{%
1438  \@UC{#1}{#2}{#3}%
1439  \@MathSymbol{#1}{Phi}%

1440 }%

1441 \def\pounds#1#2#3{%
1442  \@UC{#1}{#2}{#3}%
1443  \gdef#1{\ifTR\char"BF{}\else\string#1\fi}%

1444 }%

1445 \def\powerone#1#2#3{%
1446  \@UC{#1}{#2}{#3}%
1447  \gdef#1{\ifTR{\@Sup{1}}\else\string#1\fi}%

1448 }%

1449 \def\powerthree#1#2#3{%
1450  \@UC{#1}{#2}{#3}%
1451  \gdef#1{\ifTR{\@Sup{3}}\else\string#1\fi}%

1452 }%

1453 \def\powertwo#1#2#3{%
1454  \@UC{#1}{#2}{#3}%
1455  \gdef#1{\ifTR{\@Sup{2}}\else\string#1\fi}%

1456 }%

1457 \def\questiondown#1#2#3{%
1458  \@UC{#1}{#2}{#3}%
1459  \gdef#1{\ifTR\char"BE{}\else\string#1\fi}%

1460 }%

1461 \def\register#1#2#3{%
1462  \@UC{#1}{#2}{#3}%
1463  % no definition in DC

1464 }%

1465 \def\Sigma#1#2#3{%
1466  \@UC{#1}{#2}{#3}%
1467  \@MathSymbol{#1}{Sigma}%

1468 }%

1469 \def\sigma#1#2#3{%
1470  \@UC{#1}{#2}{#3}%
1471  \@MathSymbol{#1}{sigma}%

1472 }%

1473 \def\quoteright#1#2#3{%
1474  \@UC{#1}{#2}{#3}%
1475  \gdef#1{\ifTR{'}\else\string#1\fi}%

1476 }%

1477 \def\quoteleft#1#2#3{%
1478  \@UC{#1}{#2}{#3}%
1479  \gdef#1{\ifTR{`}\else\string#1\fi}%

1480 }%

1481 \def\splitbar#1#2#3{%
1482  \@UC{#1}{#2}{#3}%
1483  % no definition in DC

1484 }%

1485 \def\tau#1#2#3{%
1486  \@UC{#1}{#2}{#3}%
1487  \@MathSymbol{#1}{tau}%

1488 }%

1489 \def\ThetaSign#1#2#3{%
1490  \@UC{#1}{#2}{#3}%
1491  \@MathSymbol{#1}{Theta}%

1492 }%

1493 \def\threequarter#1#2#3{%
1494  \@UC{#1}{#2}{#3}%
1495  \gdef#1{\ifTR{\@Fraction{3}{4}}\else\string#1\fi}%

1496 }%

1497 \def\times#1#2#3{%
1498  \@UC{#1}{#2}{#3}%
1499  \@MathSymbol{#1}{times}%

1500 }%

1501 \def\trademark#1#2#3{%
1502  \@UC{#1}{#2}{#3}%
1503  \gdef#1{\ifTR\@Sup{TM}\else\string#1\fi}%

1504 }%

1505 \def\quotedblright#1#2#3{%
1506  \@UC{#1}{#2}{#3}%
1507  \gdef#1{\ifTR{''}\else\string#1\fi}%

1508 }%

1509 \def\quotedblleft#1#2#3{%
1510  \@UC{#1}{#2}{#3}%
1511  \gdef#1{\ifTR{``}\else\string#1\fi}%

1512 }%

1513 \def\yen#1#2#3{%
1514  \@UC{#1}{#2}{#3}%
1515  % no definition in DC

1516 }%

1517 \def\perthousand#1#2#3{%
1518  \@UC{#1}{#2}{#3}%
1519  % no definition in DC

1520 }%

1521 \def\florin#1#2#3{%
1522  \@UC{#1}{#2}{#3}%
1523  \gdef#1{\ifTR{\it f}\else\string#1\fi}%

1524 }%

1525 \catcode`\@=\atcatcode \let\atcatcode\relax

1526 %

1527 ⟨/shapedc⟩

4.4 Table for the code page 850 (file: code850.tex)

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 \CurrentEncoding). This file should be moved into TEX’s memory with an \input command and all the characters above 127 should be active before the call to the \input command. Some normal unaccented character should be made active, just for the case where the \uppercase command is used with lowercase accented character which don’t have uppercase accented equivalent (the normal unaccented character is used). Since the \uppercase or \lowercase command doesn’t change the catcode, the resulting character will have the catcode \active (since all the characters above 127 are active). Thus a macro should exist ! 1528 ⟨∗codepage850⟩

1529 \chardef\atcatcode=\catcode`\@
1530 \catcode`\@=11\relax

1531 {%

1532  \catcode`\Y=\active
1533  \gdef Y{\string Y}%

1534 }%

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 code850.tex is read) to limit the scope of macros created by the inputting of files shapecm or shapedc. These macros are used just for setting the tables and never useful after that.

1535 \begingroup
1536 \input initcar %
1537 \ifcase\CurrentEncoding
1538 \input shapecm %

1539 \or

1540 \input shapedc %

1541 \fi

1542 \Ccedilla{^^80}{"80}{"87}%
1543 \udieresis{^^81}{"9A}{"81}%
1544 \eacute{^^82}{"90}{"82}%
1545 \acircumflex{^^83}{"B6}{"83}%
1546 \adieresis{^^84}{"8E}{"84}%
1547 \agrave{^^85}{"B7}{"85}%
1548 \aring{^^86}{"8F}{"86}%
1549 \ccedilla{^^87}{"80}{"87}%
1550 \ecircumflex{^^88}{"D2}{"88}%
1551 \edieresis{^^89}{"D3}{"89}%
1552 \egrave{^^8a}{"D4}{"8A}%
1553 \idieresis{^^8b}{"D8}{"8B}%
1554 \icircumflex{^^8c}{"D7}{"8C}%
1555 \igrave{^^8d}{"DE}{"8D}%
1556 \Adieresis{^^8e}{"8E}{"84}%
1557 \Aring{^^8f}{"8F}{"86}%
1558 \Eacute{^^90}{"90}{"82}%
1559 \ae{^^91}{"92}{"91}%
1560 \AE{^^92}{"92}{"91}%
1561 \ocircumflex{^^93}{"E2}{"93}%
1562 \odieresis{^^94}{"99}{"94}%
1563 \ograve{^^95}{"E3}{"95}%
1564 \ucircumflex{^^96}{"EA}{"96}%
1565 \ugrave{^^97}{"EB}{"97}%
1566 \ydieresis{^^98}{"59}{"98}%
1567 \Odieresis{^^99}{"99}{"94}%
1568 \Udieresis{^^9a}{"9A}{"81}%
1569 \oslash{^^9b}{"9D}{"9B}%
1570 \pounds{^^9c}{"9C}{"9C}%
1571 \Oslash{^^9d}{"9D}{"9B}%
1572 \times{^^9e}{"9E}{"9E}%
1573 \florin{^^9f}{"9F}{"9F}%
1574 \aacute{^^a0}{"B5}{"A0}%
1575 \iacute{^^a1}{"D6}{"A1}%
1576 \oacute{^^a2}{"E0}{"A2}%
1577 \uacute{^^a3}{"E9}{"A3}%
1578 \ntilde{^^a4}{"A5}{"A4}%
1579 \Ntilde{^^a5}{"A5}{"A4}%
1580 \ordfeminine{^^a6}{"A6}{"A6}%
1581 \ordmasculine{^^a7}{"A7}{"A7}%
1582 \questiondown{^^a8}{"A8}{"A8}%
1583 \register{^^a9}{"A9}{"A9}%
1584 \neg{^^aa}{"AA}{"AA}%
1585 \OneHalf{^^ab}{"AB}{"AB}%
1586 \OneQuarter{^^ac}{"AC}{"AC}%
1587 \exclamdown{^^ad}{"AD}{"AD}%
1588 \guilletmotleft{^^ae}{"AE}{"AE}%
1589 \guillemeotright{^^af}{"AF}{"AF}%
1590 \Aacute{^^b5}{"B5}{"A0}%
1591 \Acircumflex{^^b6}{"B6}{"83}%
1592 \Agrave{^^b7}{"B7}{"85}%
1593 \copyright{^^b8}{"B8}{"B8}%
1594 \cent{^^bd}{"BD}{"BD}%
1595 \yen{^^be}{"BE}{"BE}%
1596 \atilde{^^c6}{"C7}{"C6}%
1597 \Atilde{^^c7}{"C7}{"C6}%
1598 \currency{^^cf}{"CF}{"CF}%
1599 \dBar{^^d0}{"D1}{"D0}%
1600 \DBar{^^d1}{"D1}{"D0}%
1601 \Ecircumflex{^^d2}{"D2}{"88}%

1602 \Edieresis{^^d3}{"D3}{"89}%
1603 \Egrave{^^d4}{"D4}{"8A}%
1604 \powerone{^^d5}{"D5}{"D5}%
1605 \Iacute{^^d6}{"D6}{"A1}%
1606 \Icircumflex{^^d7}{"D7}{"8C}%
1607 \Idieresis{^^d8}{"D8}{"8B}%
1608 \splitbar{^^dd}{"DD}{"DD}%
1609 \Igrave{^^de}{"DE}{"8D}%
1610 \Oacute{^^e0}{"E0}{"A2}%
1611 \beta{^^e1}{"E1}{"E1}%
1612 \Ocircumflex{^^e2}{"E2}{"93}%
1613 \Ograve{^^e3}{"E3}{"95}%
1614 \otilde{^^e4}{"E5}{"E4}%
1615 \Otilde{^^e5}{"E5}{"E4}%
1616 \mu{^^e6}{"E6}{"E6}%
1617 \thorn{^^e7}{"E8}{"E7}%
1618 \Thorn{^^e8}{"E8}{"E7}%
1619 \Uacute{^^e9}{"E9}{"A3}%
1620 \Ucircumflex{^^ea}{"EA}{"96}%
1621 \Ugrave{^^eb}{"EB}{"97}%
1622 \yacute{^^ec}{"ED}{"EC}%
1623 \Yacute{^^ed}{"ED}{"EC}%
1624 \pm{^^f1}{"F1}{"F1}%
1625 \threequarter{^^f3}{"F3}{"F3}%
1626 \ParagraphSign{^^f4}{"F4}{"F4}%
1627 \section{^^f5}{"F5}{"F5}%
1628 \div{^^f6}{"F6}{"F6}%
1629 \cedilla{^^f7}{"F7}{"F7}%
1630 \degree{^^f8}{"F8}{"F8}%
1631 \dieresis{^^f9}{"F9}{"F9}%
1632 \bullet{^^fa}{"FA}{"FA}%
1633 \powerone{^^fb}{"FB}{"FB}%
1634 \powerthree{^^fc}{"FC}{"FC}%
1635 \powertwo{^^fd}{"FD}{"FD}%
1636 \endgroup

\@MakeHyphenation850 \@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 \lccode of a character to be used in the \hyphenation to permit a match when this character will be translated in something else. Examples: “e grave” (character hexa 8a) in code page 850 will be translated in 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 \hyphenation with “e grave” (character hexa 8a in code page 850), “e grave” should have \lccode="E7. “n tilde” (character hexa A4 in code page 850) will be translated to character hexa F1 in Dc encoding. Character hexa F1 in code page 850 is “plus-minus” sign which has lowercase hexa F1 thus the \lccode for “n tilde” for use with the \hyphenation command should be hexa F1. This macro is meaningless with the Cm encoding !

1637 \ifnum\CurrentEncoding=\DC\relax
1638 \def\@MakeHyphenationEightFiveZero#1{%
1639 \catcode`#1=12% make character given in parameter other which is
1640  % a legal catcode for \hyphenation
1641 \ifnum`#1="80
1642  %C cedilla translated in DC encoding to "D7 (which is A tilde)

1643  %with a tilde ("d6) as lowercase
1644  \lccode`#1="D6%
1645 \else\ifnum`#1="81
1646  %u dieresis --> "FC
1647  \lccode`#1="FC%
1648 \else\ifnum`#1="82
1649  %e acute --> "E9 (U acute) --> u acute
1650  \lccode`#1="A3%
1651 \else\ifnum`#1="83
1652  %a circumflex --> "E2 O circumflex --> o circumflex
1653  \lccode`#1="93%
1654 \else\ifnum`#1="84
1655  %a dieresis --> "E4 o tilde
1656  \lccode`#1="E4%
1657  \@ConflictHyphenCarMsg{a dieresis ("84)}{a ring ("86)}
1658 \else\ifnum`#1="85
1659  %a grave --> "E O acute --> "A2 (o acute in code page 850)
1660  \lccode`#1="A2%
1661 \else\ifnum`#1="86
1662  %a ring --> "E5 O tilde --> "E4
1663  \lccode`#1="E4%
1664  \@ConflictHyphenCarMsg{a ring ("86)}{a dieresis ("84)}
1665 \else\ifnum`#1="87
1666  %c cedilla --> "E7  --> "E7
1667  \lccode`#1="E7%
1668  \@ConflictHyphenCarMsg{c cedilla ("87)}{e grave ("8A)}
1669 \else\ifnum`#1="88
1670  %e circumflex --> "EA (U circumflex ---> "96
1671  \lccode`#1="96%
1672 \else\ifnum`#1="89
1673  %e dieresis --> "EB U grave --> "97
1674  \lccode`#1="97%
1675 \else\ifnum`#1="8A
1676  %e grave --> "E8 Thorn --> "E7
1677  \lccode`#1="E7%
1678  \@ConflictHyphenCarMsg{e grave ("8A)}{c cedilla ("87)}
1679 \else\ifnum`#1="8B
1680  %i dieresis --> "EF (acute accent)
1681  \lccode`#1="EF%
1682 \else\ifnum`#1="8C
1683  %i circumflex --> "EE (BAR Accent)
1684  \lccode`#1="EE%
1685 \else\ifnum`#1="8D
1686  %i grave --> "EC (y acute)
1687  \lccode`#1="EC%
1688  \@ConflictHyphenCarMsg{i grave ("8D)}{i acute ("A1)}
1689 \else\ifnum`#1="8E
1690  %A dieresis --> "C4 (semi graphical character)
1691  \lccode`#1="C4%
1692 \else\ifnum`#1="8F
1693  %A ring --> "C5 (semi graphical character)
1694  \lccode`#1="C5%
1695 \else\ifnum`#1="90
1696  %E acute --> "C9 (semi graphical character)
1697  \lccode`#1="C9%
1698 \else\ifnum`#1="91
1699  %ae ligature --> "E6 (mu sign)
1700  \lccode`#1="E6%
1701 \else\ifnum`#1="92
1702  %AE ligature --> "C6 (a tilde)
1703  \lccode`#1="C6%
1704 \else\ifnum`#1="93

1705  %o circumflex --> "F4 (Paragraph Sign)
1706  \lccode`#1="F4%
1707 \else\ifnum`#1="94
1708  %o dieresis --> "F6 (divide sign)
1709  \lccode`#1="F6%
1710 \else\ifnum`#1="95
1711  %O grave --> "F2 (equal sign)
1712  \lccode`#1="F2%
1713 \else\ifnum`#1="96
1714  %u circumflex --> "FB (Power one sign)
1715  \lccode`#1="FB%
1716 \else\ifnum`#1="97
1717  %u grave --> "F9 (dieresis accent)
1718  \lccode`#1="F9%
1719 \else\ifnum`#1="98
1720  %y dieresis --> "B8 (Copyright sign)
1721  \lccode`#1="B8%
1722 \else\ifnum`#1="99
1723  %O dieresis --> "D6 (I acute) --> i acute
1724  \lccode`#1="A1%
1725 \else\ifnum`#1="9A
1726  %U dieresis --> "DC (semi graphical sign)
1727  \lccode`#1="DC%
1728 \else\ifnum`#1="9B
1729  %o slash --> "F8 (Degree sign)
1730  \lccode`#1="F8%
1731 \else\ifnum`#1="9D
1732  %O slash --> "D8 (I dieresis) --> i dieresis
1733  \lccode`#1="8B%
1734 \else\ifnum`#1="A0
1735  %a acute --> "E1 (Beta sign)
1736  \lccode`#1="E1%
1737 \else\ifnum`#1="A1
1738  %i acute --> "ED (Y acute) --> y acute
1739  \lccode`#1="EC%
1740  \@ConflictHyphenCarMsg{i acute ("A1)}{i grave ("8D)}
1741 \else\ifnum`#1="A2
1742  %o acute --> "F3 (three quarter sign)
1743  \lccode`#1="F3%
1744 \else\ifnum`#1="A3
1745  %u acute --> "FA (Bullet sign)
1746  \lccode`#1="FA%
1747 \else\ifnum`#1="A4
1748  %n tilde --> "F1 (Plus minus sign)
1749  \lccode`#1="F1%
1750 \else\ifnum`#1="A5
1751  %N tilde --> "D1 (D bar) --> d bar
1752  \lccode`#1="D0%
1753  \@ConflictHyphenCarMsg{N tilde ("A5)}{D bar ("D1)}
1754 \else\ifnum`#1="B5
1755  %A acute --> "C1 (semi graphical sign)
1756  \lccode`#1="C1%
1757 \else\ifnum`#1="B6
1758  %A circumflex --> "C2 (semi graphical sign)
1759  \lccode`#1="C2%
1760 \else\ifnum`#1="B7
1761  %A grave --> "C0 (Semi graphical sign)
1762  \lccode`#1="C0%
1763 \else\ifnum`#1="D0
1764  %d bar --> "F0 (minus sign)
1765  \lccode`#1="F0%
1766 \else\ifnum`#1="D1

1767  %D bar --> "D0 (d bar)
1768  \lccode`#1="D0%
1769  \@ConflictHyphenCarMsg{D bar ("D1)}{N tilde ("A5}
1770 \else\ifnum`#1="D2
1771  %E circumflex --> "CA (semi-graphical sign)
1772  \lccode`#1="CA%
1773 \else\ifnum`#1="D3
1774  %E dieresis --> "CB (semi graphical sign)
1775  \lccode`#1="CB%
1776 \else\ifnum`#1="D4
1777  %E grave --> "C8 (semi graphical sign)
1778  \lccode`#1="C8%
1779 \else\ifnum`#1="D6
1780  %I acute --> "CD (semi graphical sign)
1781  \lccode`#1="CD%
1782 \else\ifnum`#1="D7
1783  %I circumflex --> "CE (semi-graphical sign)
1784  \lccode`#1="CE%
1785 \else\ifnum`#1="D8
1786  %I dieresis --> "CF (currency sign)
1787  \lccode`#1="CF%
1788 \else\ifnum`#1="E0
1789  %O acute --> "D3 (E dieresis) --> e dieresis
1790  \lccode`#1="89%
1791 \else\ifnum`#1="E2
1792  %O circumflex --> "D4 (E grave) --> e grave
1793  \lccode`#1="8A%
1794 \else\ifnum`#1="E3
1795  %O grave --> "D2 (E circumflex) --> e circumflex
1796  \lccode`#1="88%
1797 \else\ifnum`#1="E4
1798  %o tilde --> "F5 (End of flow sign)
1799  \lccode`#1="F5%
1800 \else\ifnum`#1="E5
1801  %O tilde --> "D5 (Power One sign)
1802  \lccode`#1="D5%
1803 \else\ifnum`#1="E7
1804  %thorn --> "FE (semi graphical sign)
1805  \lccode`#1="FE%
1806 \else\ifnum`#1="E8
1807  %P like letter --> "DE (I acute) --> i acute
1808  \lccode`#1="8D%
1809 \else\ifnum`#1="E9
1810  %U acute --> "DA (semi graphical sign)
1811  \lccode`#1="DA%
1812 \else\ifnum`#1="EA
1813  %U circumflex --> "DB (semi graphical sign)
1814  \lccode`#1="DB%
1815 \else\ifnum`#1="EB
1816  %U grave --> "D9 (semi graphical sign)
1817  \lccode`#1="D9%
1818 \else\ifnum`#1="EC
1819  %y acute --> "FD (Power two sign)
1820  \lccode`#1="FD%
1821 \else\ifnum`#1="ED
1822  %Y acute --> "DD (Slit vertical bar sign)
1823  \lccode`#1="DD%
1824 \else
1825  %we don't have a letter (a character to form word)
1826  \@BadHyphenCarMsg{#1}
1827  \catcode`#1=15% make this character invalid
1828 \fi\fi\fi\fi\fi\fi\fi\fi\fi\fi

1829 \fi\fi\fi\fi\fi\fi\fi\fi\fi\fi
1830 \fi\fi\fi\fi\fi\fi\fi\fi\fi\fi
1831 \fi\fi\fi\fi\fi\fi\fi\fi\fi\fi
1832 \fi\fi\fi\fi\fi\fi\fi\fi\fi\fi
1833 \fi\fi\fi\fi\fi\fi\fi\fi
1834 % We must have same count of \fi than \ifnum (58)
1835 }%\@MakeHyphenationEightFiveZero
1836 \fi % \ifx\CurrentEncoding...
1837 \catcode`\@=\atcatcode \let\atcatcode\relax

1838 ⟨/codepage850⟩

4.5 Table for the code page 437 (file: code437.tex)

\@FourThreeSeven

1839 ⟨∗codepage437⟩

1840 \chardef\atcatcode=\catcode`\@
1841 \catcode`\@=11\relax
1842 \begingroup
1843 \catcode`\A=\active
1844 \catcode`\E=\active
1845 \catcode`\I=\active
1846 \catcode`\O=\active
1847 \catcode`\U=\active
1848 \catcode`\Y=\active
1849 \gdef A{\string A}%
1850 \gdef E{\string E}%
1851 \gdef I{\string I}%
1852 \gdef O{\string O}%
1853 \gdef U{\string U}%
1854 \gdef Y{\string Y}%
1855 \endgroup
1856 \input initcar %
1857 \begingroup
1858 \ifcase\CurrentEncoding
1859 \input shapecm %

1860 \or

1861 \input shapedc %

1862 \fi

1863 \Ccedilla{^^80}{"80}{"87}%
1864 \Adieresis{^^8e}{"8E}{"84}%
1865 \Aring{^^8f}{"8F}{"86}%
1866 \Eacute{^^90}{"90}{"82}%
1867 \AE{^^92}{"92}{"91}%
1868 \Odieresis{^^99}{"99}{"94}%
1869 \Udieresis{^^9a}{"9A}{"81}%
1870 \Ntilde{^^a5}{"A5}{"A4}%
1871 \udieresis{^^81}{"9A}{"81}%
1872 \eacute{^^82}{"90}{"82}%
1873 \acircumflex{^^83}{"41}{"83}%
1874 \adieresis{^^84}{"8E}{"84}%
1875 \agrave{^^85}{"41}{"85}%
1876 \aring{^^86}{"8F}{"86}%
1877 \ccedilla{^^87}{"80}{"87}%
1878 \ecircumflex{^^88}{"45}{"88}%
1879 \edieresis{^^89}{"45}{"89}%
1880 \egrave{^^8a}{"45}{"8A}%
1881 \idieresis{^^8b}{"49}{"8B}%
1882 \icircumflex{^^8c}{"49}{"8C}%
1883 \igrave{^^8d}{"49}{"8D}%
1884 \ae{^^91}{"92}{"91}%
1885 \ocircumflex{^^93}{"4F}{"93}%

1886 \odieresis{^^94}{"99}{"94}%
1887 \ograve{^^95}{"4F}{"95}%
1888 \ucircumflex{^^96}{"55}{"96}%
1889 \ugrave{^^97}{"55}{"97}%
1890 \ydieresis{^^98}{"59}{"98}%
1891 \pounds{^^9c}{"9C}{"9C}%
1892 \florin{^^9f}{"9F}{"9F}%
1893 \aacute{^^a0}{"41}{"A0}%
1894 \iacute{^^a1}{"49}{"A1}%
1895 \oacute{^^a2}{"4F}{"A2}%
1896 \uacute{^^a3}{"55}{"A3}%
1897 \ntilde{^^a4}{"A5}{"A4}%
1898 \questiondown{^^a8}{"A8}{"A8}%
1899 \exclamdown{^^ad}{"AD}{"AD}%
1900 \guilletmotleft{^^ae}{"AE}{"AE}%
1901 \guillemeotright{^^af}{"AF}{"AF}%
1902 \alpha{^^e0}{"E0}{"E0}%
1903 \beta{^^e1}{"E1}{"E1}%
1904 \Gamma{^^e2}{"E2}{"E2}%
1905 \pi{^^e3}{"E3}{"E3}%
1906 \Sigma{^^e4}{"E4}{"E4}%
1907 \sigma{^^e5}{"E5}{"E5}%
1908 \mu{^^e6}{"E6}{"E6}%
1909 \tau{^^e7}{"E7}{"E7}%
1910 \Phi{^^e8}{"E8}{"E8}%
1911 \ThetaSign{^^e9}{"E9}{"E9}%
1912 \Omega{^^ea}{"EA}{"EA}%
1913 \delta{^^eb}{"EB}{"EB}%
1914 \infty{^^ec}{"EC}{"EC}%
1915 \emptysetSign{^^ed}{"ED}{"ED}%
1916 \epsilon{^^ee}{"EE}{"EE}%
1917 \cap{^^ef}{"EF}{"EF}%
1918 \equiv{^^f0}{"F0}{"F0}%
1919 \pm{^^f1}{"F1}{"F1}%
1920 \geq{^^f2}{"F2}{"F2}%
1921 \leq{^^f3}{"F3}{"F3}%
1922 \div{^^f6}{"F6}{"F6}%
1923 \approx{^^f7}{"F7}{"F7}%
1924 \bullet{^^f9}{"F9}{"F9}%
1925 \endgroup
\@MakeHyphenation437
1926 \ifnum\CurrentEncoding=\DC\relax
1927 \def\@MakeHyphenationFourThreeSeven#1{%
1928 \catcode`#1=12%
1929 \ifnum`#1="80
1930  % C cedilla translated in DC encoding to "D7 (which is a semi graphical
1931  % sign  in code page 437)
1932  \lccode`#1="D7%
1933 \else\ifnum`#1="81
1934  %u dieresis --> "FC
1935  \lccode`#1="FC%
1936 \else\ifnum`#1="82
1937  %e acute --> "E9 (Theta sign)
1938  \lccode`#1="E9%
1939 \else\ifnum`#1="83
1940  %a circumflex --> "E2 (Gamma sign)
1941  \lccode`#1="E2%
1942 \else\ifnum`#1="84
1943  %a dieresis --> "E4 o tilde
1944  \lccode`#1="E4%
1945 \else\ifnum`#1="85

1946  %a grave --> "E0 (alpha sign)
1947  \lccode`#1="E0%
1948 \else\ifnum`#1="86
1949  %a ring --> "E5 (sigma sign)
1950  \lccode`#1="E5%
1951 \else\ifnum`#1="87
1952  %c cedilla --> "E7 (tau sign)
1953  \lccode`#1="E7%
1954 \else\ifnum`#1="88
1955  %e circumflex --> "EA (Omega sign)
1956  \lccode`#1="EA%
1957 \else\ifnum`#1="89
1958  %e dieresis --> "EB (delta sign)
1959  \lccode`#1="EB%
1960 \else\ifnum`#1="8A
1961  %e grave --> "E8 (Phi sign)
1962  \lccode`#1="E8%
1963 \else\ifnum`#1="8B
1964  %i dieresis --> "EF (set intersection sign)
1965  \lccode`#1="EF%
1966 \else\ifnum`#1="8C
1967  %i circumflex --> "EE (epsilon sign)
1968  \lccode`#1="EE%
1969 \else\ifnum`#1="8D
1970  %i grave --> "EC (infinity sign)
1971  \lccode`#1="EC%
1972 \else\ifnum`#1="8E
1973  %A dieresis --> "C4 (semi graphical character)
1974  \lccode`#1="C4%
1975 \else\ifnum`#1="8F
1976  %A ring --> "C5 (semi graphical character)
1977  \lccode`#1="C5%
1978 \else\ifnum`#1="90
1979  %E acute --> "C9 (semi graphical character)
1980  \lccode`#1="C9%
1981 \else\ifnum`#1="91
1982  %ae ligature --> "E6 (mu sign)
1983  \lccode`#1="E6%
1984 \else\ifnum`#1="92
1985  %AE ligature --> "C6 (semi graphical character)
1986  \lccode`#1="C6%
1987 \else\ifnum`#1="93
1988  %o circumflex --> "F4 (upper part of integral sign)
1989  \lccode`#1="F4%
1990 \else\ifnum`#1="94
1991  %o dieresis --> "F6 (divide sign)
1992  \lccode`#1="F6%
1993 \else\ifnum`#1="95
1994  %O grave --> "F2 (greater or equal sign)
1995  \lccode`#1="F2%
1996 \else\ifnum`#1="96
1997  %u circumflex --> "FB (square sign)
1998  \lccode`#1="FB%
1999 \else\ifnum`#1="97
2000  %u grave --> "F9 (big bullet sign)
2001  \lccode`#1="F9%
2002 \else\ifnum`#1="98
2003  %y dieresis --> "B8 (semi graphical character)
2004  \lccode`#1="B8%
2005 \else\ifnum`#1="99
2006  %O dieresis --> "D6 (semi graphical character)
2007  \lccode`#1="D6%

2008 \else\ifnum`#1="9A
2009  %U dieresis --> "DC (semi graphical sign)
2010  \lccode`#1="DC%
2011 \else\ifnum`#1="A0
2012  %a acute --> "E1 (Beta sign)
2013  \lccode`#1="E1%
2014 \else\ifnum`#1="A1
2015  %i acute --> "ED (empty set sign)
2016  \lccode`#1="ED%
2017 \else\ifnum`#1="A2
2018  %o acute --> "F3 (less or equal sign)
2019  \lccode`#1="F3%
2020 \else\ifnum`#1="A3
2021  %u acute --> "FA (Bullet sign)
2022  \lccode`#1="FA%
2023 \else\ifnum`#1="A4
2024  %n tilde --> "F1 (Plus minus sign)
2025  \lccode`#1="F1%
2026 \else\ifnum`#1="A5
2027  %N tilde --> "D1 (semi graphical character)
2028  \lccode`#1="D1%
2029 \else
2030  %we don't have a letter (a character to form word)
2031  \@BadHyphenCarMsg{#1}
2032  \catcode`#1=15% make this character invalid
2033 \fi\fi\fi\fi\fi\fi\fi\fi\fi\fi
2034 \fi\fi\fi\fi\fi\fi\fi\fi\fi\fi
2035 \fi\fi\fi\fi\fi\fi\fi\fi\fi\fi
2036 \fi\fi\fi
2037 % We must have same count of \fi than \ifnum (33)

2038 }%

2039 \fi %\ifx\CurrentEncoding...
2040 \catcode`\@=\atcatcode \let\atcatcode\relax

2041 ⟨/codepage437⟩

4.6 Table for the code page of Mc Intosh (file: codemac.tex)

\@CodeMac

2042 ⟨∗codepagemac⟩

2043 \chardef\atcatcode=\catcode`\@
2044 \catcode`\@=11\relax

2045 {%

2046  \catcode`\Y=\active
2047  \gdef Y{\string Y}%

2048 }%

2049 \begingroup
2050 \input initcar %
2051 \ifcase\CurrentEncoding
2052 \input shapecm %

2053 \or

2054 \input shapedc %

2055 \fi

2056 \Adieresis{^^80}{"80}{"8A}%
2057 \Aring{^^81}{"81}{"8C}%
2058 \Ccedilla{^^82}{"82}{"8D}%
2059 \Eacute{^^83}{"83}{"8E}%
2060 \Ntilde{^^84}{"84}{"96}%
2061 \Odieresis{^^85}{"85}{"9A}%
2062 \Udieresis{^^86}{"86}{"9F}%
2063 \aacute{^^87}{"E7}{"87}%
2064 \agrave{^^88}{"CB}{"88}%

2065 \acircumflex{^^89}{"E5}{"89}%
2066 \adieresis{^^8a}{"80}{"8A}%
2067 \atilde{^^8b}{"CC}{"8B}%
2068 \aring{^^8c}{"81}{"8C}%
2069 \ccedilla{^^8d}{"82}{"8D}%
2070 \eacute{^^8e}{"83}{"8E}%
2071 \egrave{^^8f}{"E9}{"8F}%
2072 \ecircumflex{^^90}{"E6}{"90}%
2073 \edieresis{^^91}{"E8}{"91}%
2074 \iacute{^^92}{"EA}{"92}%
2075 \igrave{^^93}{"ED}{"93}%
2076 \icircumflex{^^94}{"EB}{"94}%
2077 \idieresis{^^95}{"EC}{"95}%
2078 \ntilde{^^96}{"84}{"96}%
2079 \oacute{^^97}{"EE}{"97}%
2080 \ograve{^^98}{"F1}{"98}%
2081 \ocircumflex{^^99}{"EF}{"99}%
2082 \odieresis{^^9a}{"85}{"9A}%
2083 \otilde{^^9b}{"CD}{"9B}%
2084 \uacute{^^9c}{"F2}{"9C}%
2085 \ugrave{^^9d}{"F4}{"9D}%
2086 \ucircumflex{^^9e}{"F3}{"9E}%
2087 \udieresis{^^9f}{"86}{"9F}%
2088 \dag{^^a0}{"A0}{"A0}%
2089 \degree{^^a1}{"A1}{"A1}%
2090 \cent{^^a2}{"A2}{"A2}%
2091 \pounds{^^a3}{"A3}{"A3}%
2092 \section{^^a4}{"A4}{"A4}%
2093 \bullet{^^a5}{"A5}{"A5}%
2094 \ParagraphSign{^^a6}{"A6}{"A6}%
2095 \beta{^^a7}{"A7}{"A7}%
2096 \register{^^a8}{"A8}{"A8}%
2097 \copyright{^^a9}{"A9}{"A9}%
2098 \trademark{^^aa}{"AA}{"AA}%
2099 \acute{^^ab}{"AB}{"AB}%
2100 \dieresis{^^ac}{"AC}{"AC}%
2101 \neq{^^ad}{"AD}{"AD}%
2102 \AE{^^ae}{"AE}{"BE}%
2103 \Oslash{^^af}{"AF}{"BF}%
2104 \pm{^^b1}{"B1}{"B1}%
2105 \leq{^^b2}{"B2}{"B2}%
2106 \geq{^^b3}{"B3}{"B3}%
2107 \yen{^^b4}{"B4}{"B4}%
2108 \mu{^^b5}{"B5}{"B5}%
2109 \delta{^^b6}{"B6}{"B6}%
2110 \Sigma{^^b7}{"B7}{"B7}%
2111 \Pi{^^b8}{"B8}{"B8}%
2112 \pi{^^b9}{"B9}{"B9}%
2113 \florin{^^ba}{"BA}{"BA}%
2114 \ordfeminine{^^bb}{"BB}{"BB}%
2115 \ordmasculine{^^bc}{"BC}{"BC}%
2116 \Omega{^^bd}{"BD}{"BD}%
2117 \ae{^^be}{"AE}{"BE}%
2118 \oslash{^^bf}{"AF}{"BF}%
2119 \questiondown{^^c0}{"C0}{"C0}%
2120 \exclamdown{^^c1}{"C1}{"C1}%
2121 \neg{^^c2}{"C2}{"C2}%
2122 \approx{^^c5}{"C5}{"C5}%
2123 \partial{^^c6}{"C6}{"C6}%
2124 \guilletmotleft{^^c7}{"C7}{"C7}%
2125 \guillemeotright{^^c8}{"C8}{"C8}%
2126 \ellipsis{^^c9}{"C9}{"C9}%

2127 \unbreakablespace{^^ca}{"CA}{"CA}%
2128 \Agrave{^^cb}{"CB}{"88}%
2129 \Atilde{^^cc}{"CC}{"8B}%
2130 \Otilde{^^cd}{"CD}{"9B}%
2131 \OE{^^ce}{"CE}{"CF}%
2132 \oe{^^cf}{"CE}{"CF}%
2133 \emdash{^^d1}{"D1}{"D1}%
2134 \quotedblleft{^^d2}{"D2}{"D2}%
2135 \quotedblright{^^d3}{"D3}{"D3}%
2136 \quoteleft{^^d4}{"D4}{"D4}%
2137 \quoteright{^^d5}{"D5}{"D5}%
2138 \div{^^d6}{"D6}{"D6}%
2139 \diamond{^^d7}{"D7}{"D7}%
2140 \ydieresis{^^d8}{"D9}{"D8}%
2141 \Ydieresis{^^d9}{"D9}{"D8}%
2142 \currency{^^db}{"DB}{"DB}%
2143 \fiLigature{^^de}{"DE}{"DE}%
2144 \flLigature{^^df}{"DF}{"DF}%
2145 \ddag{^^e0}{"E0}{"E0}%
2146 \cedilla{^^e2}{"E2}{"E2}%
2147 \perthousand{^^e4}{"E4}{"E4}%
2148 \Acircumflex{^^e5}{"E5}{"89}%
2149 \Ecircumflex{^^e6}{"E6}{"90}%
2150 \Aacute{^^e7}{"E7}{"87}%
2151 \Edieresis{^^e8}{"E8}{"91}%
2152 \Egrave{^^e9}{"E9}{"8F}%
2153 \Iacute{^^ea}{"EA}{"92}%
2154 \Icircumflex{^^eb}{"EB}{"94}%
2155 \Idieresis{^^ec}{"EC}{"95}%
2156 \Igrave{^^ed}{"ED}{"93}%
2157 \Oacute{^^ee}{"EE}{"97}%
2158 \Ocircumflex{^^ef}{"EF}{"99}%
2159 \Ograve{^^f1}{"F1}{"98}%
2160 \Uacute{^^f2}{"F2}{"9C}%
2161 \Ucircumflex{^^f3}{"F3}{"9E}%
2162 \Ugrave{^^f4}{"F4}{"9D}%
2163 \powerone{^^f5}{"F5}{"F5}%
2164 \endgroup
\@MakeHyphenationMac
2165 \ifnum\CurrentEncoding=\DC\relax
2166 \def\@MakeHyphenationMac#1{%
2167 \catcode`#1=12%Legal value for \hyphenation
2168 \ifnum`#1="80
2169  % A dieresis --> C4 (graphical symbol)
2170  \lccode`#1="C4%
2171 \else\ifnum`#1="81
2172  %A ring --> "C5 (approx sign)
2173  \lccode`#1="C5%
2174 \else\ifnum`#1="82
2175  %C cedilla --> "C7 (french opening guillemet)
2176  \lccode`#1="C7%
2177 \else\ifnum`#1="83
2178  %E acute --> "C9 (three dot sign)
2179  \lccode`#1="C9%
2180 \else\ifnum`#1="84
2181  %N tilde --> "D1 (long dash)
2182  \lccode`#1="D1%
2183 \else\ifnum`#1="85
2184  %O dieresis --> "D6 (divide sign)
2185  \lccode`#1="D6%
2186 \else\ifnum`#1="86

2187  %U dieresis --> "DC (graphical symbol)
2188  \lccode`#1="DC%
2189 \else\ifnum`#1="87
2190  %a acute --> "E1 (graphical symbol)
2191  \lccode`#1="E1%
2192 \else\ifnum`#1="88
2193  %a grave --> "E0 (double dag sign)
2194  \lccode`#1="E0%
2195 \else\ifnum`#1="89
2196  %a circumflex --> "E2 (cedilla accent)
2197  \lccode`#1="E2%
2198 \else\ifnum`#1="8A
2199  %a dieresis --> "E4 (graphical symbol)
2200  \lccode`#1="E4%
2201 \else\ifnum`#1="8B
2202  %a tilde --> "E3 (graphical symbol)
2203  \lccode`#1="E3%
2204 \else\ifnum`#1="8C
2205  %a ring --> "E5 (A circumflex) --> a circumflex
2206  \lccode`#1="89%
2207 \else\ifnum`#1="8D
2208  %c cedilla --> "E7 (A acute) --> a acute
2209  \lccode`#1="87%
2210 \else\ifnum`#1="8E
2211  %e acute --> "E9 (E grave) --> e grave
2212  \lccode`#1="8F%
2213 \else\ifnum`#1="8F
2214  %e grave --> "E8 (E dieresis) --> e dieresis
2215  \lccode`#1="91%
2216 \else\ifnum`#1="90
2217  %e circumflex --> "EA (I acute) --> i acute
2218  \lccode`#1="92%
2219 \else\ifnum`#1="91
2220  %e dieresis --> "EB (I circumflex) --> i circumflex
2221  \lccode`#1="94%
2222 \else\ifnum`#1="92
2223  %i acute --> "ED (I grave) --> i grave
2224  \lccode`#1="93%
2225 \else\ifnum`#1="93
2226  %i grave --> "EC (I dieresis) --> i dieresis
2227  \lccode`#1="95%
2228 \else\ifnum`#1="94
2229  %i circumflex --> "EE (O acute) --> o acute
2230  \lccode`#1="97%
2231 \else\ifnum`#1="95
2232  %i dieresis --> "EF (O circumflex) --> o circumflex
2233  \lccode`#1="99%
2234 \else\ifnum`#1="96
2235  %n tilde --> "F1 (O grave) --> o grave
2236  \lccode`#1="98%
2237 \else\ifnum`#1="97
2238  %o acute --> "F3 (U circumflex) --> u circumflex
2239  \lccode`#1="9E%
2240 \else\ifnum`#1="98
2241  %o grave --> "F2 (U acute) --> u acute
2242  \lccode`#1="9C%
2243 \else\ifnum`#1="99
2244  %o circumflex --> "F4 (U grave) --> u grave
2245  \lccode`#1="9D%
2246 \else\ifnum`#1="9A
2247  %o dieresis --> "F6 (graphical sign)
2248  \lccode`#1="F6%

2249 \else\ifnum`#1="9B
2250  %o tilde --> "F5 (power one sign)
2251  \lccode`#1="F5%
2252 \else\ifnum`#1="9C
2253  %u acute --> "FA (graphical sign)
2254  \lccode`#1="FA%
2255 \else\ifnum`#1="9D
2256  %u grave --> "F9 (graphical sign)
2257  \lccode`#1="F9%
2258 \else\ifnum`#1="9E
2259  %u circumflex --> "FB (graphical sign)
2260  \lccode`#1="FB%
2261 \else\ifnum`#1="9F
2262  %u dieresis --> "FC (graphical sign)
2263  \lccode`#1="FC%
2264 \else\ifnum`#1="AE
2265  %AE ligature --> "C6 (differential sign)
2266  \lccode`#1="C6%
2267 \else\ifnum`#1="BE
2268  %ae ligature --> "E6 (E circumflex) --> e circumflex
2269  \lccode`#1="90%
2270 \else\ifnum`#1="CB
2271  %A grave --> "C0 (Interrogation down sign)
2272  \lccode`#1="C0%
2273 \else\ifnum`#1="CC
2274  %A tilde --> "C3 (graphical sign)
2275  \lccode`#1="C3%
2276 \else\ifnum`#1="CD
2277  %O tilde --> "D5 (closing american quote)
2278  \lccode`#1="D5%
2279 \else\ifnum`#1="CE
2280  %OE ligature --> "D7 (diamond sign)
2281  \lccode`#1="D7%
2282 \else\ifnum`#1="CF
2283  %oe ligature --> "F7 (graphical sign)
2284  \lccode`#1="F7%
2285 \else\ifnum`#1="D8
2286  %y dieresis --> "B8 (Pi sign)
2287  \lccode`#1="B8%
2288 \else\ifnum`#1="E5
2289  %A circumflex --> "C2 (neg sign)
2290  \lccode`#1="C2%
2291 \else\ifnum`#1="E6
2292  %E circumflex --> "CA (graphical sign)
2293  \lccode`#1="CA%
2294 \else\ifnum`#1="E7
2295  %A acute --> "C1 (Exclam down sign)
2296  \lccode`#1="C1%
2297 \else\ifnum`#1="E8
2298  %E dieresis --> "CB (A acute) --> a acute
2299  \lccode`#1="88%
2300 \else\ifnum`#1="E9
2301  %E grave --> "C8 (closing french guillemet)
2302  \lccode`#1="C8%
2303 \else\ifnum`#1="EA
2304  %I acute --> "CD (O tilde) --> o tilde
2305  \lccode`#1="9B%
2306 \else\ifnum`#1="EB
2307  %I circumflex --> "CE (OE ligature) --> oe ligature
2308  \lccode`#1="EF%
2309  \@ConflictHyphenCarMsg{I circumflex ("EB)}{I dieresis ("EC)}%
2310 \else\ifnum`#1="EC

2311  %I dieresis --> "CF (oe ligature)
2312  \lccode`#1="EF%
2313  \@ConflictHyphenCarMsg{I dieresis ("EC)}{I circumflex ("EB)}%
2314 \else\ifnum`#1="ED
2315  %I acute --> "CC (A tilde) --> a tilde
2316  \lccode`#1="8B%
2317 \else\ifnum`#1="EE%
2318  %O acute --> "D3 (closing us guillemet)
2319  \lccode`#1="D3%
2320 \else\ifnum`#1="EF%
2321  %O circumflex --> "D4 (opening quote)
2322  \lccode`#1="D4%
2323 \else\ifnum`#1="F1%
2324  %O grave --> "D2 (Opening US guillemets)
2325  \lccode`#1="D2%
2326 \else\ifnum`#1="F2%
2327  %U acute --> "DA (graphical character)
2328  \lccode`#1="DA%
2329 \else\ifnum`#1="F3%
2330  %U circumflex --> "DB (graphical character)
2331  \lccode`#1="DB%
2332 \else\ifnum`#1="F4%
2333  %U grave --> "D9 (Y dieresis) --> y dieresis
2334  \lccode`#1="D8%
2335 \else
2336  %we don't have a letter (a character to form word)
2337  \@BadHyphenCarMsg{#1}
2338  \catcode`#1=15% make this character invalid
2339 \fi\fi\fi\fi\fi\fi\fi\fi\fi\fi
2340 \fi\fi\fi\fi\fi\fi\fi\fi\fi\fi
2341 \fi\fi\fi\fi\fi\fi\fi\fi\fi\fi
2342 \fi\fi\fi\fi\fi\fi\fi\fi\fi\fi
2343 \fi\fi\fi\fi\fi\fi\fi\fi\fi\fi
2344 \fi\fi\fi\fi\fi
2345 % We must have same count of \fi than \ifnum (55)

2346 }%

2347 \fi %\ifx\CurrentEncoding...
2348 \catcode`\@=\atcatcode \let\atcatcode\relax

2349 ⟨/codepagemac⟩

4.7 Table for the code page of Iso Latin set One (file: codeiso1.tex)

\@IsoLatinSetOne

2350 ⟨∗codepageiso1⟩

2351 \chardef\atcatcode=\catcode`\@
2352 \catcode`\@=11\relax

2353 {%

2354  \catcode`\Y=\active
2355  \gdef Y{\string Y}%

2356 }%

2357 \begingroup
2358 \input initcar %
2359 \ifcase\CurrentEncoding
2360 \input shapecm %
2361 \Agrave{^^c0}{"C0}{"E0}%
2362 \Aacute{^^c1}{"C1}{"E1}%
2363 \Acircumflex{^^c2}{"C2}{"E2}%
2364 \Atilde{^^c3}{"C3}{"E3}%
2365 \Adieresis{^^c4}{"C4}{"E4}%
2366 \Aring{^^c5}{"C5}{"E5}%
2367 \AE{^^c6}{"C6}{"E6}%

2368 \Ccedilla{^^c7}{"C7}{"E7}%
2369 \Egrave{^^c8}{"C8}{"E8}%
2370 \Eacute{^^c9}{"C9}{"E9}%
2371 \Ecircumflex{^^ca}{"CA}{"EA}%
2372 \Edieresis{^^cb}{"CB}{"EB}%
2373 \Igrave{^^cc}{"CC}{"EC}%
2374 \Iacute{^^cd}{"CD}{"ED}%
2375 \Icircumflex{^^ce}{"CE}{"EE}%
2376 \Idieresis{^^cf}{"CF}{"EF}%
2377 \DBar{^^d0}{"D0}{"F0}%
2378 \Ntilde{^^d1}{"D1}{"F1}%
2379 \Ograve{^^d2}{"D2}{"F2}%
2380 \Oacute{^^d3}{"D3}{"F3}%
2381 \Ocircumflex{^^d4}{"D4}{"F4}%
2382 \Otilde{^^d5}{"D5}{"F5}%
2383 \Odieresis{^^d6}{"D6}{"F6}%
2384 \times{^^d7}{"D7}{"D7}%
2385 \Oslash{^^d8}{"D8}{"F8}%
2386 \Ugrave{^^d9}{"D9}{"F9}%
2387 \Uacute{^^da}{"DA}{"FA}%
2388 \Ucircumflex{^^db}{"DB}{"FB}%
2389 \Udieresis{^^dc}{"DC}{"FC}%
2390 \Yacute{^^dd}{"DD}{"FD}%
2391 \thorn{^^de}{"FE}{"DE}%
2392 \beta{^^df}{"DF}{"DF}%
2393 \agrave{^^e0}{"C0}{"E0}%
2394 \aacute{^^e1}{"C1}{"E1}%
2395 \acircumflex{^^e2}{"C2}{"E2}%
2396 \atilde{^^e3}{"C3}{"E3}%
2397 \adieresis{^^e4}{"C4}{"E4}%
2398 \aring{^^e5}{"C5}{"E5}%
2399 \ae{^^e6}{"C6}{"E6}%
2400 \ccedilla{^^e7}{"C7}{"E7}%
2401 \egrave{^^e8}{"C8}{"E8}%
2402 \eacute{^^e9}{"C9}{"E9}%
2403 \ecircumflex{^^ea}{"CA}{"EA}%
2404 \edieresis{^^eb}{"CB}{"EB}%
2405 \igrave{^^ec}{"CC}{"EC}%
2406 \iacute{^^ed}{"CD}{"ED}%
2407 \icircumflex{^^ee}{"CE}{"EE}%
2408 \idieresis{^^ef}{"CF}{"EF}%
2409 \dBar{^^f0}{"D0}{"F0}%
2410 \ntilde{^^f1}{"D1}{"F1}%
2411 \ograve{^^f2}{"D2}{"F2}%
2412 \oacute{^^f3}{"D3}{"F3}%
2413 \ocircumflex{^^f4}{"D4}{"F4}%
2414 \otilde{^^f5}{"D5}{"F5}%
2415 \odieresis{^^f6}{"D6}{"F6}%
2416 \div{^^f7}{"F7}{"F7}%
2417 \oslash{^^f8}{"D8}{"F8}%
2418 \ugrave{^^f9}{"D9}{"F9}%
2419 \uacute{^^fa}{"DA}{"FA}%
2420 \ucircumflex{^^fb}{"DB}{"FB}%
2421 \udieresis{^^fc}{"DC}{"FC}%
2422 \yacute{^^fd}{"DD}{"FD}%
2423 \Thorn{^^fe}{"DE}{"FE}%
2424 \ydieresis{^^ff}{"59}{"FF}%

2425 \or

2426 \input shapedc %

The following characters are in the same place in both (Iso1 and Dc) encodings. Thus the only thing to do is to change the 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.

2427 %Agrave
2428 \global\catcode"C0=11\global\uccode"C0="C0\global\lccode"C0="E0%
2429 %Aacute
2430 \global\catcode"C1=11\global\uccode"C1="C1\global\lccode"C1="E1%
2431 %Acircumflex
2432 \global\catcode"C2=11\global\uccode"C2="C2\global\lccode"C2="E2%
2433 %Atilde
2434 \global\catcode"C3=11\global\uccode"C3="C3\global\lccode"C3="E3%
2435 %Adieresis
2436 \global\catcode"C4=11\global\uccode"C4="C4\global\lccode"C4="E4%
2437 %Aring
2438 \global\catcode"C5=11\global\uccode"C5="C5\global\lccode"C5="E5%

2439 %AE

2440 \global\catcode"C6=11\global\uccode"C6="C6\global\lccode"C6="E6%
2441 %Ccedilla
2442 \global\catcode"C7=11\global\uccode"C7="C7\global\lccode"C7="E7
2443 %Egrave
2444 \global\catcode"C8=11\global\uccode"C8="C8\global\lccode"C8="E8%
2445 %Eacute
2446 \global\catcode"C9=11\global\uccode"C9="C9\global\lccode"C9="E9%
2447 %Ecircumflex
2448 \global\catcode"CA=11\global\uccode"CA="CA\global\lccode"CA="EA%
2449 %Edieresis
2450 \global\catcode"CB=11\global\uccode"CB="CB\global\lccode"CB="EB%
2451 %Igrave
2452 \global\catcode"CC=11\global\uccode"CC="CC\global\lccode"CC="EC%
2453 %Iacute
2454 \global\catcode"CD=11\global\uccode"CD="CD\global\lccode"CD="ED%
2455 %Icircumflex
2456 \global\catcode"CE=11\global\uccode"CE="CE\global\lccode"CE="EE%
2457 %Idieresis
2458 \global\catcode"CF=11\global\uccode"CF="CF\global\lccode"CF="EF%
2459 %DBar
2460 \global\catcode"D0=11\global\uccode"D0="D0\global\lccode"D0="F0%
2461 %Ntilde
2462 \global\catcode"D1=11\global\uccode"D1="D1\global\lccode"D1="F1%
2463 %Ograve
2464 \global\catcode"D2=11\global\uccode"D2="D2\global\lccode"D2="F2%
2465 %Oacute
2466 \global\catcode"D3=11\global\uccode"D3="D3\global\lccode"D3="F3%
2467 %Ocircumflex
2468 \global\catcode"D4=11\global\uccode"D4="D4\global\lccode"D4="F4%
2469 %Otilde
2470 \global\catcode"D5=11\global\uccode"D5="D5\global\lccode"D5="F5%
2471 %Odieresis
2472 \global\catcode"D6=11\global\uccode"D6="D6\global\lccode"D6="F6%
2473 \times{^^d7}{"D7}{"D7}%
2474 %Oslash
2475 \global\catcode"D8=11\global\uccode"D8="D8\global\lccode"D8="F8%
2476 %Ugrave
2477 \global\catcode"D9=11\global\uccode"D9="D9\global\lccode"D9="F9%
2478 %Uacute
2479 \global\catcode"DA=11\global\uccode"DA="DA\global\lccode"DA="FA%
2480 %Ucircumflex
2481 \global\catcode"DB=11\global\uccode"DB="DB\global\lccode"DB="FB%
2482 %Udieresis
2483 \global\catcode"DC=11\global\uccode"DC="DC\global\lccode"DC="FC%
2484 %Yacute
2485 \global\catcode"DD=11\global\uccode"DD="DD\global\lccode"DD="FD%

2486 %thorn
2487 \global\catcode"DE=11\global\uccode"DE="FE\global\lccode"DE="DE%
2488 \beta{^^df}{"DF}{"DF}%
2489 %agrave
2490 \global\catcode"E0=11\global\uccode"E0="C0\global\lccode"E0="E0%
2491 %aacute
2492 \global\catcode"E1=11\global\uccode"E1="C1\global\lccode"E1="E1%
2493 %acircumflex
2494 \global\catcode"E2=11\global\uccode"E2="C2\global\lccode"E2="E2%
2495 %atilde
2496 \global\catcode"E3=11\global\uccode"E3="C3\global\lccode"E3="E3%
2497 %adieresis
2498 \global\catcode"E4=11\global\uccode"E4="C4\global\lccode"E4="E4%
2499 %aring
2500 \global\catcode"E5=11\global\uccode"E5="C5\global\lccode"E5="E5%

2501 %ae

2502 \global\catcode"E6=11\global\uccode"E6="C6\global\lccode"E6="E6%
2503 %ccedilla
2504 \global\catcode"E7=11\global\uccode"E7="C7\global\lccode"E7="E7%
2505 %egrave
2506 \global\catcode"E8=11\global\uccode"E8="C8\global\lccode"E8="E8%
2507 %eacute
2508 \global\catcode"E9=11\global\uccode"E9="C9\global\lccode"E9="E9%
2509 %ecircumflex
2510 \global\catcode"EA=11\global\uccode"EA="CA\global\lccode"EA="EA%
2511 %edieresis
2512 \global\catcode"EB=11\global\uccode"EB="CB\global\lccode"EB="EB%
2513 %igrave
2514 \global\catcode"EC=11\global\uccode"EC="CC\global\lccode"EC="EC%
2515 %iacute
2516 \global\catcode"ED=11\global\uccode"ED="CD\global\lccode"ED="ED%
2517 %icircumflex
2518 \global\catcode"EE=11\global\uccode"EE="CE\global\lccode"EE="EE%
2519 %idieresis
2520 \global\catcode"EF=11\global\uccode"EF="CF\global\lccode"EF="EF%
2521 %dBar
2522 \global\catcode"F0=11\global\uccode"F0="D0\global\lccode"F0="F0%
2523 %ntilde
2524 \global\catcode"F1=11\global\uccode"F1="D1\global\lccode"F1="F1%
2525 %ograve
2526 \global\catcode"F2=11\global\uccode"F2="D2\global\lccode"F2="F2%
2527 %oacute
2528 \global\catcode"F3=11\global\uccode"F3="D3\global\lccode"F3="F3%
2529 %ocircumflex
2530 \global\catcode"F4=11\global\uccode"F4="D4\global\lccode"F4="F4%
2531 %otilde
2532 \global\catcode"F5=11\global\uccode"F5="D5\global\lccode"F5="F5%
2533 %odieresis
2534 \global\catcode"F6=11\global\uccode"F6="D6\global\lccode"F6="F6%
2535 \div{^^f7}{"F7}{"F7}%
2536 %oslash
2537 \global\catcode"F8=11\global\uccode"F8="D8\global\lccode"F8="F8%
2538 %ugrave
2539 \global\catcode"F9=11\global\uccode"F9="D9\global\lccode"F9="F9%
2540 %uacute
2541 \global\catcode"FA=11\global\uccode"FA="DA\global\lccode"FA="FA%
2542 %ucircumflex
2543 \global\catcode"FB=11\global\uccode"FB="DB\global\lccode"FB="FB%
2544 %udieresis
2545 \global\catcode"FC=11\global\uccode"FC="DC\global\lccode"FC="FC%
2546 %yacute
2547 \global\catcode"FD=11\global\uccode"FD="DD\global\lccode"FD="FD%

2548 %Thorn
2549 \global\catcode"FE=11\global\uccode"FE="DE\global\lccode"FE="FE%
2550 %ydieresis
2551 \global\catcode"FF=11\global\uccode"FF="59\global\lccode"FF="FF%
2552 \fi %\ifcase

These symbols are drawn with mathematical commands and thus are aleways “active” in both encoding

2553 \exclamdown{^^a1}{"A1}{"A1}%
2554 \cent{^^a2}{"A2}{"A2}%
2555 \pounds{^^a3}{"A3}{"A3}%
2556 \currency{^^a4}{"A4}{"A4}%
2557 \yen{^^a5}{"A5}{"A5}%
2558 \splitbar{^^a6}{"A6}{"A6}%
2559 \section{^^a7}{"A7}{"A7}%
2560 \dieresis{^^a8}{"A8}{"A8}%
2561 \copyright{^^a9}{"A9}{"A9}%
2562 \ordfeminine{^^aa}{"AA}{"AA}%
2563 \guilletmotleft{^^ab}{"AB}{"AB}%
2564 \neg{^^ac}{"AC}{"AC}%
2565 \register{^^ad}{"AD}{"AD}%
2566 \degree{^^b0}{"B0}{"B0}%
2567 \pm{^^b1}{"B1}{"B1}%
2568 \powertwo{^^b2}{"B2}{"B2}%
2569 \powerthree{^^b3}{"B3}{"B3}%
2570 \mu{^^b5}{"B5}{"B5}%
2571 \ParagraphSign{^^b6}{"B6}{"B6}%
2572 \bullet{^^b7}{"B7}{"B7}%
2573 \cedilla{^^b8}{"B8}{"B8}%
2574 \powerone{^^b9}{"B9}{"B9}%
2575 \ordmasculine{^^ba}{"BA}{"BA}%
2576 \guillemeotright{^^bb}{"BB}{"BB}%
2577 \OneQuarter{^^bc}{"BC}{"BC}%
2578 \OneHalf{^^bd}{"BD}{"BD}%
2579 \threequarter{^^be}{"BE}{"BE}%
2580 \questiondown{^^bf}{"BF}{"BF}%
2581 \endgroup
\@MakeHyphenationLatin1
2582 \ifnum\CurrentEncoding=\DC
2583 \def\@MakeHyphenationLatinOne#1{%
2584 % Here we have not too much work since the character from Iso Latin set one and
2585 % from DC encoding are the same. We just do the verification that the character
2586 % is a letter.
2587 \catcode`#1=12%
2588 \ifnum`#1>"C0%
2589 \ifnum`#1="D7% Times sign
2590  \@BadHyphenCarMsg{#1}%

2591 \fi

2592 \ifnum`#1="DF% beta sign
2593  \@BadHyphenCarMsg{#1}%

2594 \fi

2595 \ifnum`#1="F7% Divide sign
2596  \@BadHyphenCarMsg{#1}%

2597 \fi

2598 \else
2599 \@BadHyphenCarMsg{#1}%

2600 \fi 2601 }%

2602 \fi %\ifnum\CurrentEncoding...
2603 \catcode`\@=\atcatcode \let\atcatcode\relax

2604 ⟨/codepageiso1⟩

4.8 Default value for each character (file: initcar.tex)

The file when inputting give a default value to each character above 127, and set the value for \lccode and \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 \hyphenation.

2605 ⟨∗initcar⟩

2606 \gdef^^80{\@DefaultValue{80}}\global\uccode"80="80\global\lccode"80="80%
2607 \gdef^^81{\@DefaultValue{81}}\global\uccode"81="81\global\lccode"81="81%
2608 \gdef^^82{\@DefaultValue{82}}\global\uccode"82="82\global\lccode"82="82%
2609 \gdef^^83{\@DefaultValue{83}}\global\uccode"83="83\global\lccode"83="83%
2610 \gdef^^84{\@DefaultValue{84}}\global\uccode"84="84\global\lccode"84="84%
2611 \gdef^^85{\@DefaultValue{85}}\global\uccode"85="85\global\lccode"85="85%
2612 \gdef^^86{\@DefaultValue{86}}\global\uccode"86="86\global\lccode"86="86%
2613 \gdef^^87{\@DefaultValue{87}}\global\uccode"87="87\global\lccode"87="87%
2614 \gdef^^88{\@DefaultValue{88}}\global\uccode"88="88\global\lccode"88="88%
2615 \gdef^^89{\@DefaultValue{89}}\global\uccode"89="89\global\lccode"89="89%
2616 \gdef^^8a{\@DefaultValue{8a}}\global\uccode"8A="8A\global\lccode"8A="8A%
2617 \gdef^^8b{\@DefaultValue{8b}}\global\uccode"8B="8B\global\lccode"8B="8B%
2618 \gdef^^8c{\@DefaultValue{8c}}\global\uccode"8C="8C\global\lccode"8C="8C%
2619 \gdef^^8d{\@DefaultValue{8d}}\global\uccode"8D="8D\global\lccode"8D="8D%
2620 \gdef^^8e{\@DefaultValue{8e}}\global\uccode"8E="8E\global\lccode"8E="8E%
2621 \gdef^^8f{\@DefaultValue{8f}}\global\uccode"8F="8F\global\lccode"8F="8F%
2622 \gdef^^90{\@DefaultValue{90}}\global\uccode"90="90\global\lccode"90="90%
2623 \gdef^^91{\@DefaultValue{91}}\global\uccode"91="91\global\lccode"91="91%
2624 \gdef^^92{\@DefaultValue{92}}\global\uccode"92="92\global\lccode"92="92%
2625 \gdef^^93{\@DefaultValue{93}}\global\uccode"93="93\global\lccode"93="93%
2626 \gdef^^94{\@DefaultValue{94}}\global\uccode"94="94\global\lccode"94="94%
2627 \gdef^^95{\@DefaultValue{95}}\global\uccode"95="95\global\lccode"95="95%
2628 \gdef^^96{\@DefaultValue{96}}\global\uccode"96="96\global\lccode"96="96%
2629 \gdef^^97{\@DefaultValue{97}}\global\uccode"97="97\global\lccode"97="97%
2630 \gdef^^98{\@DefaultValue{98}}\global\uccode"98="98\global\lccode"98="98%
2631 \gdef^^99{\@DefaultValue{99}}\global\uccode"99="99\global\lccode"99="99%
2632 \gdef^^9a{\@DefaultValue{9a}}\global\uccode"9A="9A\global\lccode"9A="9A%
2633 \gdef^^9b{\@DefaultValue{9b}}\global\uccode"9B="9B\global\lccode"9B="9B%
2634 \gdef^^9c{\@DefaultValue{9c}}\global\uccode"9C="9C\global\lccode"9C="9C%
2635 \gdef^^9d{\@DefaultValue{9d}}\global\uccode"9D="9D\global\lccode"9D="9D%
2636 \gdef^^9e{\@DefaultValue{9e}}\global\uccode"9E="9E\global\lccode"9E="9E%
2637 \gdef^^9f{\@DefaultValue{9f}}\global\uccode"9F="9F\global\lccode"9F="9F%
2638 \gdef^^a0{\@DefaultValue{a0}}\global\uccode"A0="A0\global\lccode"A0="A0%
2639 \gdef^^a1{\@DefaultValue{a1}}\global\uccode"A1="A1\global\lccode"A1="A1%
2640 \gdef^^a2{\@DefaultValue{a2}}\global\uccode"A2="A2\global\lccode"A2="A2%
2641 \gdef^^a3{\@DefaultValue{a3}}\global\uccode"A3="A3\global\lccode"A3="A3%
2642 \gdef^^a4{\@DefaultValue{a4}}\global\uccode"A4="A4\global\lccode"A4="A4%
2643 \gdef^^a5{\@DefaultValue{a5}}\global\uccode"A5="A5\global\lccode"A5="A5%
2644 \gdef^^a6{\@DefaultValue{a6}}\global\uccode"A6="A6\global\lccode"A6="A6%
2645 \gdef^^a7{\@DefaultValue{a7}}\global\uccode"A7="A7\global\lccode"A7="A7%
2646 \gdef^^a8{\@DefaultValue{a8}}\global\uccode"A8="A8\global\lccode"A8="A8%
2647 \gdef^^a9{\@DefaultValue{a9}}\global\uccode"A9="A9\global\lccode"A9="A9%
2648 \gdef^^aa{\@DefaultValue{aa}}\global\uccode"AA="AA\global\lccode"AA="AA%
2649 \gdef^^ab{\@DefaultValue{ab}}\global\uccode"AB="AB\global\lccode"AB="AB%
2650 \gdef^^ac{\@DefaultValue{ac}}\global\uccode"AC="AC\global\lccode"AC="AC%
2651 \gdef^^ad{\@DefaultValue{ad}}\global\uccode"AD="AD\global\lccode"AD="AD%
2652 \gdef^^ae{\@DefaultValue{ae}}\global\uccode"AE="AE\global\lccode"AE="AE%
2653 \gdef^^af{\@DefaultValue{af}}\global\uccode"AF="AF\global\lccode"AF="AF%
2654 \gdef^^b0{\@DefaultValue{b0}}\global\uccode"B0="B0\global\lccode"B0="B0%
2655 \gdef^^b1{\@DefaultValue{b1}}\global\uccode"B1="B1\global\lccode"B1="B1%
2656 \gdef^^b2{\@DefaultValue{b2}}\global\uccode"B2="B2\global\lccode"B2="B2%
2657 \gdef^^b3{\@DefaultValue{b3}}\global\uccode"B3="B3\global\lccode"B3="B3%
2658 \gdef^^b4{\@DefaultValue{b4}}\global\uccode"B4="B4\global\lccode"B4="B4%

2659 \gdef^^b5{\@DefaultValue{b5}}\global\uccode"B5="B5\global\lccode"B5="B5%
2660 \gdef^^b6{\@DefaultValue{b6}}\global\uccode"B6="B6\global\lccode"B6="B6%
2661 \gdef^^b7{\@DefaultValue{b7}}\global\uccode"B7="B7\global\lccode"B7="B7%
2662 \gdef^^b8{\@DefaultValue{b8}}\global\uccode"B8="B8\global\lccode"B8="B8%
2663 \gdef^^b9{\@DefaultValue{b9}}\global\uccode"B9="B9\global\lccode"B9="B9%
2664 \gdef^^ba{\@DefaultValue{ba}}\global\uccode"BA="BA\global\lccode"BA="BA%
2665 \gdef^^bb{\@DefaultValue{bb}}\global\uccode"BB="BB\global\lccode"BB="BB%
2666 \gdef^^bc{\@DefaultValue{bc}}\global\uccode"BC="BC\global\lccode"BC="BC%
2667 \gdef^^bd{\@DefaultValue{bd}}\global\uccode"BD="BD\global\lccode"BD="BD%
2668 \gdef^^be{\@DefaultValue{be}}\global\uccode"BE="BE\global\lccode"BE="BE%
2669 \gdef^^bf{\@DefaultValue{bf}}\global\uccode"BF="BF\global\lccode"BF="BF%
2670 \gdef^^c0{\@DefaultValue{c0}}\global\uccode"C0="C0\global\lccode"C0="C0%
2671 \gdef^^c1{\@DefaultValue{c1}}\global\uccode"C1="C1\global\lccode"C1="C1%
2672 \gdef^^c2{\@DefaultValue{c2}}\global\uccode"C2="C2\global\lccode"C2="C2%
2673 \gdef^^c3{\@DefaultValue{c3}}\global\uccode"C3="C3\global\lccode"C3="C3%
2674 \gdef^^c4{\@DefaultValue{c4}}\global\uccode"C4="C4\global\lccode"C4="C4%
2675 \gdef^^c5{\@DefaultValue{c5}}\global\uccode"C5="C5\global\lccode"C5="C5%
2676 \gdef^^c6{\@DefaultValue{c6}}\global\uccode"C6="C6\global\lccode"C6="C6%
2677 \gdef^^c7{\@DefaultValue{c7}}\global\uccode"C7="C7\global\lccode"C7="C7%
2678 \gdef^^c8{\@DefaultValue{c8}}\global\uccode"C8="C8\global\lccode"C8="C8%
2679 \gdef^^c9{\@DefaultValue{c9}}\global\uccode"C9="C9\global\lccode"C9="C9%
2680 \gdef^^ca{\@DefaultValue{ca}}\global\uccode"CA="CA\global\lccode"CA="CA%
2681 \gdef^^cb{\@DefaultValue{cb}}\global\uccode"CB="CB\global\lccode"CB="CB%
2682 \gdef^^cc{\@DefaultValue{cc}}\global\uccode"CC="CC\global\lccode"CC="CC%
2683 \gdef^^cd{\@DefaultValue{cd}}\global\uccode"CD="CD\global\lccode"CD="CD%
2684 \gdef^^ce{\@DefaultValue{ce}}\global\uccode"CE="CE\global\lccode"CE="CE%
2685 \gdef^^cf{\@DefaultValue{cf}}\global\uccode"CF="CF\global\lccode"CF="CF%
2686 \gdef^^d0{\@DefaultValue{d0}}\global\uccode"D0="D0\global\lccode"D0="D0%
2687 \gdef^^d1{\@DefaultValue{d1}}\global\uccode"D1="D1\global\lccode"D1="D1%
2688 \gdef^^d2{\@DefaultValue{d2}}\global\uccode"D2="D2\global\lccode"D2="D2%
2689 \gdef^^d3{\@DefaultValue{d3}}\global\uccode"D3="D3\global\lccode"D3="D3%
2690 \gdef^^d4{\@DefaultValue{d4}}\global\uccode"D4="D4\global\lccode"D4="D4%
2691 \gdef^^d5{\@DefaultValue{d5}}\global\uccode"D5="D5\global\lccode"D5="D5%
2692 \gdef^^d6{\@DefaultValue{d6}}\global\uccode"D6="D6\global\lccode"D6="D6%
2693 \gdef^^d7{\@DefaultValue{d7}}\global\uccode"D7="D7\global\lccode"D7="D7%
2694 \gdef^^d8{\@DefaultValue{d8}}\global\uccode"D8="D8\global\lccode"D8="D8%
2695 \gdef^^d9{\@DefaultValue{d9}}\global\uccode"D9="D9\global\lccode"D9="D9%
2696 \gdef^^da{\@DefaultValue{da}}\global\uccode"DA="DA\global\lccode"DA="DA%
2697 \gdef^^db{\@DefaultValue{db}}\global\uccode"DB="DB\global\lccode"DB="DB%
2698 \gdef^^dc{\@DefaultValue{dc}}\global\uccode"DC="DC\global\lccode"DC="DC%
2699 \gdef^^dd{\@DefaultValue{dd}}\global\uccode"DD="DD\global\lccode"DD="DD%
2700 \gdef^^de{\@DefaultValue{de}}\global\uccode"DE="DE\global\lccode"DE="DE%
2701 \gdef^^df{\@DefaultValue{df}}\global\uccode"DF="DF\global\lccode"DF="DF%
2702 \gdef^^e0{\@DefaultValue{e0}}\global\uccode"E0="E0\global\lccode"E0="E0%
2703 \gdef^^e1{\@DefaultValue{e1}}\global\uccode"E1="E1\global\lccode"E1="E1%
2704 \gdef^^e2{\@DefaultValue{e2}}\global\uccode"E2="E2\global\lccode"E2="E2%
2705 \gdef^^e3{\@DefaultValue{e3}}\global\uccode"E3="E3\global\lccode"E3="E3%
2706 \gdef^^e4{\@DefaultValue{e4}}\global\uccode"E4="E4\global\lccode"E4="E4%
2707 \gdef^^e5{\@DefaultValue{e5}}\global\uccode"E5="E5\global\lccode"E5="E5%
2708 \gdef^^e6{\@DefaultValue{e6}}\global\uccode"E6="E6\global\lccode"E6="E6%
2709 \gdef^^e7{\@DefaultValue{e7}}\global\uccode"E7="E7\global\lccode"E7="E7%
2710 \gdef^^e8{\@DefaultValue{e8}}\global\uccode"E8="E8\global\lccode"E8="E8%
2711 \gdef^^e9{\@DefaultValue{e9}}\global\uccode"E9="E9\global\lccode"E9="E9%
2712 \gdef^^ea{\@DefaultValue{ea}}\global\uccode"EA="EA\global\lccode"EA="EA%
2713 \gdef^^eb{\@DefaultValue{eb}}\global\uccode"EB="EB\global\lccode"EB="EB%
2714 \gdef^^ec{\@DefaultValue{ec}}\global\uccode"EC="EC\global\lccode"EC="EC%
2715 \gdef^^ed{\@DefaultValue{ed}}\global\uccode"ED="ED\global\lccode"ED="ED%
2716 \gdef^^ee{\@DefaultValue{ee}}\global\uccode"EE="EE\global\lccode"EE="EE%
2717 \gdef^^ef{\@DefaultValue{ef}}\global\uccode"EF="EF\global\lccode"EF="EF%
2718 \gdef^^f0{\@DefaultValue{f0}}\global\uccode"F0="F0\global\lccode"F0="F0%
2719 \gdef^^f1{\@DefaultValue{f1}}\global\uccode"F1="F1\global\lccode"F1="F1%
2720 \gdef^^f2{\@DefaultValue{f2}}\global\uccode"F2="F2\global\lccode"F2="F2%

2721 \gdef^^f3{\@DefaultValue{f3}}\global\uccode"F3="F3\global\lccode"F3="F3%
2722 \gdef^^f4{\@DefaultValue{f4}}\global\uccode"F4="F4\global\lccode"F4="F4%
2723 \gdef^^f5{\@DefaultValue{f5}}\global\uccode"F5="F5\global\lccode"F5="F5%
2724 \gdef^^f6{\@DefaultValue{f6}}\global\uccode"F6="F6\global\lccode"F6="F6%
2725 \gdef^^f7{\@DefaultValue{f7}}\global\uccode"F7="F7\global\lccode"F7="F7%
2726 \gdef^^f8{\@DefaultValue{f8}}\global\uccode"F8="F8\global\lccode"F8="F8%
2727 \gdef^^f9{\@DefaultValue{f9}}\global\uccode"F9="F9\global\lccode"F9="F9%
2728 \gdef^^fa{\@DefaultValue{fa}}\global\uccode"FA="FA\global\lccode"FA="FA%
2729 \gdef^^fb{\@DefaultValue{fb}}\global\uccode"FB="FB\global\lccode"FB="FB%
2730 \gdef^^fc{\@DefaultValue{fc}}\global\uccode"FC="FC\global\lccode"FC="FC%
2731 \gdef^^fd{\@DefaultValue{fd}}\global\uccode"FD="FD\global\lccode"FD="FD%
2732 \gdef^^fe{\@DefaultValue{fe}}\global\uccode"FE="FE\global\lccode"FE="FE%
2733 \gdef^^ff{\@DefaultValue{ff}}\global\uccode"FF="FF\global\lccode"FF="FF%

2734 ⟨/initcar⟩

References

[1] M. Goosens, F. Mittelbach, and A. Samarin The L^{A}TEX Companion, 1994, Addison-Wesley.

[2] V. Eijkhout TEX by Topic A TEXnician’s Reference, 1992 Addison-Wesley

[3] R. Seroul Le petit livre de TEX, 1989, InterÉdition