% \iffalse meta-comment
%
% Copyright 1989-2008 Johannes L. Braams and any individual authors
% listed elsewhere in this file.  All rights reserved.
% 
% This file is part of the Babel system.
% --------------------------------------
% 
% It 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".
% 
% The Current Maintainer of this work is Javier Bezos.
% 
% The list of all files belonging to the Babel system is
% given in the file `manifest.bbl. See also `legal.bbl' for additional
% information.
% 
% The list of derived (unpacked) files belonging to the distribution
% and covered by LPPL is defined by the unpacking scripts (with
% extension .ins) which are part of the distribution.
% \fi
% \CheckSum{263}
%
% \iffalse
%<*dtx>
\ProvidesFile{bbcompat.dtx}[2025/10/01 v25.13]
%</dtx>
%
%% File 'bbcompat.dtx'
%% Copyright (C) 1989 -- 2008 by Johannes Braams,
%%                            TeXniek
%%                            all rights reserved.
%<*filedriver>
\documentclass{ltxdoc}
\newcommand*\TeXhax{\TeX hax}
\newcommand*\babel{\textsf{babel}}
\newcommand*\Lopt[1]{\textsf{#1}}
\newcommand*\file[1]{\texttt{#1}}
\newcommand*\pkg[1]{\texttt{#1}}
\begin{document}
 \DocInput{bbcompat.dtx}
\end{document}
%</filedriver>
% \fi
%
% \GetFileInfo{bbcompat.dtx}
% \changes{bbcompat-1.2j}{2006/06/05}{Small documentation fix}
%
% \StopEventually{}
%
% \changes{bbcompat-1.2}{1996/11/02}{Added the check for \cs{LdfInit}}
% \changes{bbcompat-1.2d}{1999/04/12}{When these files are read by a
%    non-babel plain format the @ has still category code `other' so
%    can't use \cs{@undefined}} 
%    \begin{macrocode}
\ifx\LdfInit\undefined
  \def\LdfInit{%
    \chardef\atcatcode=\catcode`\@
    \catcode`\@=11\relax
    \input babel.def\relax
    \catcode`\@=\atcatcode \let\atcatcode\relax
    \LdfInit}
\fi
%    \end{macrocode}
%    It seems that these files, although meant for compatibility with
%    \file{plain.tex} are also used as packages in \LaTeXe. The
%    disadvantage of that is that a number of compatibility measures
%    with other packages that are part of \file{babel.sty} are not
%    present. Therefore we issue an error and then load
%    \file{babel.def} to let the user continue processing his
%    document (at his own risk). 
%
%    First we determine whether we are loaded from \LaTeX\ by checking
%    whether |\PackageError| is defined.
%    \begin{macrocode}
\ifx\PackageError\undefined
%    \end{macrocode}
%    In this case we are not being loaded by \LaTeXe, so just define
%    |\ProvidesLanguage| to prevent an error when the \file{.ldf} file
%    is loaded.
%    \begin{macrocode}
  \def\ProvidesLanguage#1[#2 #3 #4]{%
    \wlog{Language: #1 #4 #3 <#2>}}%
\else
%    \end{macrocode}
%    Now we define an error message which `deletes' itself from
%    memory.
% \changes{bbcompat-1.2l}{2013/07/28}{Raise a more useful error.} 
%
%    \begin{macrocode}
  \def\bblstyerror{%
    \PackageError{babel}%
      {You are loading directly a language style.\MessageBreak
       This syntax is deprecated and you must use\MessageBreak
       \string\usepackage[language]\string{babel\string}}%
      {You could proceed but don't complain if you run into errors}%
    \let\bblstyerror\@undefined
    }
%    \end{macrocode}
%    Now we can issue the error, it should appear when these files are
%    loaded from \LaTeXe, with \emph{or} without \file{hyphen.cfg}
%    preloaded in the format. 
% \changes{bbcompat-1.2e}{1999/04/20}{Added a check for
%    \cs{ProvidesLanguage}} 
%    \begin{macrocode}
  \ifx\ProvidesLanguage\undefined
%    \end{macrocode}
%    In this case \file{hyphen.cfg} wasn't loaded in the \LaTeXe\
%    format so we also need to provide a suitable definition for
%    |\ProvidesLanguage|.
%    \begin{macrocode}
    \bblstyerror
    \def\ProvidesLanguage{%
      \chardef\atcatcode=\catcode`\@
      \catcode`\@=11\relax
      \input babel.def\relax
      \catcode`\@=\atcatcode \let\atcatcode\relax
      \ProvidesLanguage}
%    \end{macrocode}
%    When we end up here, \file{hyphen.cfg} was loaded into the
%    format; we only need to issue the error from \LaTeXe.
%    \begin{macrocode}
  \else
    \bblstyerror
  \fi
\fi
%    \end{macrocode}
% \changes{bbcompat-1.2}{1996/07/13}{Added \file{.sty} files and
%    definition of \cs{CurrentOption} for language definition files
%    that are loaded by more than one option.} 
% \changes{bbcompat-1.2}{1996/12/14}{Added \file{welsh.sty}}
% \changes{bbcompat-1.2b}{1997/02/07}{Added \file{sanskrit.sty}}
% \changes{bbcompat-1.2c}{1998/03/24}{Added \file{hebrew.sty}}
% \changes{bbcompat-1.2d}{1999/03/09}{Added \file{ukraineb.sty}}
% \changes{bbcompat-1.2d}{1999/04/10}{Added \file{ngerman.sty} and
%    \file{naustrian.sty}} 
% \changes{bbcompat-1.2f}{2000/09/26}{Added \file{icelandic.sty},
%    \file{bulgarian.sty} and \file{samin.sty}}
% \changes{bbcompat-1.2f}{2000/09/27}{Define \cs{CurrentOption} in
%    each file}
% \changes{bbcompat-1.2g}{2001/01/19}{Added code for usenglish and
%    ukenglish.sty} 
% \changes{bbcompat-1.2h}{2003/11/13}{Added \file{interlingua.sty}}
% \changes{bbcompat-1.2i}{2005/11/23}{Added \file{albanian.sty} and
%    \file{bahasam.sty}}
% \changes{bbcompat-1.2k}{2008/07/06}{Added \file{latin.sty}}
%    \begin{macrocode}
%<+albanian>\def\CurrentOption{albanian}
%<+albanian>\input albanian.ldf\relax
%<+american>\def\CurrentOption{american}
%<+USenglish>\def\CurrentOption{USenglish}
%<+british>\def\CurrentOption{british}
%<+english>\def\CurrentOption{english}
%<+UKenglish>\def\CurrentOption{UKenglish}
%<american|british|english|UKenglish|USenglish>\input english.ldf\relax
%<+bahasa>\def\CurrentOption{bahasai}
%<+bahasa>\input bahasai.ldf\relax
%<+bahasam>\def\CurrentOption{bahasam}
%<+bahasam>\input bahasam.ldf\relax
%<+breton>\def\CurrentOption{breton}
%<+breton>\input breton.ldf\relax
%<+bulgarian>\def\CurrentOption{bulgarian}
%<+bulgarian>\input bulgarian.ldf\relax
%<+catalan>\def\CurrentOption{catalan}
%<+catalan>\input catalan.ldf\relax
%<+croatian>\def\CurrentOption{croatian}
%<+croatian>\input croatian.ldf\relax
%<+czech>\def\CurrentOption{czech}
%<+czech>\input czech.ldf\relax
%<+danish>\def\CurrentOption{danish}
%<+danish>\input danish.ldf\relax
%<+afrikaans>\def\CurrentOption{afrikaans}
%<+dutch>\def\CurrentOption{dutch}
%<+afrikaans|dutch>\input dutch.ldf\relax
%<+esperanto>\def\CurrentOption{esperanto}
%<+esperanto>\input esperanto.ldf\relax
%<+estonian>\def\CurrentOption{estonian}
%<+estonian>\input estonian.ldf\relax
%<+finnish>\def\CurrentOption{finnish}
%<+finnish>\input finnish.ldf\relax
%<+francais>\def\CurrentOption{french}
%<+francais>\input french.ldf\relax
%<+galician>\def\CurrentOption{galician}
%<+galician>\input galician.ldf\relax
%<+austrian>\def\CurrentOption{austrian}
%<+germanb>\def\CurrentOption{german}
%<+austrian|germanb>\input germanb.ldf\relax
%<+naustrian>\def\CurrentOption{naustrian}
%<+ngermanb>\def\CurrentOption{ngerman}
%<+naustrian|ngermanb>\input ngermanb.ldf\relax
%<+greek>\def\CurrentOption{greek}
%<+greek>\input greek.ldf\relax
%<+icelandic>\def\CurrentOption{icelandic}
%<+icelandic>\input icelandic.ldf\relax
%<+interlingua>\def\CurrentOption{interlingua}
%<+interlingua>\input interlingua.ldf\relax
%<+irish>\def\CurrentOption{irish}
%<+irish>\input irish.ldf\relax
%<+italian>\def\CurrentOption{italian}
%<+italian>\input italian.ldf\relax
%<+latin>\def\CurrentOption{latin}
%<+latin>\input latin.ldf\relax
%<+lsorbian>\def\CurrentOption{lsorbian}
%<+lsorbian>\input lsorbian.ldf\relax
%<+magyar>\def\CurrentOption{magyar}
%<+hungarian>\def\CurrentOption{hungarian}
%<+magyar|hungarian>\input magyar.ldf\relax
%<+norsk>\def\CurrentOption{norsk}
%<+nynorsk>\def\CurrentOption{nynorsk}
%<+norsk|nynorsk>\input norsk.ldf\relax
%<+polish>\def\CurrentOption{polish}
%<+polish>\input polish.ldf\relax
%<+portuges>\def\CurrentOption{portuges}
%<+portuguese>\def\CurrentOption{portuguese}
%<+brazil>\def\CurrentOption{brazil}
%<+brazilian>\def\CurrentOption{brazilian}
%<+portuges|portuguese|brazil|brazilian>\input portuges.ldf\relax
%<+romanian>\def\CurrentOption{romanian}
%<+romanian>\input romanian.ldf\relax
%<+russianb>\def\CurrentOption{russianb}
%<+russianb>\input russianb.ldf\relax
%<+ukraineb>\def\CurrentOption{ukraineb}
%<+ukraineb>\input ukraineb.ldf\relax
%<+samin>\def\CurrentOption{samin}
%<+samin>\input samin.ldf\relax
%<+sanskrit>\def\CurrentOption{sanskrit}
%<+sanskrit>\input sanskrit.ldf\relax
%<+scottish>\def\CurrentOption{scottish}
%<+scottish>\input scottish.ldf\relax
%<+slovak>\def\CurrentOption{slovak}
%<+slovak>\input slovak.ldf\relax
%<+slovene>\def\CurrentOption{slovene}
%<+slovene>\input slovene.ldf\relax
%<+spanish>\def\CurrentOption{spanish}
%<+spanish>\input spanish.ldf\relax
%<+swedish>\def\CurrentOption{swedish}
%<+swedish>\input swedish.ldf\relax
%<+turkish>\def\CurrentOption{turkish}
%<+turkish>\input turkish.ldf\relax
%<+usorbian>\def\CurrentOption{usorbian}
%<+usorbian>\input usorbian.ldf\relax
%<+welsh>\def\CurrentOption{welsh}
%<+welsh>\input welsh.ldf\relax
%<+hebrew>\def\CurrentOption{hebrew}
%<+hebrew>\input rlbabel.def\input hebrew.ldf\relax
%    \end{macrocode}
%
%    \section{Internationalizing \LaTeX{} 2.09}
%
%    Now that we're sure that the code is seen by \LaTeX\ only, we
%    have to find out what the main (primary) document style is
%    because we want to redefine some macros.  This is only necessary
%    for releases of \LaTeX\ dated before December~1991. Therefore
%    this part of the code can optionally be included in
%    \file{babel.def} by specifying the \texttt{docstrip} option
%    \texttt{names}.
%
%    The standard styles can be distinguished by checking whether some
%    macros are defined. In table~\ref{styles} an overview is given of
%    the macros that can be used for this purpose.
%  \begin{table}[htb]
%  \begin{center}
% \DeleteShortVerb{\|}
%  \begin{tabular}{|lcp{8cm}|}
%   \hline
%   article         & : & both the \verb+\chapter+ and \verb+\opening+
%                         macros are undefined\\
%   report and book & : & the \verb+\chapter+ macro is defined and
%                         the \verb+\opening+ is undefined\\
%   letter          & : & the \verb+\chapter+ macro is undefined and
%                         the \verb+\opening+ is defined\\
%   \hline
%  \end{tabular}
% \caption{How to determine the main document style}\label{styles}
% \MakeShortVerb{\|}
%  \end{center}
%  \end{table}
%
%    \noindent The macros that have to be redefined for the
%    \texttt{report} and \texttt{book} document styles happen to be
%    the same, so there is no need to distinguish between those two
%    styles.
%
%  \begin{macro}{\doc@style}
%    First a parameter |\doc@style| is defined to identify the current
%    document style. This parameter might have been defined by a
%    document style that already uses macros instead of hard-wired
%    texts, such as \file{artikel1.sty}~\cite{BEP}, so the existence of
%    |\doc@style| is checked. If this macro is undefined, i.\,e., if
%    the document style is unknown and could therefore contain
%    hard-wired texts, |\doc@style| is defined to the default
%    value~`0'.
% \changes{babel~3.0d}{1991/10/29}{Removed use of \cs{@ifundefined}}
%    \begin{macrocode}
%<*names>
\ifx\@undefined\doc@style
  \def\doc@style{0}%
%    \end{macrocode}
%    This parameter is defined in the following \texttt{if}
%    construction (see table~\ref{styles}):
%
%    \begin{macrocode}
  \ifx\@undefined\opening
    \ifx\@undefined\chapter
      \def\doc@style{1}%
    \else
      \def\doc@style{2}%
    \fi
  \else
    \def\doc@style{3}%
  \fi%
\fi%
%    \end{macrocode}
%  \end{macro}
%
% \changes{babel~3.1}{1991/11/05}{Removed definition of
%    \cs{if@restonecol}}
%
%    Now here comes the real work: we start to redefine things and
%    replace hard-wired texts by macros. These redefinitions should be
%    carried out conditionally, in case it has already been done.
%
%    For the \texttt{figure} and \texttt{table} environments we have
%    in all styles:
%    \begin{macrocode}
\@ifundefined{figurename}{\def\fnum@figure{\figurename{} \thefigure}}{}
\@ifundefined{tablename}{\def\fnum@table{\tablename{} \thetable}}{}
%    \end{macrocode}
%
%    The rest of the macros have to be treated differently for each
%    style.  When |\doc@style| still has its default value nothing
%    needs to be done.
%    \begin{macrocode}
\ifcase\doc@style\relax
\or
%    \end{macrocode}
%
%    This means that \file{babel.def} is read after the
%    \texttt{article} style, where no |\chapter| and |\opening|
%    commands are defined\footnote{A fact that was pointed out to me
%    by Nico Poppelier and was already used in Piet van Oostrum's
%    document style option~\texttt{nl}.}.
%
%    First we have the |\tableofcontents|,
%    |\listoffigures| and |\listoftables|:
%    \begin{macrocode}
\@ifundefined{contentsname}%
    {\def\tableofcontents{\section*{\contentsname\@mkboth
          {\uppercase{\contentsname}}{\uppercase{\contentsname}}}%
      \@starttoc{toc}}}{}
\@ifundefined{listfigurename}%
    {\def\listoffigures{\section*{\listfigurename\@mkboth
          {\uppercase{\listfigurename}}{\uppercase{\listfigurename}}}%
     \@starttoc{lof}}}{}
\@ifundefined{listtablename}%
    {\def\listoftables{\section*{\listtablename\@mkboth
          {\uppercase{\listtablename}}{\uppercase{\listtablename}}}%
      \@starttoc{lot}}}{}
%    \end{macrocode}
%
% Then the |\thebibliography| and |\theindex| environments.
%
%    \begin{macrocode}
\@ifundefined{refname}%
    {\def\thebibliography#1{\section*{\refname
      \@mkboth{\uppercase{\refname}}{\uppercase{\refname}}}%
      \list{[\arabic{enumi}]}{\settowidth\labelwidth{[#1]}%
        \leftmargin\labelwidth
        \advance\leftmargin\labelsep
        \usecounter{enumi}}%
        \def\newblock{\hskip.11em plus.33em minus.07em}%
        \sloppy\clubpenalty4000\widowpenalty\clubpenalty
        \sfcode`\.=1000\relax}}{}
\@ifundefined{indexname}%
    {\def\theindex{\@restonecoltrue\if@twocolumn\@restonecolfalse\fi
     \columnseprule \z@
     \columnsep 35pt\twocolumn[\section*{\indexname}]%
       \@mkboth{\uppercase{\indexname}}{\uppercase{\indexname}}%
       \thispagestyle{plain}%
       \parskip\z@ plus.3pt\parindent\z@\let\item\@idxitem}}{}
%    \end{macrocode}
%
% The |abstract| environment:
%
%    \begin{macrocode}
\@ifundefined{abstractname}%
    {\def\abstract{\if@twocolumn
    \section*{\abstractname}%
    \else \small
    \begin{center}%
    {\bf \abstractname\vspace{-.5em}\vspace{\z@}}%
    \end{center}%
    \quotation
    \fi}}{}
%    \end{macrocode}
%
% And last but not least, the macro |\part|:
%
%    \begin{macrocode}
\@ifundefined{partname}%
{\def\@part[#1]#2{\ifnum \c@secnumdepth >\m@ne
        \refstepcounter{part}%
        \addcontentsline{toc}{part}{\thepart
        \hspace{1em}#1}\else
      \addcontentsline{toc}{part}{#1}\fi
   {\parindent\z@ \raggedright
    \ifnum \c@secnumdepth >\m@ne
      \Large \bf \partname{} \thepart
      \par \nobreak
    \fi
    \huge \bf
    #2\markboth{}{}\par}%
    \nobreak
    \vskip 3ex\@afterheading}%
}{}
%    \end{macrocode}
%
%    This is all that needs to be done for the \texttt{article} style.
%
%    \begin{macrocode}
\or
%    \end{macrocode}
%
%    The next case is formed by the two styles \texttt{book} and
%    \texttt{report}.  Basically we have to do the same as for the
%    \texttt{article} style, except now we must also change the
%    |\chapter| command.
%
%    The tables of contents, figures and tables:
%    \begin{macrocode}
\@ifundefined{contentsname}%
    {\def\tableofcontents{\@restonecolfalse
      \if@twocolumn\@restonecoltrue\onecolumn
      \fi\chapter*{\contentsname\@mkboth
          {\uppercase{\contentsname}}{\uppercase{\contentsname}}}%
      \@starttoc{toc}%
      \csname if@restonecol\endcsname\twocolumn
      \csname fi\endcsname}}{}
\@ifundefined{listfigurename}%
    {\def\listoffigures{\@restonecolfalse
      \if@twocolumn\@restonecoltrue\onecolumn
      \fi\chapter*{\listfigurename\@mkboth
          {\uppercase{\listfigurename}}{\uppercase{\listfigurename}}}%
      \@starttoc{lof}%
      \csname if@restonecol\endcsname\twocolumn
      \csname fi\endcsname}}{}
\@ifundefined{listtablename}%
    {\def\listoftables{\@restonecolfalse
      \if@twocolumn\@restonecoltrue\onecolumn
      \fi\chapter*{\listtablename\@mkboth
          {\uppercase{\listtablename}}{\uppercase{\listtablename}}}%
      \@starttoc{lot}%
      \csname if@restonecol\endcsname\twocolumn
      \csname fi\endcsname}}{}
%    \end{macrocode}
%
%    Again, the |bibliography| and |index| environments; notice that
%    in this case we use |\bibname| instead of |\refname| as in the
%    definitions for the \texttt{article} style.  The reason for this
%    is that in the \texttt{article} document style the term
%    `References' is used in the definition of |\thebibliography|. In
%    the \texttt{report} and \texttt{book} document styles the term
%    `Bibliography' is used.
%    \begin{macrocode}
\@ifundefined{bibname}%
    {\def\thebibliography#1{\chapter*{\bibname
     \@mkboth{\uppercase{\bibname}}{\uppercase{\bibname}}}%
     \list{[\arabic{enumi}]}{\settowidth\labelwidth{[#1]}%
     \leftmargin\labelwidth \advance\leftmargin\labelsep
     \usecounter{enumi}}%
     \def\newblock{\hskip.11em plus.33em minus.07em}%
     \sloppy\clubpenalty4000\widowpenalty\clubpenalty
     \sfcode`\.=1000\relax}}{}
\@ifundefined{indexname}%
    {\def\theindex{\@restonecoltrue\if@twocolumn\@restonecolfalse\fi
    \columnseprule \z@
    \columnsep 35pt\twocolumn[\@makeschapterhead{\indexname}]%
      \@mkboth{\uppercase{\indexname}}{\uppercase{\indexname}}%
    \thispagestyle{plain}%
    \parskip\z@ plus.3pt\parindent\z@ \let\item\@idxitem}}{}
%    \end{macrocode}
%
% Here is the |abstract| environment:
%    \begin{macrocode}
\@ifundefined{abstractname}%
    {\def\abstract{\titlepage
    \null\vfil
    \begin{center}%
    {\bf \abstractname}%
    \end{center}}}{}
%    \end{macrocode}
%
%     And last but not least the |\chapter|, |\appendix| and
%    |\part| macros.
%    \begin{macrocode}
\@ifundefined{chaptername}{\def\@chapapp{\chaptername}}{}
%
\@ifundefined{appendixname}%
    {\def\appendix{\par
      \setcounter{chapter}{0}%
      \setcounter{section}{0}%
      \def\@chapapp{\appendixname}%
      \def\thechapter{\Alph{chapter}}}}{}
%
\@ifundefined{partname}%
    {\def\@part[#1]#2{\ifnum \c@secnumdepth >-2\relax
            \refstepcounter{part}%
            \addcontentsline{toc}{part}{\thepart
            \hspace{1em}#1}\else
            \addcontentsline{toc}{part}{#1}\fi
       \markboth{}{}%
       {\centering
        \ifnum \c@secnumdepth >-2\relax
          \huge\bf \partname{} \thepart
        \par
        \vskip 20pt \fi
        \Huge \bf
        #1\par}\@endpart}}{}%
\or
%    \end{macrocode}
%
%    Now we address the case where \file{babel.def} is read after the
%    \texttt{letter} style. The \texttt{letter} document style
%    defines the macro |\opening| and some other macros that are
%    specific to \texttt{letter}. This means that we have to redefine
%    other macros, compared to the previous two cases.
%
%    First two macros for the material at the end of a letter, the
%    |\cc| and |\encl| macros.
%    \begin{macrocode}
\@ifundefined{ccname}%
    {\def\cc#1{\par\noindent
     \parbox[t]{\textwidth}%
     {\@hangfrom{\rm \ccname : }\ignorespaces #1\strut}\par}}{}
\@ifundefined{enclname}%
    {\def\encl#1{\par\noindent
     \parbox[t]{\textwidth}%
     {\@hangfrom{\rm \enclname : }\ignorespaces #1\strut}\par}}{}
%    \end{macrocode}
%
%    The last thing we have to do here is to redefine the
%    \texttt{headings} pagestyle:
% \changes{babel~3.3}{1993/07/11}{\cs{headpagename} should be
%    \cs{pagename}}
%    \begin{macrocode}
\@ifundefined{headtoname}%
  {\def\ps@headings{%
     \def\@oddhead{\sl \headtoname{} \ignorespaces\toname \hfil
                      \@date \hfil \pagename{} \thepage}%
     \def\@oddfoot{}}}{}
\fi
%</names>
%    \end{macrocode}
%
% This was the last of the four standard document styles, so if
% |\doc@style| has another value we do nothing and just close the
% \texttt{if} construction.  Here ends the code that can be optionally
% included when a version of \LaTeX\ is in use that is dated
% \emph{before} December~1991.
%
%    We also need to redefine a number of commands to ensure that the
%    right font encoding is used, but this can't be done before
%    \file{babel.def} is loaded.
% \changes{babel~3.6o}{1999/04/07}{Moved the rest of the font encoding
%    related definitions to their original place}
%
%%
%% \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         \~}
\endinput
