summaryrefslogtreecommitdiff
path: root/language/greek/ibycus-babel/ibycus-babel.dtx
blob: e3d9face85b022772a5a317b31287cb8ef4839da (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
% \CheckSum{202}
% \iffalse
%
% file `ibycus.dtx'.
% Copyright (c) 2004, 2005  Peter Heslin, Walter Schmidt
%
% This work may be distributed and/or modified under the
% conditions of the LaTeX Project Public License, either version 1.3
% of this license or (at your option) any later version.
% The latest version of this license is in
%   http://www.latex-project.org/lppl.txt
% and version 1.3 or later is part of all distributions of LaTeX
% version 2003/12/01 or later.
%
% This work has the LPPL maintenance status "maintained".
%
% This Current Maintainers of this work are P.~Heslin and W.~Schmidt
%
% This work consists of the files 
% ibycus-babel.dtx, ibycus-babel.ins, ibyhyph.pl, 
% and the derived files 
% ibycus.ldf, lgienc.def and lgifib.fd.
%
%<*driver>
\ProvidesFile{ibycus-babel.dtx}
%</driver>
%
%<ibycus>\ProvidesLanguage{ibycus}
%<lgifib>\ProvidesFile{lgifib.fd}%
%<lgienc>\ProvidesFile{lgienc.def}%
           [2005/11/23 v3.0 (PH/WaS)]
%
%<*driver>
\documentclass{ltxdoc}    
\usepackage{hyperref}
\usepackage{url}
\OnlyDescription
\begin{document}
   \DocInput{ibycus-babel.dtx}
\end{document}
%</driver>
%
% \fi
%
% \GetFileInfo{ibycus-babel.dtx}
% \title{Typesetting ancient Greek\\ using Ibycus-encoded fonts with the Babel system}
% \author{Peter Heslin\thanks{\texttt{p.j.heslin@dur.ac.uk}} \and Walter Schmidt\thanks{\texttt{w-a-schmidt@gmx.net}}}
% \date{\fileversion{} -- \filedate}
% \makeatletter
% \def\eTeX{$\m@th\varepsilon$-\TeX}
% \makeatother
%
% \maketitle
%
% \sloppy
%
% \section{Overview}
% The present document describes a new interface for Greek fonts with
% the so-called `Ibycus' encoding,
% to use them in conjunction with the Babel system for multilanguage typesetting.
% It constitutes an alternative to the well-known macro packages 
% |ibycus4.sty| and |psibycus.sty|, which are distributed together with 
% Pierre A. MacKay's original Ibycus fonts.
% The main advantage over these packages is that automatic
% hyphenation is provided for the Greek language.  Notice, however, that 
% a \TeX\ program with the so-called \eTeX\ extensions is required.
% The implementation is available for \LaTeXe\ only; there are no
% corresponding macro files for plain~\TeX\ or \LaTeX~2.09.
%
%
% \section{\texorpdfstring{{\boldmath Why \eTeX?}}{Why \eTeX?}}
% With `ordinary' \TeX, 
% hyphenation of Greek words will not work properly, if the end of a mixed Greek
% and Latin-alphabet paragraph does not coincide with the end of the
% Greek.  This is due to a misfeature in \TeX: Only one set of
% so-called lccodes is used throughout the length of a paragraph -- only
% those which are valid at its end.  These codes must be adjusted for
% the Ibycus notation in order to tell \TeX\ that accents and breathings 
% a part of the words, rather than punctuation.  So if you have reverted back 
% to a Latin-written language  at the end of the paragraph, the wrong 
% codes for Greek hyphenation are in effect, and the diacritics in Greek words 
% are wrongly considered as punctuation.  
% The problem does, however, \emph{not} occur with an \eTeX\ program; i.e., a 
% \TeX\ program with certain extended capabilites.  In fact, you are
% probably already using \eTeX, even if you did not realize it.
% All up-to-date \LaTeX\ systems are now built upon an \eTeX\ typesetting
% engine, rather than on the classical \TeX\ program.
%
% \section{Basic usage}
% The Greek fonts are assigned a (pseudo-)language named |ibycus|,
% which can be used (almost) like any other language supported by
% Babel.  To enable the use of this language in your document, specify
% it as an option to the Babel package just as you would do for any
% other language.  For instance, to write a document in German with
% some Greek passages:
% \begin{verse}
%   |\usepackage[ibycus,ngerman]{babel}|
% \end{verse}
% 
% A few caveats:  Do  not declare |ibycus| as the default
% language of the document; it is not suitable for this purpose!
% In other words, |ibycus| must never be the last option for Babel.
% And, of course, do not use it together with the packages |ibycus4| 
% or |psibycus|.
%
% The language |ibycus| should be selected only \emph{locally}.  
% Either use the |ibycus| environment to typeset larger passages of Greek text:
% \begin{verse}
%   |\begin{ibycus}                                     | \\
%   |  (Hrodo'tou Qouri'ou i(stori'hs a)po'decis h('de, | \\
%   |  ...                                              | \\
%   |  h(`n ai)ti'hn e)pole'mhsan a)llh'loisi.          | \\
%   |\end{ibycus}                                       |
% \end{verse}
% or use the command |\ibygr|, which is more appropriate for
% short pieces of Greek within Latin-written text:
% \begin{verse}
%      |... Latin, \ibygr{a)rxai=a gra'mmata} and Latin again|
% \end{verse}
% In fact, the environment |ibycus| is nothing but an abbreviation for 
% Babel's |otherlanguage| environment with the option |ibycus|, and 
% |\ibygr{...}| is the same as |\foreignlanguage{ibycus}{...}|.
%
% Within the environment |ibycus| or the argument of |\ibygr|,
% the Ibycus-specific input notation is to be used to enter Greek.  This
% notation is described in the documentation that comes with the Ibycus
% fonts.
% 
% Notice a particular difference between |ibycus| and other languages
% of the Babel system:  Switching to the language |ibycus|  selects
% both a particular font encoding (|LGI|) and a particular font family (by default |fib|), 
% regardless of the font family that was active before. 
%
% Greek fonts and the related input notation can also be
% selected without changing the hyphenation tables; to do so, use the
% declaration |\ibycustext| or the text-generating command
% |\textibycus{...}|.  These macros exist more or less only as a
% side-effect of the implementation; they should normally not be
% needed.
%
% To switch temporarily back to the Latin alphabet within a piece of
% Greek text (without, however, changing the hyphenation table), use
% the declaration |\latintext| or the text-generating macro
% |\textlatin{...}|.  When Babel is loaded with the option |ibycus|,
% these commands not only switch back to the default Latin font
% encoding as usual; they also select the default font family of the
% document.
%
% Ibycus-encoded fonts provide a few traditional text-editor symbols 
% for critical editions:
% 
% \begin{center}
% \begin{tabular}{ll}
% \verb+\braceleft     + & left curly brace \\
% \verb+\braceright    + & right curly brace\\
% \verb+\bracketleftbt + & left half square bracket\\
% \verb+\bracketrightbt+ & right half square bracket\\
% \verb+\sdagger       + & single dagger\\
% \verb+\dbldagger     + & double dagger\\
% \end{tabular}
% \end{center}
% Use of these symbols is not restricted to Greek
% passages.  \textbf{Caution:} 
% In the Ibycus4 package the single dagger carries the name |\dagger|.
% However, this macro belongs to the \LaTeX\ kernel and should not be redefined,
% so the name |\sdagger| is now used for the Ibycus-specific symbol.
%
%
% \section{Using alternative typefaces}
% \label{sec:typefaces}
% By default, Pierre A. MacKay's original Ibycus font family is used to typeset 
% the Greek passages.  
% From version 3.0 on the Ibucus-Babel interface  supports also other font families 
% with the same encoding.  
%
% To select the Greek font family manually, issue the command
% \begin{verse}
%   |\renewcommand{\ibycusdefault}|\marg{family}
% \end{verse}
% after loading of Babel---provided, of course, that the indicated font family is 
% indeed available with the Ibycus encoding LGI.  
% Macro packages to support alternative font familes in general may already include 
% this action; see the related documentation.
%
% If you intend to write a class or package which is to change the font family 
% used by the Ibycus-Babel interface, or if you want to implement a font family
% with Ibycus encoding, see the documentation of the source code, 
% particularly the last section.
%
%
% \section{Scaling the Greek fonts}
% It may sometimes be useful to typeset the Greek fonts a little bit larger
% % or smaller (as compared with their `natural' size), to make them blend better 
% with the typeface used for Latin.
% This can be accomplished through the macro |\setgreekfontscale|.  For instance,
% |\setgreekfontscale{1.05}| will enlarge the Greek fonts by 5\%.
% The command can be issued in the preamble only.
%
%
% \section{The hyphenation patterns}
% The hyphenation patterns for the Ibycus encoding were
% generated by running the Perl script \path{ibyhyph.pl} on
% Dimitrios Filippou's \path{GRAhyph4.tex}, which can be found in the
% CTAN directory \path{language/hyphenation/elhyphen}.  This is an
% improved set of hyphenation patterns for ancient Greek with LGR encoding;
% Babel does not currently use it by default.  With version~3 of the 
% Ibycus-Babel interface, additional manual patches were applied to the
% patterns, in order to fix a bug regarding the use of `lunate sigmas'.
% 
% Dimitrios Filippou's improved hyphenation patterns discover far more
% hyphenation points than the default Babel patterns, and are more
% accurate, especially for compound words.  
% You will notice that there are more hyphenation
% points right after the first letter of words beginning
% with a vowel + consonant + vowel.  Some may find such hyphenations
% surprising, but they are legal, according to the rules for hyphenation
% of Greek, ancient and modern; see the account by Yannis Haralambous:
% `From Unicode to Typography, a Case Study: the Greek Script'
% \path{<http://omega.enstb.org/yannis/pdf/boston99.pdf>}, pp~18f.
% If you find these hyphenation points ugly, issue the command
% \begin{verse}
%   |\def\ibycushyphenmins{2 2}|
% \end{verse}
% after loading of Babel in order to suppress them.
%
% Filippou's patterns also include legal hyphenation points
% immediately before the last letter of a word.  However, the
% Ibycus-Babel interface suppresses them, since they are not only ugly
% but also of little practical use.
%
% Please contact Peter Heslin if you come across any words that
% Ibycus hyphenates differently from the corresponding LGR-encoded
% patterns (except for the suppressed hyphenation before the last
% letter of a word).
%
%
% \section{Problems and deficiencies}
% \begin{itemize}
% \item  Globally changing the language to |ibycus|, i.e., a sequence such as
%   \begin{verse}
%   |\selectlanguage{ibycus}| \\
%   \textit{Greek text\dots}  \\
%   |\selectlanguage{|\textit{anything}|}| \\
%   \end{verse}
%   may have unwanted effects, for instance on the font selection.
%   This can be avoided by selecting
%   the language |ibycus| only within a group or environment,
%   or by using the commands |\ibygr| or |\foreignlanguage|.
% \item The behavior of the existing commands \cmd{\textlatin}
%   and \cmd{\latintext} is altered:  
%   They will switch to the the default font family of the document,
%   rather than leaving the current font family untouched.
% \item  The command \cmd{\setgreekfontscale} has no effect
%   when the Ibycus fonts are already in use;
%   this situation is, however, rather unlikely in the preamble.
% \end{itemize}
%
%
% \section{Incompatible changes over version 1.5}
% The names of several commands and environments have changed:
% \begin{center}
% \begin{tabular}{ll}
% Version 1.5:                  & Version 2.4 and later \\ \hline
% \cmd{\gk}                     & \cmd{\ibygr}     \\
% \texttt{greek} (environment)  & \texttt{ibycus}  \\
% \cmd{\ibylatintext}           & \cmd{\latintext} \\
% \cmd{\dagger}                 & \cmd{\sdagger}
% \end{tabular}
% \end{center} 
% Furthermore, hyphenation before the last letter of a word is now
% suppressed by default.
%
% \StopEventually{}
%
%
% \section{The Implementation}
% \subsection{The \texttt{.ldf} file for use with babel}
%
% When the \TeX\ engine used is not an \eTeX, we issue an appropriate warning:
%    \begin{macrocode}
%<*ibycus>
\ifx\eTeXversion\@undefined
  \PackageError{ibycus-babel}{%
    The TeX engine used by LaTeX \MessageBreak
    does not provide the the eTeX extensions.\MessageBreak
    This may cause wrong hyphenation\MessageBreak
    in mixed Latin/Greek paragraphs}
    {Proceed, with fingers crossed...}
\fi    
%    \end{macrocode}
%
%  The macro |\LdfInit| takes care of preventing that this file is
%  loaded more than once:
%    \begin{macrocode}
\LdfInit{ibycus}{captionsibycus}
%    \end{macrocode}
%  When this file is read as an option, i.e., by the |\usepackage|
%  command, \texttt{ibycus} could be an `unknown' language in
%  which case we have to make it known.  So we check for the
%  existence of |\l@ibycus| to see whether we have to do
%  something here:
%    \begin{macrocode}
\ifx\undefined\l@ibycus
  \@nopatterns{Ibycus}
  \adddialect\l@ibycus0\fi
%    \end{macrocode}
%
% We are going to load the file providing the definition of the LGI encoding,
% see section \ref{sec:lgienc}.
% The error handling has been adopted from Babel's (LGR) Greek module, 
% in order to ensure consistent behavior:
%    \begin{macrocode}
\InputIfFileExists{lgienc.def}{%
  \message{Loading the definitions for the Greek font encoding LGI}}{%
  \errhelp{I can't find the lgienc.def file for the Greek fonts}%
  \errmessage{Since I do not know what the LGI encoding means^^J
    I can't typeset Greek.^^J
    I stop here, while you get a suitable lgienc.def file}\@@end
 }
%    \end{macrocode}
%
% The font family to be used for Greek passages is initialized to |fib|,
% unless it has been defined already by a preceding package:
%    \begin{macrocode}
\providecommand{\ibycusdefault}{fib}
%    \end{macrocode}
% 
% We declare a command |\ibygr| and an environment |ibycus| to make
% entering of Greek text easier, as compared with Babel's macros:
%    \begin{macrocode}
\DeclareRobustCommand{\ibygr}[1]{\foreignlanguage{ibycus}{#1}}
\newenvironment{ibycus}%
  {\begin{otherlanguage}{ibycus}}{\end{otherlanguage}}%
%    \end{macrocode}
%
% A command is provided to set a scaling factor for the Ibycus fonts.
% When the fonts are already in use, the command has no effect.
% We make sure that it can be used only in the preamble, even though this
% does not really make sure that the fonts have not yet been loaded.
%    \begin{macrocode}
\newcommand*{\setgreekfontscale}[1]{%
  \def\ibycus@scale{#1}}
\@onlypreamble\setgreekfontscale
%    \end{macrocode}
% The macro |\ibycus@scale|, which is defined here, will be evaluated
% in the font definition files of LGI-encoded fonts; see \path{lgifib.fd} below.
%
% All text-editor symbols of the old package |ibycus4| are provided.
% However, |\dagger| is named |\sdagger| now.
%    \begin{macrocode}
\newcommand{\braceleft}{%
  {\fontencoding{LGI}\fontfamily{\ibycusdefault}\selectfont\char'333}}
\newcommand{\braceright}{%
  {\fontencoding{LGI}\fontfamily{\ibycusdefault}\selectfont\char'337}}
\newcommand{\bracketleftbt}{%
  {\fontencoding{LGI}\fontfamily{\ibycusdefault}\selectfont\char'363}}
\newcommand{\bracketrightbt}{%
  {\fontencoding{LGI}\fontfamily{\ibycusdefault}\selectfont\char'367}}
\newcommand{\sdagger}{%
  {\fontencoding{LGI}\fontfamily{\ibycusdefault}\selectfont\char'375}}
\newcommand{\dbldagger}{%
  {\fontencoding{LGI}\fontfamily{\ibycusdefault}\selectfont\char'376}}
%    \end{macrocode}
%
% Finally, the code to integrate the pseudo-language Ibycus into Babel.
% We start with the default values of |\lefthyphenmin| and |\righthyphenmin|.
%    \begin{macrocode}
\providehyphenmins{ibycus}{\@ne\tw@}
\def\captionsibycus{}
\def\dateibycus{}
%    \end{macrocode}
%
% \cmd{\latintext} needs to be extended, as compared with the default definition 
% provided by the Babel kernel.   The macro must not only switch to the default 
% Latin font \emph{encoding}; in addition to that, it must also switch to an appropriate 
% font \emph{family}, because the family is always changed to |\ibycusdefault| 
% within the Greek passages.  While v2.0 would select |\rmdefault|, 
% this has been changed to |\familydefault| now.
% Since |\latintext| is a protected command, we extend actually the 
% `unprotected' command \verb*|\latintext |:
%    \begin{macrocode}
\expandafter\let\expandafter\iby@latintext\csname latintext \endcsname
\@namedef{latintext }{\fontfamily{\familydefault}\iby@latintext}
%    \end{macrocode}
%
% \cmd{\ibycustext} is modelled after Babel's original \cmd{\greektext}.
% However, we do not alter \cmd{\encodingdefault} any longer, since
% doing so has turned out to be wrong. (See the \LaTeX\ bug babel/3796.)
% As long as |ibycus| is never used as the default language
% of a document, there is no need to touch \cmd{\encodingdefault} at all.
%    \begin{macrocode}
\DeclareRobustCommand{\ibycustext}{%
  \fontencoding{LGI}\fontfamily{\ibycusdefault}\selectfont}
\DeclareRobustCommand{\textibycus}[1]{\leavevmode{\ibycustext #1}}
\addto\extrasibycus{\ibycustext}
\addto\extrasibycus{%
  \babel@savevariable{\lccode`\(}\lccode`\(=`\(%
  \babel@savevariable{\lccode`\)}\lccode`\)=`\)%
  \babel@savevariable{\lccode`\=}\lccode`\==`\=%
  \babel@savevariable{\lccode`\|}\lccode`\|=`\|%
  \babel@savevariable{\lccode`\`}\lccode`\`=`\`%
  \babel@savevariable{\lccode`\'}\lccode`\'=`\'%
  \babel@savevariable{\lccode`\+}\lccode`\+=`\+}
%    \end{macrocode}
% At the end of a Greek passage, we are going to issue the new command \cmd{\noibycustext}.
% In contrast to \cmd{\latintext}, it does not alter |\encodingdefault|.
%    \begin{macrocode}
\DeclareRobustCommand{\noibycustext}{%
  \fontencoding{\latinencoding}\fontfamily{\familydefault}\selectfont}
\addto\noextrasibycus{\noibycustext}
\ldf@finish{ibycus}
%</ibycus>
%    \end{macrocode}
% Should we save and  restore the actual family name, 
% instead of simply forcing |\familydefault|?
%
% \subsection{The encoding definition file \texttt{lgienc.def}}
% \label{sec:lgienc}
% From v3.0 on, the Ibycus-encoded fonts are assigned the encoding LGI, even though
% there are currently no encoding-specific commands declared.  Rationale:
% Future alternative font families with Ibycus encoding are using U already for other 
% purposes such as non-alphabetic symbols.  As usual, the encoding is declared in an 
% external file.
%    \begin{macrocode}
%<*lgienc>
\DeclareFontEncoding{LGI}{}{}
\DeclareFontSubstitution{LGI}{fib}{m}{n}
\DeclareErrorFont{LGI}{fib}{m}{n}{10}
%</lgienc>
%    \end{macrocode}
%
%
% \subsection{The font definition file \texttt{lgifib.fd}}
% We provide a correct \texttt{fd} file of our own for the Ibycus font family,
% instead of relying on the weird file from the Ibycus4 collection,
% and we use only those fonts, that exist also in Postscript format.
%    \begin{macrocode}
%<*lgifib>
\ifx\aliasfont\@undefined\else\ifx\aliasfont\relax\else
%    \end{macrocode}
% This piece of code is executed with V\TeX\ only.
% It enables the use of the artificially slanted font.
%    \begin{macrocode}
  \begingroup
    \catcode32=10 %
    \aliasfont fibo84 = fibr84 slant 167 %
  \endgroup
\fi\fi
%    \end{macrocode}
% Now let's evaluate \cmd{\ibycus@scale} to determine the optional
% scaling parameter \cmd{\ibycus@@scale}, which will be applied in the 
% font shape declarations:
%    \begin{macrocode}
\expandafter\ifx\csname ibycus@scale\endcsname\relax
 \let\ibycus@@scale\@empty
\else
 \edef\ibycus@@scale{s*[\csname ibycus@scale\endcsname]}%
\fi
\DeclareFontFamily{LGI}{fib}{}
\DeclareFontShape{LGI}{fib}{m}{n}{<-> \ibycus@@scale fibr84}{}
\DeclareFontShape{LGI}{fib}{m}{sl}{<-> \ibycus@@scale fibo84}{}
\DeclareFontShape{LGI}{fib}{b}{n}{<-> \ibycus@@scale fibb84}{}
\DeclareFontShape{LGI}{fib}{m}{it}{<-> ssub * fib/m/sl}{}
\DeclareFontShape{LGI}{fib}{bx}{n}{<-> ssub * fib/b/n}{}
%</lgifib>
%    \end{macrocode}
%
%
% 
% \subsection{Notes for class and package writers}
% To change the font family used for Greek passages, redefine the 
% macro \cmd{\ibycusdefault} accordingly.  Macro packages should use |\def| rather
% than |\renewcommand|; thus, they can be loaded before as well as after 
% \path{ibycus.ldf}.
%
% To make the command \cmd{\setgreekfontscale} work, font definition files for 
% LGI-encoded font families must evaluate the macro \cmd{\ibycus@scale} 
% in the same way as the above \path{lgifib.fd}.
% 
% \Finale
%
% \iffalse
%
% The next line of code prevents DocStrip from adding the
% character table to the generated files(s).
\endinput
%
% \fi
%
%% \CharacterTable
%%  {Upper-case    \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z
%%   Lower-case    \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z
%%   Digits        \0\1\2\3\4\5\6\7\8\9
%%   Exclamation   \!     Double quote  \"     Hash (number) \#
%%   Dollar        \$     Percent       \%     Ampersand     \&
%%   Acute accent  \'     Left paren    \(     Right paren   \)
%%   Asterisk      \*     Plus          \+     Comma         \,
%%   Minus         \-     Point         \.     Solidus       \/
%%   Colon         \:     Semicolon     \;     Less than     \<
%%   Equals        \=     Greater than  \>     Question mark \?
%%   Commercial at \@     Left bracket  \[     Backslash     \\
%%   Right bracket \]     Circumflex    \^     Underscore    \_
%%   Grave accent  \`     Left brace    \{     Vertical bar  \|
%%   Right brace   \}     Tilde         \~}
%%