summaryrefslogtreecommitdiff
path: root/macros/latex/contrib/teubner/teubner.dtx
diff options
context:
space:
mode:
Diffstat (limited to 'macros/latex/contrib/teubner/teubner.dtx')
-rw-r--r--macros/latex/contrib/teubner/teubner.dtx3613
1 files changed, 3613 insertions, 0 deletions
diff --git a/macros/latex/contrib/teubner/teubner.dtx b/macros/latex/contrib/teubner/teubner.dtx
new file mode 100644
index 0000000000..f7b457ada7
--- /dev/null
+++ b/macros/latex/contrib/teubner/teubner.dtx
@@ -0,0 +1,3613 @@
+% \iffalse meta comment
+%<*internal>
+\begingroup
+\input docstrip.tex
+\keepsilent
+\preamble
+Copyright 2001--2015 Claudio Beccari All rights reserved.
+
+ This system is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+
+This file is distributed under the LPPL licence, version 1.3c
+dated 2008-05-04 or later as it appears in
+CTAN/macros/latex/base/lppl.tex.
+See the end of the file.
+
+IMPORTANT NOTICE:
+
+You are allowed to distribute this file under the conditions that are
+specified in the source file teubner.dtx.
+
+If you receive only some of these files from someone, complain!
+
+You are NOT ALLOWED to distribute this file alone.
+You are NOT ALLOWED to take money for the distribution or use
+of either this file or a changed version, except for a nominal
+charge for copying, etc.
+\endpreamble
+\postamble
+ 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
+\endpostamble
+\askforoverwritefalse
+
+\generateFile{teubner.sty}{f}{\from{teubner.dtx}{package}}
+\generateFile{teubnertx.sty}{f}{\from{teubner.dtx}{tbtx}}
+
+\def\tmpa{plain}
+\ifx\tmpa\fmtname\endgroup\expandafter\bye\fi
+\endgroup
+%</internal>
+% \fi
+%
+% \iffalse
+%^^A The following trick uses the same date for every file header.
+%<package>\NeedsTeXFormat{LaTeX2e}
+%<*driver>
+\ProvidesFile{teubner.dtx}[%
+%</driver>
+%<package>\ProvidesPackage{teubner}[%
+%<tbtx>\ProvidesPackage{teubnertx}[%
+%<*driver,package,tbtx>
+2016/03/31 v.4.8
+%<package>Extensions for Greek philology]
+%<tbtx>Access to the LGR encoded Greek fonts that match the TX fonts]
+%</driver,package,tbtx>
+%<*driver>
+]
+%</driver>
+%<*driver>
+\documentclass{ltxdoc}
+\GetFileInfo{teubner.dtx}
+\title{The \textsf{teubner} package\\
+ Extensions for Greek philology}
+ \author{Claudio Beccari --- \texttt{claudio dot beccari at gmail dot com}}
+ \date{Version \fileversion\ last revised \filedate}
+ \providecommand\babel{\pack{babel}}
+ \newcommand\lbr{\char123\relax}\newcommand\rbr{\char125\relax}
+ \newenvironment{sintassi}{%
+ \begin{quote}\parskip0pt\hfuzz10pt\ttfamily\obeylines
+ }{%
+ \end{quote}\ignorespaces
+ }
+ \renewcommand*\meta[1]{{\normalfont\textlangle\textit{#1}\textrangle}}
+ \newcommand*\pack[1]{\textsf{#1}}
+ \newcommand*\acro[1]{\expandafter\textsc\expandafter{\MakeLowercase{#1}}}
+ \usepackage{multicol}
+\usepackage[T1]{fontenc}
+\usepackage{lmodern,textcomp}
+\begin{document}
+ \maketitle
+ \DocInput{teubner.dtx}
+\end{document}
+%</driver>
+% \fi
+%
+% \CheckSum{4368}
+% \begin{multicols}{2}\tableofcontents\end{multicols}
+%
+%
+% \begin{abstract}
+% This extension package complements the greek option of the \babel\
+% package so as to enable the use of the Lipsian\footnote{What here
+% are called Lipsian fonts are a family of fonts that in Greece are
+% called ``Lipsiakos''; they are similar to the ones that were being
+% used in the Teubner Printing Company of Lipsia from mid XIX century on.}
+% fonts and to use several macros for inserting special annotations
+% in the written text, as well as to typeset verses with special
+% layout. Metric sequences may be defined and typeset by means of a
+% companion font \texttt{gmtr????} that follows the same conventions
+% as the CB fonts that are normally used when the \babel\ |greek|
+% option is in force.
+%
+% Examples and lists of commands are available in the file
+% \texttt{teubner-doc.pdf} which, as a regular pdf file, embeds all
+% the necessary fonts and may be read on screen as well as printed on paper;
+% beware, though, that the PostScript fonts that are being used
+% in \texttt{teubner-doc.pdf} are not installed by default if a basic
+% installation is sought.
+%
+% This version 4.0 tries to adapt to the new handling of the Greek language
+% by \babel, since now this language script is based on the
+% LICR (\LaTeX\ Internal Character Representation), and source files now can
+% include Greek glyphs, besides the usual transliteration with Latin letters.
+% \end{abstract}
+%
+% \section{Introduction}
+% Philologists in general have the necessity of using special
+% alphabets and several special symbols in order to mark up their
+% texts and to typeset them in a special way. Greek philology makes
+% no exception, therefore I prepared this file and some extra fonts
+% in order to complement what is already available with the |greek|
+% option of the \babel\ package.
+%
+% I must warmly thank Paolo Ciacchi of the University of Trieste who
+% invited me in this ``adventure'', since I know nothing about
+% philology; he assisted me with all his competence, so that I
+% could learn so many new things and I could appreciate the world of
+% philologists.
+%
+% Paolo Ciacchi's ``invitation'' arrived when I was almost finished
+% with the design of the Lipsian font family; I was working on this new
+% typeface after a kind request by Dimitri Filippou, with whom I
+% already collaborated for other questions related to Greek
+% typesetting. I warmly thank also Dimitri Filippou for the
+% patience with which he revised every single glyph of the new
+% typeface. Paolo Ciacchi added his constructive criticism to the
+% typeface, especially for what concerns diacritical marks. At the
+% end I think that the new typeface turned out pretty well thanks to
+% both my friends.
+%
+% The Lipsian font, also called Leipzig, or Lipsiakos in Greece, is one of the
+% oblique fonts that used to be employed by the typesetters working in the
+% German city of Leipzig, among which the Teubner Printing Company.
+% This Company's classical works of ancient Greek poetry are considered among
+% the best ever published. The name of this file and this extension
+% package is in honour of that printing company.
+%
+% This package documentation does not contain any example written in
+% Greek, because when you process this file it is very likely that
+% you don't have the suitable Greek fonts and you must still download
+% all or some of them. Therefore a companion file \texttt{teubner-doc.pdf}
+% is included in this bundle where most, if not all, new commands
+% are documented and suitably shown.
+%
+% This package contains new environments and new commands; it presumes
+% the user invokes it after declaring the |greek| option to the \babel\
+% package; should he forget, this package will complain. But once the
+% |greek| option is properly declared, this package verifies that the
+% |polutonikogreek| dialect (deprecated) is selected, or that the
+% |polutoniko| attribute or modifier is set; if no attribute is set this package
+% will set |polutoniko| or |ancient| depending on the presence of an
+% updated Greek support to the \babel\ package. This choice depends on
+% the particular version of the \babel\ package, but should not concern
+% the user; switching back and forth between classical Greek and some
+% modern western language is performed in a transparent way; possibly
+% there might be some problem switching from classical to modern spelling
+% in Greek itself, but since in modern spelling the multiplicity of Greek
+% diacritical marks is not forbidden, it's the author choice to select
+% classical or modern words, Lipsian or Didot fonts, polytonic or monotonic
+% accentuation. The worst it can happen is that \babel\ uses just one
+% hyphenation pattern set, so that in one of the three Greek versions some
+% words might turn out with the wrong hyphens points.
+%
+% The CB Greek fonts, which have been available for some years now on
+% \acro{ctan} in the directory \texttt{/fonts/greek/cb} have
+% been completed with the new files for the Lipsian fonts, and the metric
+% symbols font \texttt{gmtr????.*}; the latter does not need a formal font
+% definition file, because the necessary definitions are included in this package.
+% All fonts are available also as Type~1 scalable fonts. In general, recent
+% distributions of the \TeX\ system already contain the necessary
+% configuration to use the Type~1 font in one size, 10\,pt, but, thanks to
+% scaling, these can be used at any size; this version of \textsf{teubner}
+% is compatible with this reduced set. If optical sizes are desired for
+% a more professional typesetting, the \acro{ctan} archives contain also
+% the \textsf{cbgreek-full} package, which includes also all the Type~1
+% fonts at the various standard (EC) sizes, plus other facilities that allow
+% to use the CB fonts also in conjunction with the Latin Modern ones. Complete
+% installations of the \TeX\ system include the full CB fonts installation.
+%
+% The CB Greek fonts allow to input Greek text with a Latin keyboard and
+% by employing the prefix notation; with a Greek keyboard and file
+% \texttt{iso-8859-7.def} it is possible to directly input Greek text with the
+% monotonic spelling; if polytonic spelling is required I fear that the above
+% file is of little help and that a Latin keyboard does the job without
+% an excessive burden. The recent modifications to the \babel\ package and of the
+% Greek language description file allow to enter also polytonic Greek text,
+% keyboard permitting, with no effort; it is necessary to use the |utf8|
+% input encoding. It's important to notice the Apple computers have available
+% a virtual keyboard (called keyboard viewer) that is operable with the mouse
+% and, just by selecting the \emph{Greek Polytonic} keyboard driver, the
+% author can enter Greek text directly in the source file. Computer with a
+% touch screen virtual keyboard allow to switch from the national to
+% the Greek keyboard just by a single sweep of the finger. Some platforms
+% have the possibility of switching keyboard but they don't show the new
+% keyboard layout on the screen, but the user can generally build a personal
+% table that describes the correspondence between the key board and the
+% physical keyboard layout. Windows operating system Win8 has available
+% a virtual keyboard similar to the Mac's.
+%
+% Nevertheless there is a little point to observe; Lipsian fonts are very
+% nice but show some kerning errors with more evidence than the traditional
+% Didot Greek fonts. With the prefix notation in force, kerning programs may
+% result disabled and some diphthongs and some consonant-vowel combinations
+% appear poorly matched when the second letter caries any diacritical mark. In
+% order to avoid this ``feature'', the accented vowels may be input by means of
+% macros, that directly translate to the accented glyph, rather than invoking the
+% ligature programs that are implied by the prefix notation; reading a Greek text
+% on the screen while editing the input \texttt{.tex} file when a Latin
+% keyboard and such macros are used may be very strange, but authors get
+% used to it, and agree that the effort is worth the result. The direct input
+% of Greek glyphs, evidently is the real solution, even if it may be difficult
+% to enter Greek glyphs without a suitable virtual keyboard or a suitable
+% keyboard map.
+%
+% \section{Environments}
+% I apologise if I chose Italian names for verse environments; I wanted to
+% use names very different from the corresponding English ones, but at the
+% same time easily recognisable; after all \emph{versi} is the plural of
+% \emph{verso} and therefore is the exact Italian translation of \emph{verses}.
+% If you feel more comfortable with Latin, the alias environment names
+% in Latin, |versus|, |Versus|, and |VERSUS|, are also available.
+%
+% \DescribeEnv{versi}
+%\DescribeMacro{\verso}
+% The environment \texttt{versi} (|versus|) is used to typeset verses
+% in line, without an implicit end of line at the end of each verse; a vertical
+% bar with a number on top of it marks the verse limit while allowing a numeric
+% reference to a specific verse; the opening environment statement requires
+% a string, a short text, in order to indent the verse lines the amount of
+% this string width; the syntax is the following
+% \begin{sintassi}
+% \bslash begin\lbr versi\rbr\lbr\meta{string}\rbr{}
+% \meta{verse}\bslash verso[\meta{starting number}]\meta{verse}\bslash verso
+% \meta{verse}\bslash verso\meta{verse}\dots{}
+% \bslash end\lbr versi\rbr
+% \end{sintassi}
+% where, of course, \meta{starting number} is required only for the first
+% instance of |\verso| or when numbering must be restarted, for example
+% after an ellipsis.
+%
+% \DescribeEnv{Versi}
+% The environment \texttt{Versi} (|Versus|) is similar to the
+% standard \LaTeX\ environment \texttt{verse}, except verse lines are numbered
+% on multiples of~5; the opening statement requires the \meta{starting
+% number} as an optional argument; if this optional argument is not specified,
+% the starting number is assumed to be~1.
+% \begin{sintassi}
+% \bslash begin\lbr Versi\rbr[\meta{starting number}]
+% \meta{verse}\bslash\bslash{}\meta{*}[\meta{vertical space}]
+% \meta{verse}\bslash\bslash{}
+% \dots{}
+% \bslash end\lbr Versi\rbr
+%\end{sintassi}
+%
+% \DescribeEnv{VERSI}
+% \DescribeMacro{\SubVerso}
+% \DescribeMacro{\NoSubVerso}
+% The environment \texttt{VERSI} (|VERSUS|) allows for two verse
+% enumerations; the main enumeration is identical to the one performed by
+% the previous environment \texttt{Versi}, while the secondary enumeration
+% is in smaller digits and normally numbers consecutive verses, except
+% that it can be turned on and off; the verses that lack the secondary
+% enumeration are indented by moving them to the right.
+% \begin{sintassi}
+% \bslash begin\lbr VERSI\rbr[\meta{starting principal number}]
+% \meta{verse}\bslash\bslash\meta{*}[\meta{vertical space}]
+% \bslash SubVerso[\meta{starting secondary number}]
+% \meta{verse}\bslash\bslash\meta{*}[\meta{vertical space}]
+% \dots{}
+% \bslash NoSubVerso
+% \meta{verse}\bslash\bslash\meta{*}[\meta{vertical space}]
+% \dots
+% \bslash end\lbr VERSI\rbr
+% \end{sintassi}
+% where if \meta{starting principal number} is missing, 1 is assumed,
+% while if \meta{starting secondary number} is missing, the enumeration
+% is continued from the next available integer. Of course
+% \meta{starting secondary number} is used again when the secondary
+% enumeration must be restarted; there are no means to restart the
+% principal enumeration.
+%
+% \DescribeEnv{bracedmetrics} The previous environments accept \meta{verses}
+% in any language and in any alphabet, the one that is in force before opening
+% the environment; the language and, even less, the alphabet cannot be
+% globally changed within the above environments; if such a change is performed,
+% it is valid only for one verse, or for the remaining fraction of the verse
+% after the language or font change. This means, among the other things, that
+% if the default ``alphabet'' is the one that shows the metric symbols,
+% the above environments may be used to display ``metric verses'', that is the
+% pattern of long, short or ancipital symbols, together with any other metric
+% symbol so as to display the metrics without disturbing the written text; when
+% doing this metric typesetting, it may happen that some verse patterns exhibit
+% some variants; in this case the \texttt{bracedmetrics} environment comes handy,
+% because it can display such variants in separate lines but grouped with a large
+% right brace; some commands allow to roughly align these variants, so as to
+% allow to nest several such environments as if they were single blocks of metric
+% symbols. The argument of the opening statement specifies the width of the
+% block so as to align properly all the symbols even in nested environments.
+% \begin{sintassi}
+% \bslash begin\lbr bracedmetrics\rbr\lbr\meta{length}\rbr{}
+% \meta{metric pattern}\bslash\bslash
+% \meta{metric pattern}\bslash\bslash
+% \dots{}
+% \bslash end\lbr bracedmetrics\rbr
+% \end{sintassi}
+% \DescribeMacro{\verseskip}\DescribeMacro{\Hfill} Within the \meta{metric
+% pattern} it is possible to flush right the symbols
+% by prefixing the whole string with a |\Hfill| command; the \meta{length} may
+% be specified as an integer multiple of a ``long'' symbol by means of
+%\begin{sintassi}
+% \bslash verseskip\lbr\meta{number}\rbr
+%\end{sintassi}
+% The macro |\verseskip| can be used also within \meta{metric pattern}
+% in order to space out metric symbols.
+%
+% \section{Commands and symbols}
+% This package defines a lot of commands for inserting special signs in the middle
+% of regular text, for marking zeugmas and synizeses, for putting unusual accents
+% on any symbol, for inserting special ``parentheses'' that are used by
+% philologists for marking blocks of letters or blocks of text. I suggest that the
+% user reads the documentation file \texttt{teubner-doc.pdf} for a complete
+% list of commands and symbols.
+%
+% \DescribeMacro{\newmetrics} Here it might be useful to describe a command
+% for defining metric sequences, so as to shorten the definition of metric verses;
+% this new command is |\newmetrics| and may be used for the definition of new
+% commands whose name \emph{may start with one digit}: precisely this digit may be
+% one of~2, 3,~4. Even if \LaTeX\ does not allow macros to contain both digits
+% and letters, other service macros have been defined so as to handle these
+% special control sequences even if they start with \emph{one} digit strictly
+% lower than~5. The syntax is:
+% \begin{sintassi}
+% \bslash newmetrics\lbr\meta{control sequence}\rbr\lbr\meta{definition}\rbr
+% \end{sintassi}
+% where \meta{definition} consists in general of a sequence of metric commands
+% such as |\longa|, |\brevis|, |\anceps|, etc.
+%
+% \section{Acknowledgements}
+% I must thank with gratitude Paolo Ciacchi that urged me to prepare this
+% extension file in order to help him typeset his master thesis of philological
+% kind in classical Greek.
+%
+% I am pleased to thank G\"unter Milde who wrote a definition file for accessing
+% the LGR encoded fonts in order to fetch the accented glyphs; I kindly gave me
+% permission to use his macros, that I adapted to the conventions used within this
+% file. These macros were saved into the definition file |LGRaccent-glyph.def|, so
+% that it could be used also without the |teubner| package, for example for
+% typesetting without setting the \emph{polutoniko} language attribute. But
+% since he became the maintainer of the Greek language support for the \babel\
+% package, he extended this support to the point that the extended macros are
+% already part of the new Greek support files.
+%
+% I got some ideas also from a paper that Werner Lemberg published on Eutypon, the
+% magazine of the Hellenic Friends of \TeX, where he discussed in a constructive
+% critical way the problems connected with the LGR encoded fonts and the Unicode
+% encoding.
+%
+% Now the new Greek support for the \babel\ package, thanks to G\"unter Milde,
+% includes also the support for Unicode input in the source file, in spite of
+% using LGR encoded output fonts. The actual support is partially useful also
+% with XeLaTeX and LuaLaTeX.
+%
+% \StopEventually{}
+%
+% \section{Code}
+% \subsection{Preliminaries}
+% In order to use the PostScript pfb fonts (CM, EC, and CB) it is necessary to
+% know if we are dealing with \LaTeX\ or pdf\LaTeX; this was necessary because
+% apparently the pfb math scalable fonts derived from the \textsf{META\-FONT}
+% counterparts do not have exactly the same effective dimensions; this is why
+% the ``zeugma'' and the ``synizesis'' signs have to be corrected when the pfb
+% fonts are used; with these, in facts, the black leader that joins the curved
+% extremities appeared a little too fat and did not join exactly the left mark.
+% Recently, apparently, the fonts have been corrected and this trick is not
+% necessary any more. Nevertheless we define a new boolean that copes with the
+% fact that at least since 2007 the \TeX\ engine is \textsf{pdftex} even when DVI
+% output is sought; the package \pack{iftex} creates three |\if|s that allow to
+% diagnose if the typesetting engine is \textsf{pdftex} in PDF mode,
+% \textsf{XeTeX} or \textsf{Luatex}; since at the moment this package
+% \pack{teubner} is compatible only with \textsf{pdftex} in PDF mode, we equate
+% the |\ifPDF| switch (defined in previous versions of \pack{teubner}) with the
+% switch defined by package \pack{iftex}:
+%\iffalse
+%<*package>
+%\fi
+% \begin{macrocode}
+\RequirePackage{iftex}
+\let\ifPDF\ifPDFTeX
+% \end{macrocode}
+% When \texttt{teubner.sty} is input the language Greek must have been already
+% defined; otherwise an error message is issued and processing is terminated.
+% \begin{macrocode}
+\ifx\captionsgreek\undefined
+\PackageError{teubner}{Greek language unknown!\MessageBreak
+I am not going to use Lipsian fonts and Scholars' signs\MessageBreak
+if Greek is unknown.\MessageBreak
+Use the babel package greek option.\MessageBreak
+Type X <return> to exit.}%
+{Type X <return> to exit.}
+\fi
+% \end{macrocode}
+% If this test is passed, this means that not only the greek option to the \babel\
+% package is set, but also that all the \babel\ machinery is available.
+%
+% Since \texttt{teubner.sty} accepts some options it is necessary to provide
+% their definitions; in particular the |\or| control sequence conflicts
+% with the |\or| primitive command used within the syntax of |\ifcase|\footnote{With
+% version 2002/07/18 v.1.0d this has been eliminated; the option remains for
+% compatibility with older versions, but the only legal command is now
+% \texttt{\string\oR}.}; |\oR| is a little exception since all the other
+% accent-vowel macros contain only lowercase letters; |og| is another exception,
+% and the accent macros have to be used; |\og| collided with the French command
+% for inserting the opening guillemets (see below). The point is that accent vowel
+% sequences that directly access the accented glyph are made up as such:
+% \begin{sintassi}
+% \bslash \meta{base character}\meta{first diacritic}\meta{second diacritic}\meta{third diacritic}
+% \textrm{where}
+% \meta{first diacritic} \textrm{is \texttt{d} or \texttt{r} or \texttt{s} for diaeresis, rough or smooth breath}
+% \meta{second diacritic} \textrm{is \texttt{c} or \texttt{a} or \texttt{g} for circumflex or acute or grave}
+% \meta{third diacritic} \textrm{is \texttt{i} for iota subscript or adscript}
+% \end{sintassi}
+% Evidently none of the diacritical marks is compulsory, but at least one must
+% be present; if more than one is present it must be given in that sequence. Since
+% |\oR| means omicron with rough breath, it is not very important that it is
+% declared with the standard sequence |<o| or with |\oR| or with |\<o|, because
+% it never falls after another letter, so that it never breaks any ligature or
+% kerning command. The command is there just for completeness. More or less the
+% same is true with the |\og| sequence; it fails to work correctly when the main
+% language is French and the |french| option to the |babel| package is in force;
+% matter of facts, |\og| conflicts with the homonymous command defined by that
+% option to mean ``ouvrir guillemets''; therefore it's necessary to use
+% either the plain sequence |`o| or the extended accent macro |\`o|.
+%
+% At the same time since all accent combinations are defined as ``text commands'',
+% in \LaTeX\ jargon, when their commands are followed by a vowel (or `r') they
+% define a ``text symbol'' i.e.\ they fetch directly the glyph of the accented
+% character; therefore |<o|, |\oR| and |\r{o}| are all equivalent (at the
+% beginning of a word where omicron with rough breath is the only place where you
+% might find it). See more on this point in the following sections.
+%
+% These glyph name macros are not defined by default, because the |GlyphNames|
+% boolean variable is false by default; you can specify the option
+% \emph{GlyphNames} for activating these macro names.
+% In any case the same result is more comfortably obtained by using the
+% extended accent macros whose behaviour is specified by the new
+% \babel\-greek settings.
+%
+% Another unusual option is set up for being used with non standard \TeX\ system
+% fonts; we have noticed that the Lipsian fonts appear a little too light when
+% used together with the Times or the Palatino fonts; probably this is true also
+% with other PostScript fonts. In this case the user might specify the option
+% |boldLipsian| and the Lipsian fonts used in medium series will be substituted
+% with those of the semi\-bold one.
+%
+% At the same time, from July 2005 and for a few years, the full collection
+% of the complete size set of the CB fonts has not been available any more
+% \emph{as the default \TeX\ system set up}; only the 10pt size were available
+% unless the \texttt{cbgreek-full} font package was loaded; for this reason
+% a new option was needed in order to instruct \texttt{teubner.sty} to use
+% the specific file \texttt{type1ec.sty} dated at least 2002/09/07, so as to
+% scale up or down all the EC and CB fonts from an original 10\,pt size.
+% In order that the \texttt{10pt} plays its role correctly, it was convenient,
+% if not compulsory, to require first the \texttt{babel} package, then the
+% \texttt{teubner} one with the option \texttt{10pt}, then all other packages
+% required for a specific document, in particular the \texttt{fontenc}
+% one if the \texttt{T1} encoding is requested. All this is maintained for
+% backward compatibility, and should not be necessary any more; now the
+% complete set of the CB fonts gets installed with every full installation
+% of the \TeX\ system, but with partial or basic installations, such option
+% might turn out to be useful even now.
+%
+% This kludge is necessary for all fonts that have description files that use the
+% |\EC@family| command for describing the available shapes and sizes; in practice
+% this happens only with the EC fonts, even when the \texttt{cm-super} scalable
+% implementation is used. For using the Latin Modern fonts (LM) new specific font
+% description files for the CB fonts are part of the \babel\ package, so this
+% problem does not exist; when using other fonts, such as the TX, PX, ZE,~\dots,
+% other kludges are necessary, because their font family names are different from
+% those normally used with \TeX: |cmr| for serifed fonts, |cmss| for sans serif
+% ones, and |cmtt| for monospaced ones.\footnote{Even the Latin Modern fonts have
+% different family names, but, due to their importance, specific font description
+% files have been added to the \babel\ package. The LM fonts are more comfortable
+% than the EC ones, when scalable fonts are to be used, because they are
+% continuously scalable and download into the produced files less font files than
+% the EC o cm-super ones. Unless specifically requested, the LM fonts should
+% always be preferred to the EC and cm-super ones. When using the LM fonts, its
+% better to use the full collection of the CB fonts, even if the CB font
+% description files are compatible with the single 10\,pt size.}
+%
+% Notice that when using, for example, the TX fonts and no kludge is available,
+% the CB fonts are loaded only as the ``error font'', since the TX fonts have
+% different family names than the CB ones; in many cases this might pass
+% un-noticed, but if real Greek text in different shapes and series has to be
+% typeset, the unaware typesetter might get crazy trying to force shape and series
+% changes in the Greek text; it would not be impossible, but it would be very,
+% very boring. In any case see in the next sections the implemented kludges in
+% order to run successful compilations also with non standard \TeX\ system fonts.
+% \begin{macrocode}
+\newif\ifor\orfalse % Compatibility with older versions
+\DeclareOption{or}{\relax}
+\newif\ifboldLipsian \boldLipsianfalse
+\DeclareOption{boldLipsian}{\boldLipsiantrue}
+\newif\ifonesizetypeone
+\DeclareOption{10pt}{\onesizetypeonetrue}
+\newif\ifGlyphNames \GlyphNamesfalse
+\DeclareOption{NoGlyphNames}{\GlyphNamesfalse}
+\DeclareOption{GlyphNames}{\GlyphNamestrue}
+\ProcessOptions*
+% \end{macrocode}
+%
+% In the next sections we frequently use the acronym for the Greek font encoding;
+% we hope it will eventually become \texttt{GR} or, following the actual 256 glyph
+% font encodings, \texttt{T7} or \texttt{X7}\footnote{Apparently \texttt{T7} has been
+% reserved to define an encoding where the first 128 glyphs are the standard
+% \texttt{OT1} encoded Latin fonts, and the second group, again of 128 glyphs,
+% contains the Greek characters; therefore, since polytonic spelling requires more
+% than 128 glyphs, the extended encoding \texttt{X7} will probably become the one
+% applicable to the whole set of the CB fonts. Time passing by, the \texttt{X7}
+% encoding name apparently has been used for some nordic language.}.
+% Meanwhile the acronym is \texttt{LGR}, so we'd better define a symbolic name, so
+% that we can change the definitive name in just one place.
+% \begin{macrocode}
+\def\GRencoding@name{LGR}
+% \end{macrocode}
+%
+% Now the default Olga Greek fonts, used for rendering the ``Greek italic shape''
+% are an alternative with the Lipsian ones.
+%
+% If the \texttt{10pt} option was
+% specified it is necessary to load also the package texttt{type1ec.sty}.
+% In any case we load also packages |graphicx| and |ifthen| that shall be useful
+% for some commands.
+% \begin{macrocode}
+\ifonesizetypeone
+ \RequirePackage[10pt]{type1ec}[2002/09/07]
+\fi
+\RequirePackage{graphicx}
+\RequirePackage{ifthen}
+% \end{macrocode}
+%
+% \begin{macro}{\metricsfont} Similarly the metric symbol font is declared
+% together with a command for selecting it:
+% \begin{macrocode}
+\DeclareFontFamily{U}{mtr}{\hyphenchar\font\m@ne}
+\ifonesizetypeone
+ \DeclareFontShape{U}{mtr}{m}{n}{<-> gmtr1000}{}%
+\else
+ \DeclareFontShape{U}{mtr}{m}{n}{%
+ <-5.5> gmtr0500 <5.5-6.5> gmtr0600
+ <6.5-7.5> gmtr0700 <7.5-8.5> gmtr0800
+ <8.5-9.5> gmtr0900 <9.5-11> gmtr1000
+ <11-15> gmtr1200 <15-> gmtr1728}{}%
+\fi
+\DeclareFontShape{U}{mtr}{m}{it}{<->ssub*mtr/m/n}{}%
+\DeclareFontShape{U}{mtr}{b}{it}{<->ssub*mtr/m/n}{}%
+\DeclareFontShape{U}{mtr}{b}{n}{<->ssub*mtr/m/n}{}%
+\newcommand*\metricsfont{\fontencoding{U}\fontfamily{mtr}\upshape}
+% \end{macrocode}
+% \end{macro}
+% Next we require the package for extensible math fonts; it might be strange to
+% use extensible math fonts in Greek philology, but a certain glyph must be picked
+% up from such fonts, with the assurance that it changes size together with the
+% current font size.
+% \begin{macrocode}
+\RequirePackage{exscale}
+% \end{macrocode}
+%
+% Some macros are necessary to switch languages; such macros must be independent
+% (at least for now) from the particular \babel\ version, whether it be version
+% 3.6, 3.7, 3.8, or~3.9; in the former the concept of ``language attribute'' is
+% unknown, while the latter recognises varieties of the same language by the
+% attribute setting.
+% With \babel\ version 3.9g things have further changed; the attribute
+% to a language may be appended to the language name with an interposed dot;
+% for example for Greek it might be |greek.polutoniko|.
+% Such macros, besides being as robust as possible, must provide the
+% alphabet changes as required.
+%
+%\begin{macro}{\GreekName}
+% During the language switching operations |\GreekName|
+% distinguishes the variant or the main language whose attribute
+% gets set and, evidently, becomes effective when the main language |greek|
+% is in force. Notice that if the |greek.ldf| has a date previous to 2014/09/18,
+% the attribute |ancient| may not be defined; in this case the |polutoniko|
+% attribute is set, else the |ancient| attribute is selected. The difference
+% is that the attribute |polutoniko| selects the polytonic spelling and the
+% modern Greek hyphenation, while |ancient| selects the polytonic spelling and
+% the classical Greek hyphenation. It is assumed that this |teubner| package
+% gets used for philological purposes only for ancient Greek. Nevertheless,
+% if some work on modern polytonic Greek philological document is being
+% typeset, the |ancient| attribute may work satisfactorily, but with some
+% possible ``ancient'' line breaks.
+% \begin{macrocode}
+\ifx\languageattribute\undefined
+ \def\GreekName{polutonikogreek}%
+\else
+ \def\GreekName{greek}
+ \def\strip@slash#1/#2/#3!{\edef\@tempA{#1#2#3}}
+ \def\getgreekdate#1 #2 #3 #4!{\def\@tempA{#1}\expandafter\strip@slash\@tempA!}
+ \expandafter\expandafter\expandafter\getgreekdate\csname ver@greek.ldf\endcsname !
+ \ifnum\@tempA<20140918
+ \languageattribute{greek}{polutoniko}%
+ \else
+ \languageattribute{greek}{ancient}%
+ \fi
+ \let\strip@slash\@undefined
+ \let\getgreekdate\@undefined
+\fi
+% \end{macrocode}
+%\end{macro}
+
+%
+% \subsection{Compatibility with Latin fonts}\label{ssec:LatinFontComp}
+%\begin{macro}{\previouslanguage}
+%\begin{macro}{\previousencoding}
+% The ``default'' language is defined as the
+% ``previous'' language; similarly the ``default'' encoding is defined as the
+% ``previous'' encoding; these are the language and the encoding in force when the
+% document starts; this is why such macros are defined at the beginning of the
+% document. At the same time we assure that if the CM (or EC) or the LM fonts are
+% the default ones, nothing special is done, while if the default fonts are, say,
+% the TX ones, they are correctly restored, but the CM families are used for the CB
+% ones.
+%\end{macro}
+%\end{macro}
+%
+%\begin{macro}{\substitutefontfamily}
+%\begin{macro}{\ifLipsian}
+% The font macro |\substitutefontfamily| is already present in the \babel\ kernel, but
+% with version 3.9g it is deprecated, although maintained for backwards compatibility;
+% it copes only with the standard families, series and shapes, therefore it does not
+% consider the Lipsian shape and its series. I had to redefine it together with a
+% new conditional macro in order to do the same job as the original one but taking
+% into consideration also the Lipsian shape; the purpose of this macro is to write
+% in the working directory a number of font description files that refer to the LGR
+% Greek encoding, but have the names of the Latin font families; such font
+% description files, simply substitute these non existent encoding-family series and
+% shapes with the existing series and shapes of any other LGR encoded Greek font, in
+% particular the CB ones.
+% Things might change in the future, so as to use the package by G\"unter Milde
+% \texttt{substitutefont} package (already present in the \acro{ctan} archive) or
+% other solutions by the core of \babel. Meanwhile we cope with what is available
+% right now.
+%
+% By issuing a command such as:
+% \begin{sintassi}\ttfamily
+% \texttt{\string\ifFamily}\{pxr\}\{cmr\}
+% \end{sintassi}
+% an association is made with all the series and shapes of the Palatino serifed
+% fonts to the corresponding CB serifed series and shapes; therefore when a language
+% shift changes the default encoding from, say, \texttt{T1} to \texttt{LGR} the
+% font family \texttt{LGR+pxr} is mapped to the font family \texttt{LGR+cmr} and
+% everything is supposed to work fine; when another language change resets the
+% encoding to \texttt{T1}, the original Latin script is used again. The redefined
+% |\substitutefontfamily| macro is as such:
+% \begin{macrocode}
+\newif\ifLipsian
+
+\providecommand*\substitutefontfamily{}%
+\renewcommand*\substitutefontfamily[3]{{%
+ \edef\@tempA{#1#2.fd}%
+ \lowercase\expandafter{\expandafter\def\expandafter\@tempA\expandafter{\@tempA}}%
+ \expandafter\IfFileExists\expandafter{\@tempA}{}{%
+ \immediate\openout15=\@tempA
+ \typeout{Writing file #1#2.fd}
+ \immediate\write15{%
+ \string\ProvidesFile{#1#2.fd}^^J
+ [\the\year/\two@digits{\the\month}/\two@digits{\the\day}
+ \space generated font description file]^^J
+ \string\DeclareFontFamily{#1}{#2}{}^^J
+ \string\DeclareFontShape{#1}{#2}{m}{n}{<->ssub * #3/m/n}{}^^J
+ \string\DeclareFontShape{#1}{#2}{m}{it}{<->ssub * #3/m/it}{}^^J
+ \string\DeclareFontShape{#1}{#2}{m}{sl}{<->ssub * #3/m/sl}{}^^J
+ \string\DeclareFontShape{#1}{#2}{m}{sc}{<->ssub * #3/m/sc}{}^^J
+ \string\DeclareFontShape{#1}{#2}{b}{n}{<->ssub * #3/bx/n}{}^^J
+ \string\DeclareFontShape{#1}{#2}{b}{it}{<->ssub * #3/bx/it}{}^^J
+ \string\DeclareFontShape{#1}{#2}{b}{sl}{<->ssub * #3/bx/sl}{}^^J
+ \string\DeclareFontShape{#1}{#2}{b}{sc}{<->ssub * #3/bx/sc}{}^^J
+ \string\DeclareFontShape{#1}{#2}{bx}{n}{<->ssub * #3/bx/n}{}^^J
+ \string\DeclareFontShape{#1}{#2}{bx}{it}{<->ssub * #3/bx/it}{}^^J
+ \string\DeclareFontShape{#1}{#2}{bx}{sl}{<->ssub * #3/bx/sl}{}^^J
+ \string\DeclareFontShape{#1}{#2}{bx}{sc}{<->ssub * #3/bx/sc}{}^^J
+ }%
+ \ifLipsian
+ \immediate\write15{%
+ \string\DeclareFontShape{#1}{#2}{m}{li}{<->ssub * #3/m/li}{}^^J %<- Lipsian
+ \string\DeclareFontShape{#1}{#2}{b}{li}{<->ssub * #3/b/li}{}^^J %<- Lipsian
+ \string\DeclareFontShape{#1}{#2}{bx}{li}{<->ssub * #3/bx/li}{}^^J %<-Lipsian
+ \string\DeclareFontShape{#1}{#2}{m}{ui}{<->ssub * #3/m/ui}{}^^J %<- upright Olga
+ \string\DeclareFontShape{#1}{#2}{b}{ui}{<->ssub * #3/m/ui}{}^^J %<- upright Olga
+ \string\DeclareFontShape{#1}{#2}{bx}{ui}{<->ssub * #3/bx/ui}{}^^J%<-upright Olga
+ \string\DeclareFontShape{#1}{#2}{m}{rs}{<->ssub * #3/m/rs}{}^^J %<-serifed lc
+ \string\DeclareFontShape{#1}{#2}{b}{rs}{<->ssub * #3/m/rs}{}^^J %<-serifed lc
+ \string\DeclareFontShape{#1}{#2}{bx}{rs}{<->ssub * #3/bx/rs}{}^^J%<-serifed lc
+ }%
+ \global\Lipsianfalse\fi
+ \closeout15}%
+ }}
+
+% \end{macrocode}
+% Notice that together with the Lipsian fonts the upright italics (Olga) and upright
+% serifed lowercase alphabets are defined. In a while there are the definition for
+% selecting these shapes. Of course you are not obliged to use them, but in case you
+% wanted\dots
+%
+% These results are obtained by means of the following macros.
+%\begin{macro}{\ifCMLM}
+%\begin{macro}{\ifFamily}
+% The |\ifCMLM| processes the necessary test in order to set the auxiliary macro
+% |\n@xt| to be an alias to |\iftrue| or |iffalse| depending on the fact that the
+% CM (or EC) fonts or the LM fonts are the default Latin ones, in this case it sets
+% the |\n@xt| macro equivalent to |\iftrue|, otherwise it sets it to |\iffalse|. In
+% order to succeed, it requires to analyse the first two letters of the default
+% family name; if these letters form one of the sequences |cm| or |lm|, the CM or
+% LM fonts have been loaded, otherwise some other fonts are in force. We need
+% therefore a macro with delimited arguments in order to extract the first two
+% letters of the family name.
+%
+% \begin{macrocode}
+\def\ifCMLM#1#2#3!{\edef\f@milyprefix{#1#2}%
+ \ifthenelse{\(\equal{\f@milyprefix}{cm}\OR\equal{\f@milyprefix}{lm}\)}%
+ {\let\n@xt\iftrue}{\def\f@milyprefix{cmr}\let\n@xt\iffalse}\n@xt}
+
+% \end{macrocode}
+% The other macro |\ifFamily| uses the previous macro and according to the test
+% result, possibly runs the |\substitutefontfamily| macro that, if
+% necessary, creates the description file that map the specified family font
+% description file to the second specified font family, both connected to the LGR
+% encoding. Therefore, after these font definition files exist, \LaTeX\ can fetch
+% the Greek fonts by way of substitution. Let's explain again: if you specify
+% \begin{verbatim}
+% \Lipsiantrue\ifFamily{pxr}{lmr}
+% \end{verbatim}
+% you state that you want to run the macro on the serifed Palatino font family, by
+% associating the |pxr| family to the |lmr| one\footnote{If you have the full CB
+% Greek font collection it's more convenient to map the missing fonts to the Latin
+% Modern Greek ones, while if you need to use the \emph{10pt} option, you'd better
+% map the missing family to the ordinary Computer Modern ones; the actual fonts are
+% the same, but the latter font definition files cope with the \emph{10pt} option,
+% while the former don't.}; by specifying |\Lipsiantrue| you state that you want to
+% create entries also for the Lipsian series and shape; the macro provides to reset
+% |\Lipsianfalse| in order to avoid that other calls of that macro on non serifed
+% or monospaced fonts try to create entries that in any case do not exist: the
+% Lipsian font comes only as a serifed font! In this way, if you are using
+% Palatino fonts through the \textsf{pxfonts} package, the |teubner| macros provide
+% to create the necessary font description files so that while you are typesetting
+% in medium normal Latin Palatino and you switch to Greek, the built in macros
+% change the encoding to LGR; the LGR Palatino serifed medium normal Greek font
+% does not exist, but that family, series and shape are mapped by the font
+% description file to the corresponding LGR encoded Latin Modern CB fonts in medium
+% series and normal shape, and typesetting goes on with the right Greek fonts.
+% \begin{macrocode}
+\newcommand*\ifFamily[2]{%
+\expandafter\ifCMLM#1!\else\substitutefontfamily{LGR}{#1}{#2}\fi}
+
+% \end{macrocode}
+% You don't actually need to use that macro for the Times or the Palatino eXtended
+% fonts loaded by means of the corresponding packages \textsf{txfonts} or
+% \textsf{pxfonts}, because a hook is set up so that ``at begin document'' the
+% loading of those packages is tested, and if the test is true, the necessary font
+% description files are possibly created. If you load the Times or the Palatino or
+% any other non standard font by means of other packages, it's up to you to issue
+% the |\substitutefontfamily| macro right after calling that font package and by
+% using the correct family names; similarly you might substitute the new Latin font
+% family names to other Greek font family names, if you have other fonts available.
+% At the same time at begin document we memorise the name and encoding of the Latin
+% font used for the default language, so that when returning to Latin font
+% typesetting after Greek font typesetting, the proper language typesetting rules
+% and encoding are restored.
+% \begin{macrocode}
+\AtBeginDocument{%
+\@ifpackageloaded{pxfonts}{\typeout{Palatino fonts loaded}%
+\Lipsiantrue\ifFamily{pxr}{cmr}\Lipsianfalse
+\ifFamily{pxss}{cmss}\ifFamily{pxtt}{cmtt}}{\relax}}
+
+\AtBeginDocument{%
+\@ifpackageloaded{txfonts}{\typeout{Times fonts loaded}%
+\RequirePackage{teubnertx}}{}}
+
+\AtBeginDocument{%
+ \edef\previouslanguage{\languagename}%
+ \edef\previousencoding{\f@encoding}}
+% \end{macrocode}
+%
+% Nevertheless all this requires a minimum of attention in specifying the options
+% for the \babel\ package and in the order extensions packages are input. The
+% |teubner.sty| package should be read \emph{after} any other package that sets or
+% resets the Latin font encoding; for example if the T1 encoding is selected as the
+% default one, in place of the OT1 encoding, then this choice must be made before
+% this package is read in. Similarly when the \babel\ options are specified,
+% remember that the last language name becomes the default language at begin
+% document; never specify |greek| as the last
+% language option!
+%\end{macro}
+%\end{macro}
+%\end{macro}
+%\end{macro}
+%
+%\begin{macro}{\Lipsiakostext}
+%\begin{macro}{\lishape}
+%\begin{macro}{\textli}
+% |\lishape| is the normal declaration, modelled on the other similar macros in the
+% \LaTeX\ kernel, made up to chose the Lipsian shape. Nevertheless since it is a
+% light character, if it must blend well with the other PostScript fonts, not only
+% the CM and LM, but also the other ones available for typesetting with the \TeX\
+% system, it is necessary to chose the |b| (bold) series in place of the |m|
+% (medium) one, while maintaining the |bx| (bold extended) series when the other
+% fonts are set with the blacker and larger series. This is why the |\lishape|
+% declaration is a little more complicate than normal, since it has to test the
+% value of the current series. The text command |\textli| matches the similar
+% commands for Latin fonts. But the |\lishape| declaration is used also within the
+% more complicated macros for declaring or setting the Lipsian font.
+%
+% |\Lipsiakostext| is a \emph{declaration} stating that from now on
+% typesetting will be done with the Lipsian fonts; notice that the encoding and the
+% language name in force before this declaration are memorised, then the current
+% Greek version is selected; the |\let\~\accperispomeni| is required because
+% switching on and off may reset the active tilde and connected macros definitions.
+% |\~| in Greek must set the circumflex accent, so we make sure that this really
+% occurs.
+% \begin{macrocode}
+\DeclareRobustCommand{\lishape}{%
+\not@math@alphabet\lishape\relax
+\ifthenelse{\equal{\f@encoding}{\GRencoding@name}}{%
+\ifboldLipsian
+\ifthenelse{\equal{\f@series}{m}}%
+{\fontseries{b}\fontshape{li}\rmfamily}%
+{\fontshape{li}\rmfamily}\else
+\fontshape{li}\rmfamily\fi}%
+{\fontshape{it}\selectfont}}%
+
+\DeclareTextFontCommand{\textli}{\lishape}%
+\DeclareRobustCommand\Lipsiakostext{%
+ \expandafter\select@language\expandafter{\GreekName}%
+ \let\~\accperispomeni\let~\accperispomeni\lishape}
+
+% \end{macrocode}
+%\end{macro}
+%\end{macro}
+%\end{macro}
+%\begin{macro}{\textLipsias}
+% |\textLipsias| is a command that typesets its argument with the |\Lipsiakostext|
+% declaration in force. The \LaTeX\ command declaration used here makes sure that
+% possible italic corrections are taken into account; the actual font switching is
+% made through the same |\Lipsiakostext| declaration, but the inner working
+% maintain local this declaration; for this reason we suggest to use this text
+% command rather than the font declaration.
+% \begin{macrocode}
+\DeclareTextFontCommand{\textLipsias}{\Lipsiakostext}
+
+% \end{macrocode}
+%\end{macro}
+%\begin{macro}{\NoLipsiakostext} |\NoLipsiakostext| is the opposite declaration
+% that undoes everything that was done with |\Lipsiakostext|. Probably it is
+% superfluous, but it has been asked for. If |\Lipsiakostext| is delimited within a
+% scope by means of an explicit group or an environment, it stops its effectiveness
+% with the end of its scope.
+%
+% It is worth noting that, in order to delimit within a scope the action of this and
+% of the other declarations, it is possible to use them as environments with the
+% same name without the backslash. for example one might input in the source file
+% something as:
+%\begin{quote}\obeylines
+% |\begin{Lipsiakostext}|
+% \meta{Greek text to be typeset with the Lipsian font}
+% |\end{Lipsiakostext}|
+%\end{quote}
+% Remember also that these Greek text declarations may be issued while typesetting
+% with Latin fonts; they provide also the language switch, so that they do not
+% require the typesetter to first switch to Greek and then to choose a certain Greek
+% font.
+% \begin{macrocode}
+\DeclareRobustCommand\NoLipsiakostext{%
+ \ifthenelse{\equal{\f@series}{b}}{\fontseries{m}}{\relax}%
+ \fontshape{n}\selectfont
+ \expandafter\select@language\expandafter{\previouslanguage}%
+ \rmfamily\bbl@activate{~}}
+
+% \end{macrocode}
+%\end{macro}
+%\begin{macro}{\textDidot}
+% |\textDidot| is a similar macro where the common upright Greek characters are
+% selected; it goes by itself that if |\textli| is specified within the
+% |\textDidot| argument, the typesetting is or becomes identical with what
+% one can obtain with the |\textLipsias| command.
+% \begin{macrocode}
+\DeclareRobustCommand\textDidot[1]{{%
+ \expandafter\select@language\expandafter{\GreekName}%
+ \let\~\accperispomeni\let~\accperispomeni
+ \fontencoding{LGR}\rmfamily#1}}
+
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\textlatin}
+% |\textlatin| is a redefinition of the standard \babel\ macro that is adapted to
+% the present situation, where it may be called behind the scenes in certain
+% situations that are beyond the control of the typesetter. Therefore every
+% precaution is taken in order to be sure that the composition of the command
+% argument is really done with the default encoding but maintaining the current
+% font familY, series and shape; of course, if the shape is that
+% related to the Lipsian font, then the italic shape is temporarily restored
+% (local definition). Moreover, with the (default) Latin fonts the tilde is
+% restored to a non breaking space by simply making it an active character.
+% \begin{macrocode}
+\DeclareRobustCommand\textlatin[1]{\edef\externalencoding{\f@encoding}{%
+ \def\itdefault{it}\def\@tempA{li}\ifx\@tempA\f@shape\def\f@shape{it}\fi%
+ \expandafter\select@language\expandafter{\previouslanguage}%
+ \fontencoding{\previousencoding}\selectfont
+ \bbl@activate{~}#1}%
+ \expandafter\fontencoding\expandafter{\externalencoding}}
+
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\uishape}
+%\begin{macro}{\textui}
+%\begin{macro}{\rsshape}
+%\begin{macro}{\textrs}
+% The other switching font macros for using the other shapes that are available
+% with the CB fonts are working only when typesetting in Greek and the default
+% encoding is therefore LGR.
+% \begin{macrocode}
+\DeclareRobustCommand\uishape{%
+\ifthenelse{\equal{\f@encoding}{\GRencoding@name}}%
+{\fontshape{ui}\selectfont}{\relax}}
+\DeclareTextFontCommand{\textui}{\uishape}
+
+\DeclareRobustCommand\rsshape{%
+\ifthenelse{\equal{\f@encoding}{\GRencoding@name}}%
+{\fontshape{rs}\selectfont}{\relax}}
+\DeclareTextFontCommand{\textrs}{\rsshape}
+
+% \end{macrocode}
+%\end{macro}
+%\end{macro}
+%\end{macro}
+%\end{macro}
+%
+% \subsection{Service macros}
+% Now we start the specific additions introduced with this package.
+%
+% \begin{macro}{\strip@pt}
+% The \LaTeX\ kernel has the macro |\strip@pt| that strips off the pt part from the
+% expanded value of a dimension register and makes available the measure in pt
+% of the contained length (the register contains the length measure in scaled
+% points; the expansion performed by \TeX\ with the command |\the| converts the
+% scaled points to printer points and shows the result with a string of decimal
+% digits with, possibly, a decimal fraction); its argument is supposed
+% to be a dimension register name, not its expanded contents. The |\strip@pt|
+% command eliminates the decimal point and the fractional part if the latter is
+% nought.
+%
+% With the help of such service macro we are going to define a certain number of
+% ``lift accent'' macros or ``put cedilla'' macros that work with both upright and
+% slanted fonts, although they contain different parameters for Latin compared to
+% Greek alphabets.
+% \end{macro}
+%
+% \begin{macro}{\lift@accent}
+% The first ``lift accent'' macro just puts an accent over
+% a letter, without inserting any space between them; the first argument is the
+% accent code (decimal, hexadecimal or octal; I prefer decimal), while the second
+% argument is the letter --~any letter, even if it is not a vowel!
+% \begin{macrocode}
+\newcommand*\lift@accent[2]{\leavevmode
+{\edef\slant@{\strip@pt\fontdimen1\font}%
+\dimen@=\z@\setbox\z@\hbox{\char#1}\advance\dimen@-.5\wd\z@
+\setbox\tw@\hbox{i}\setbox\z@\hbox{#2}%
+\ifdim\wd\z@>\wd\tw@\advance\dimen@ .5\wd\z@
+ \else\advance\dimen@ .3\wd\z@\fi
+\ifx#2h\advance\dimen@.05\wd\z@\fi
+\@tempdima\ht\z@\advance\@tempdima-1ex\relax
+\advance\dimen@\slant@\@tempdima
+\raise\@tempdima\hbox to\z@{\kern\dimen@\char#1\relax\hss}\box\z@}}
+
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\Lift@accent}
+% The second ``lift accent'' macro behaves as the first one except it interposes a
+% small vertical distance between the accent and the letter:
+% \begin{macrocode}
+\newcommand*\Lift@accent[2]{\leavevmode
+{\edef\slant@{\strip@pt\fontdimen1\font}%
+\dimen@=\z@\setbox\z@\hbox{\char#1}\advance\dimen@-.5\wd\z@
+\setbox\tw@\hbox{i}\setbox\z@\hbox{#2}%
+\ifdim\wd\z@>\wd\tw@\advance\dimen@ .5\wd\z@
+\else\advance\dimen@ .3\wd\z@\fi
+\ifx#2a\advance\dimen@-.1\wd\z@\fi
+\ifx#2h\advance\dimen@.05\wd\z@\fi
+\@tempdima\ht\z@\advance\@tempdima-1ex\advance\@tempdima.1ex\relax
+\advance\dimen@\slant@\@tempdima
+\raise\@tempdima\hbox to\z@{\kern\dimen@\char#1\relax\hss}\box\z@}}
+
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\LIFT@accent}
+% The third ``lift accent'' macro behaves as the first one, except it interposes a
+% specified vertical space between the letter and the accent; this space is
+% specified as the second argument:
+% \begin{macrocode}
+\newcommand*\LIFT@accent[3]{\leavevmode
+{\edef\slant@{\strip@pt\fontdimen1\font}%
+\dimen@=\z@\setbox\z@\hbox{\char#1}\advance\dimen@-.5\wd\z@
+\setbox\tw@\hbox{i}\setbox\z@\hbox{#3}%
+\ifdim\wd\z@>\wd\tw@\advance\dimen@ .5\wd\z@
+\else\advance\dimen@ .3\wd\z@\fi
+\ifx#2a\advance\dimen@-.1\wd\z@\fi
+\ifx#2h\advance\dimen@.05\wd\z@\fi
+\@tempdima\ht\z@\advance\@tempdima-1ex\relax
+\def\@tempA{#2}\ifx\@tempA\undefined\else
+\advance\@tempdima#2\fi\let\@tempA\undefined
+\advance\dimen@\slant@\@tempdima
+\raise\@tempdima\hbox to\z@{\kern\dimen@\char#1\relax\hss}\box\z@}}
+
+% \end{macrocode}
+% \end{macro}
+%
+% All these macros will be used in subsequent ``put accent'' macros, that will
+% stack also several accents one above the other; the necessity arises for example
+% when the macron or breve diacritical marks have to be put over accented letters;
+% according to typographical practice the accents must go over the macron or the
+% breve.
+% In a similar way philologists often must use other diacritical marks in addition
+% to the traditional Greek ones, therefore these macros will be used, for example,
+% for setting the Scandinavian ring (from a Latin font) over a Greek letter (from a
+% Greek font).
+%
+% \begin{macro}{\cap@}
+% The first such unusual diacritical mark is a small cap, a small upside down breve
+% sign, that is in position~1 of the Greek font table.
+% \begin{macrocode}
+\DeclareRobustCommand{\cap@}[1]{\leavevmode
+{\edef\slant@{\strip@pt\fontdimen1\font}%
+\setbox\tw@\hbox{\fontencoding{\GRencoding@name}\selectfont
+ \char1}\dimen@-.5\wd\tw@
+\setbox\z@\hbox{#1}%
+\advance\dimen@ .5\wd\z@
+\@tempdima\ht\z@\advance\@tempdima.55ex\relax
+\advance\dimen@\slant@\@tempdima
+\ifx\cf@encoding\GRencoding@name\else
+\ifx#1k\advance\dimen@-.3\wd\tw@\fi\fi
+\raise\@tempdima\hbox to\z@{\kern\dimen@\box\tw@\relax\hss}\box\z@}}
+
+% \end{macrocode}
+% The |\ifx\cf@encoding\GRencoding@name| conditional construct shows that this
+% macro behaves differently with different font encodings; the following |\ifx#1k|
+% checks the argument against the Greek letter kappa, which shows very clearly
+% that these macros operate on any letter, not only on vowels.
+% \end{macro}
+%
+% \begin{macro}{\cap}
+% By means of the above |\cap@| macro we can define three equivalent commands to be
+% used either when the Greek encoding is in force, or when one of the Latin
+% encodings is in force; but we must pay attention, because there exist already
+% the command |\cap| to be used in mathematics; therefore we better exclude this
+% possibility through a clever use of the |\textormath| macro. Therefore we
+% first save the math command into an alia |\mcap|; then we define three
+% textual commands for the various encodings |\tcap|; finnally we use
+% |\textormath|:
+% \begin{macrocode}
+\let\mcap\cap
+\DeclareTextCommand{\tcap}{\GRencoding@name}{\cap@}
+\DeclareTextCommand{\tcap}{OT1}{\cap@}
+\DeclareTextCommand{\tcap}{T1}{\cap@}
+\DeclareRobustCommand*\cap{\textormath{\tcap}{\mcap}}
+% \end{macrocode}
+% Probably one definition would be sufficient, but on one side the presence of three
+% encoding dependent macros are the remains of initial works, while on the other
+% side they prevent to use these macros with encodings for which the macro might not
+% work well, because it was not tested with them.
+% \end{macro}
+%
+% \begin{macro}{\cap@cedilla}
+% Similarly a small cap can be put under another letter as it was a cedilla; for
+% this task another macro is defined, which makes use of the same glyph in
+% position~1 in the Greek font table:
+% \begin{macrocode}
+\newcommand*\cap@cedilla[1]{\leavevmode
+{\setbox4\hbox{\fontencoding{\GRencoding@name}\selectfont\char1}%
+\dimen@-.5\wd4
+\setbox\z@\hbox{#1}%
+\ifx\cf@encoding\GRencoding@name
+ \ifx#1i\advance\dimen@ .65\wd\z@\else\advance\dimen@ .5\wd\z@\fi
+\else
+ \ifx#1i\advance\dimen@ .55\wd\z@\else\advance\dimen@ .5\wd\z@\fi
+\fi
+\hbox to\z@{\kern\dimen@\box4\hss}\unhbox\z@}}
+
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\ring@cedilla}
+% Another cedilla like diacritical mark is the Scandinavian ring put under a letter;
+% the ring is taken from the metrics font, so its slot position does not depend
+% on the various Latin encodings; the correct positioning requires careful
+% examination of the letter under which it is to be placed, distinguishing the Greek
+% from the Latin encodings:
+% \begin{macrocode}
+\newcommand*\ring@cedilla[1]{\leavevmode
+{\setbox4\hbox{\metricsfont\char26}%
+\edef\slant@{\strip@pt\fontdimen1\font}%
+\dimen@-.5\wd4\ifdim\slant@\p@>\z@\advance\dimen@-.04ex\fi
+\setbox\z@\hbox{#1}%
+\ifx\cf@encoding\GRencoding@name
+ \advance\dimen@ .45\wd\z@
+ \ifx#1h\advance\dimen@-.13\wd\z@\fi
+ \ifx#1a\advance\dimen@-.07\wd\z@\fi
+ \ifx#1o\advance\dimen@-.07\wd\z@\fi
+ \ifx#1u\advance\dimen@+.07\wd\z@\fi
+ \ifx#1w\advance\dimen@+.03\wd\z@\fi
+\else
+ \ifx#1i\advance\dimen@.55\wd\z@\else
+ \ifx#1r\advance\dimen@.38\wd\z@\else
+ \ifx#1o\advance\dimen@.47\wd\z@\else
+ \advance\dimen@0.5\wd\z@
+ \fi\fi\fi
+\fi
+\hbox to\z@{\kern\dimen@\box4\hss}\unhbox\z@}}
+
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\dot@cedilla}
+% Even the standard \LaTeX\ macro |dot| must be redefined with a cedilla like macro,
+% so as to make use of a special dot from the metric symbols font:
+% \begin{macrocode}
+\newcommand*\dot@cedilla[1]{\leavevmode
+{\setbox4\hbox{\metricsfont\char27}%
+\dimen@-.5\wd4
+\setbox\tw@\hbox{i}\setbox\z@\hbox{#1}%
+\ifx\cf@encoding\GRencoding@name
+ \advance\dimen@ .5\wd\z@
+ \ifx#1h\advance\dimen@-.13\wd\z@\fi
+\else
+ \ifdim\wd\z@>\wd\tw@\advance\dimen@.55\wd\z@
+ \else\advance\dimen@.5\wd\tw@\fi
+\fi
+\setbox\tw@\hbox{o}\ifdim\wd\z@=\wd\tw@\advance\dimen@-.05\wd\z@\fi
+\hbox to\z@{\kern\dimen@\box4\hss}\unhbox\z@}}
+
+% \end{macrocode}
+%\end{macro}
+%
+% \begin{macro}{\tie@cedilla}
+% \LaTeX\ has the macro |\t| for placing a ``tie'' over two letters; philologists
+% require also a tie under two letters; this is why another cedilla like macro is
+% needed:
+% \begin{macrocode}
+\newcommand*\tie@cedilla[1]{\leavevmode
+{\setbox4\hbox{\fontencoding{\GRencoding@name}\selectfont\char20}%
+\dimen@-.5\wd4
+\setbox\tw@\hbox{i}\setbox\z@\hbox{#1}%
+\ifx\cf@encoding\GRencoding@name
+ \advance\dimen@.5\wd\z@
+ \ifx#1h\advance\dimen@-.1\wd\z@\fi
+ \ifx#1u\advance\dimen@.15\wd\z@\fi
+\else
+ \ifdim\wd\z@>\wd\tw@\advance\dimen@ .55\wd\z@
+ \else\advance\dimen@ .5\wd\tw@\fi
+\fi
+\setbox\tw@\hbox{o}\ifdim\wd\z@=\wd\tw@\advance\dimen@-.05\wd\z@\fi
+\hbox to\z@{\kern\dimen@\box4\hss}\unhbox\z@}}
+
+% \end{macrocode}
+% \end{macro}
+%
+% \subsection{Extended accent definitions}
+% We will use those service macros in the definition of several accent like macros
+% that keep all the intricacies away from the user.
+%
+% In particular the \LaTeX\ kernel macros are used in order to declare accents,
+% composite glyphs, composite commands, and the like; these are used as the default
+% definitions; afterwards other definitions will be given that work when these
+% composite macros don't work.
+%
+% In other words, while |\~| and |u| in Greek form the composite glyph ``upsilon
+% with circumflex'' that exists in the Greek font table, the same macro |\~| and the
+% letter |k| produce the superposition of a circumflex on top of a ``kappa'' glyph,
+% since this glyph does not exist in the Greek font table.
+%^^A
+%^^A NON SEMBRA CHE FUNZIONI CON TUTTI I COMANDI; CHIEDERE A GÃœNTER
+%^^A
+% Notice that all these declarations are restricted to the Greek font encoding
+% so they are usable only when such encoding is in force. See the
+% |teubner-doc.pdf| file for more details concerning the usefulness of the
+% extended accent macros vs.~the ligature mechanism. In any case, with version
+% 3.9g of \babel\ and the modifications introduced by G\"unter Milde, the
+% actual \babel\-greek maintainer, during the year 2013, such extended accent
+% macros are LICR encoded and may always be used when typesetting in Greek;
+% see file \texttt{greek-fontenc.def} and \texttt{lgrenc.def} for further
+% details, remembering that such files are always loaded when typesetting
+% Greek texts, irrespective of the input encoding; if the encoding is
+% \texttt{utf8} direct Greek glyph input is possible (if your keyboard
+% allows you to do such input).
+%
+%\section{Avoiding conflicts}
+% Some LICR definitions are necessary to use \pack{teubner}, but some of them
+% are really important; therefore G\"unter Milde developed package
+% \pack{textslpha} that comes with the other special files for the Greek LICR
+% encoding, that avoids any conflict;we load it at the |\begin{document}|
+% execution so that it will be loaded only if necessary:
+% \begin{macrocode}
+\AtBeginDocument{\RequirePackage{textalpha}}
+% \end{macrocode}
+%
+% \subsection{Special accent macros}
+% Now we come back to the ``accent like'' and ``cedilla like'' general macros we
+% defined above, and that will be extensively used in the following definitions.
+% Note that for what the circumflex is concerned, when |teubner| is in effect it
+% is not defined as an active character and does not work as a non breaking space.
+% The command |\~| is just an accent macro; how do you put a non breaking space in
+% a Greek context? By simply using the \LaTeX\ kernel macro |\nobreakspace|; when
+% typesetting with non-Greek fonts the |~| is certainly handy
+% to insert a non breaking space (a tie), but for polytonic Greek spelling in the
+% past 15 years or so the Greek language definition file has always used the |~|
+% sign a letter, not as an active character. If you look in the \babel\ package
+% documentation related to the Greek language, you find that for what concerns the
+% |~| with polytonic spelling a number of ``dirty tricks'' have been used, but
+% nothing has been done to replace the ``tie'' function of this character when
+% typesetting in languages that use the Latin script; the only action related to
+% this point has been to redefine the kernel macros for typesetting figure and
+% table% captions so as to substitute the |~| character with its explicit
+% definition |\nobreakspace|. It is necessary to do the same when this package is
+% used, although a shorter alias command |\nbs| is provided in order to simplify
+% the input keying.
+% \begin{macrocode}
+\let\nbs\nobreakspace
+% \end{macrocode}
+%
+% Before defining the Greek accents with the extended macros input with the
+% LICR accent macros, we have to define the accent superpositioning macros that
+% with \pack{teubner} allow to stack from one to more accent over the base letter,
+% taking into account the slant of the font from which the base letter is taken.
+% Notice that these macros allow to set an accent on any base latter, even if that
+% might be meaningless. At the same time we redefine the standard macros so as to
+% let them do the same work when the LGR encoding is not in force. This duality is
+% necessary, not only for backward compatibility, but also for avoiding that the
+% normal redefined macros highjack the LICR facility.
+%
+% We first define aliases for the standard \LaTeX\ accents, so that when
+% entering Greek typesetting mode we can save the \LaTeX\ macros, and restore
+% them upon exiting:
+% \begin{macrocode}
+\let\accacuto\'
+\let\accgrave\`
+\let\acccircon\~
+\let\accdieresi\"
+\let\accbreve\u
+\let\accmacron\=
+% \end{macrocode}
+%
+% Then we define alternate macros for these accents, as ``lifting'' accent macros,
+% so that they can put their respective accent over any letter.
+% For the diaeresis we need to put an invisible character (|v| in the LGR encoded
+% CB fonts, that with LICR becomes |\textcompwordmark|) in order to avoid any
+% ligature with an implied end of word (boundarychar) that turns the diaeresis
+% into an apostrophe.
+% \begin{macrocode}
+\DeclareTextCommand{\G}{\GRencoding@name}[1]{\lift@accent{96}{#1}}
+\DeclareTextCommand{\A}{\GRencoding@name}[1]{\lift@accent{39}{#1}}
+\DeclareTextCommand{\C}{\GRencoding@name}[1]{\lift@accent{126}{#1}}
+\DeclareTextCommand{\D}{\GRencoding@name}[1]{\lift@accent{34\textcompwordmark}{#1}}
+\DeclareTextCommand{\B}{\GRencoding@name}[1]{\lift@accent{30}{#1}}
+\DeclareTextCommand{\M}{\GRencoding@name}[1]{\lift@accent{31}{#1}}
+%
+% \end{macrocode}
+% But we have to provide also the means for disabling the |~| shorthand that is
+% reset every time the Greek language is selected again in a multi language document
+% where language shifts take place quite often; we must also counteract the
+% resetting of the |\~| definition performed by the |greek.ld| file in every
+% language shift; we add the accent definition to the |\extrasgreek| macro,
+% and we reset them at |\noextrasgreek| execution.
+% \begin{macrocode}
+\addto\extrasgreek{\shorthandoff{~}\let\~\accperispomeni
+\let\"\accdialytika\let\'\acctonos\let\`\accvaria}
+\addto\noextrasgreek{\shorthandon{~}\let\~\acccircon
+\let\"\accdieresi\let\'\accacuto\let\`\accgrave}
+
+% \end{macrocode}
+%
+% Besides the normal |\B| command for setting a breve command, another ``large
+% breve'' is required by philologists, who need to mark a diphthong, or in general
+% two letters; the macro |\U| does the job, but it is the typesetter's
+% responsibility to input the macro argument as made of two letters (possibly with
+% their own accents):
+% \begin{macrocode}
+\DeclareTextCommand{\U}{\GRencoding@name}[1]{\lift@accent{151}{#1}}
+% rough
+\DeclareTextCommand{\r}{\GRencoding@name}[1]{\lift@accent{60}{#1}}
+% smooth
+\DeclareTextCommand{\s}{\GRencoding@name}[1]{\lift@accent{62}{#1}}
+% acute+diaeresis
+\DeclareTextCommand{\Ad}{\GRencoding@name}[1]{\lift@accent{35}{#1}}
+% grave+diaeresis
+\DeclareTextCommand{\Gd}{\GRencoding@name}[1]{\lift@accent{36}{#1}}
+% circumflex+diaeresis
+\DeclareTextCommand{\Cd}{\GRencoding@name}[1]{\lift@accent{32}{#1}}
+% acute+rough
+\DeclareTextCommand{\Ar}{\GRencoding@name}[1]{\lift@accent{86}{#1}}
+% grave+rough
+\DeclareTextCommand{\Gr}{\GRencoding@name}[1]{\lift@accent{67}{#1}}
+% circumflex+rough
+\DeclareTextCommand{\Cr}{\GRencoding@name}[1]{\lift@accent{64}{#1}}
+% acute+smooth
+\DeclareTextCommand{\As}{\GRencoding@name}[1]{\lift@accent{94}{#1}}
+% grave+smooth
+\DeclareTextCommand{\Gs}{\GRencoding@name}[1]{\lift@accent{95}{#1}}
+% circumflex+smooth
+\DeclareTextCommand{\Cs}{\GRencoding@name}[1]{\lift@accent{92}{#1}}
+% \end{macrocode}
+% Most of the above accent commands are used again in order to tie a text symbol
+% meaning to certain combinations, that is when they receive as argument a vowel
+% whose accented glyph is present in the font; in this way in order to type
+% ``alpha with rough breath, acute accent and iota subscript'' you can type
+% \verb"<'a|", or \verb"\Ar{a}|" or |\arai| or \verb+\<'a|+, if you use the new standard
+% accent macros; the advantage of using the first notation is its short string; the
+% advantage of the second is that it does not break kerning commands with a
+% preceding letter; the advantage of the third is that it does not break any
+% kerning either before or after; the fourth solution produces the same result as
+% the third, but it's easier to make up and you don't have to memorise any specific
+% naming rule for accented glyphs. With the Lipsian font this trick is particularly
+% useful for any sequence of alpha and upsilon each one with its own accents and/or
+% diaeresis.
+%
+% In Greek the regular cedilla is meaningless, so that |\c| may be redefined
+% as a semivowel command; at the same time the typesetter might be more
+% comfortable if he could always use the same, although longer, macro for
+% marking a vowel as a semivowel one; therefore |\c| plays the same role
+% in Greek as |\semiv|.
+% \begin{macrocode}
+% cap cedilla
+\DeclareTextCommand{\c}{\GRencoding@name}[1]{\cap@cedilla{#1}}
+\DeclareTextCommand{\semiv}{\GRencoding@name}[1]{\cap@cedilla{#1}}
+\DeclareTextCommand{\semiv}{OT1}[1]{\cap@cedilla{#1}}
+\DeclareTextCommand{\semiv}{T1}[1]{\cap@cedilla{#1}}
+% ring cedilla
+\DeclareTextCommand{\ring}{\GRencoding@name}[1]{\ring@cedilla{#1}}
+\DeclareTextCommand{\ring}{OT1}[1]{\ring@cedilla{#1}}
+\DeclareTextCommand{\ring}{T1}[1]{\ring@cedilla{#1}}
+% dot cedilla
+\DeclareTextCommand{\Dot}{\GRencoding@name}[1]{\dot@cedilla{#1}}
+\DeclareTextCommand{\Dot}{OT1}[1]{\dot@cedilla{#1}}
+\DeclareTextCommand{\Dot}{T1}[1]{\dot@cedilla{#1}}
+% tie cedilla
+\DeclareTextCommand{\ut}{\GRencoding@name}[1]{\tie@cedilla{#1}}
+\DeclareTextCommand{\ut}{OT1}[1]{\tie@cedilla{#1}}
+\DeclareTextCommand{\ut}{T1}[1]{\tie@cedilla{#1}}
+%
+% Acute breve
+\DeclareTextCommand{\Ab}{\GRencoding@name}[1]%
+ {\LIFT@accent{39}{-.15ex}{\lift@accent{30}{#1}}}
+% Grave breve
+\DeclareTextCommand{\Gb}{\GRencoding@name}[1]%
+ {\LIFT@accent{96}{-.15ex}{\lift@accent{30}{#1}}}
+% Acute rough breve
+\DeclareTextCommand{\Arb}{\GRencoding@name}[1]%
+ {\LIFT@accent{86}{-.15ex}{\lift@accent{30}{#1}}}
+% Grave rough breve
+\DeclareTextCommand{\Grb}{\GRencoding@name}[1]%
+ {\LIFT@accent{67}{-.15ex}{\lift@accent{30}{#1}}}
+% Acute smooth breve
+\DeclareTextCommand{\Asb}{\GRencoding@name}[1]%
+ {\LIFT@accent{94}{-.15ex}{\lift@accent{30}{#1}}}
+% Grave smooth breve
+\DeclareTextCommand{\Gsb}{\GRencoding@name}[1]%
+ {\LIFT@accent{95}{-.15ex}{\lift@accent{30}{#1}}}
+%
+% Acute macron
+\DeclareTextCommand{\Am}{\GRencoding@name}[1]%
+ {\Lift@accent{39}{\lift@accent{31}{#1}}}
+% Grave macron
+\DeclareTextCommand{\Gm}{\GRencoding@name}[1]%
+ {\Lift@accent{96}{\lift@accent{31}{#1}}}
+% Circumflex macron
+\DeclareTextCommand{\Cm}{\GRencoding@name}[1]%
+ {\Lift@accent{126}{\lift@accent{31}{#1}}}
+% Acute rough macron
+\DeclareTextCommand{\Arm}{\GRencoding@name}[1]%
+ {\Lift@accent{86}{\lift@accent{31}{#1}}}
+% Grave rough macron
+\DeclareTextCommand{\Grm}{\GRencoding@name}[1]%
+ {\Lift@accent{67}{\lift@accent{31}{#1}}}
+% Circumflex rough macron
+\DeclareTextCommand{\Crm}{\GRencoding@name}[1]%
+ {\Lift@accent{64}{\lift@accent{31}{#1}}}
+% Acute smooth macron
+\DeclareTextCommand{\Asm}{\GRencoding@name}[1]%
+ {\Lift@accent{94}{\lift@accent{31}{#1}}}
+% Grave smooth macron
+\DeclareTextCommand{\Gsm}{\GRencoding@name}[1]%
+ {\Lift@accent{95}{\lift@accent{31}{#1}}}
+% Circumflex smooth macron
+\DeclareTextCommand{\Csm}{\GRencoding@name}[1]%
+ {\Lift@accent{92}{\lift@accent{31}{#1}}}
+% smooth macron
+\DeclareTextCommand{\Sm}{\GRencoding@name}[1]%
+ {\Lift@accent{62}{\lift@accent{31}{#1}}}
+% rough macron
+\DeclareTextCommand{\Rm}{\GRencoding@name}[1]%
+ {\Lift@accent{60}{\lift@accent{31}{#1}}}
+% smooth breve
+\DeclareTextCommand{\Sb}{\GRencoding@name}[1]%
+ {\LIFT@accent{62}{-0.15ex}{\lift@accent{30}{#1}}}
+% rough breve
+\DeclareTextCommand{\Rb}{\GRencoding@name}[1]%
+ {\LIFT@accent{60}{-0.15ex}{\lift@accent{30}{#1}}}
+% breve and dieresis
+\DeclareTextCommand{\bd}{\GRencoding@name}[1]%
+ {\LIFT@accent{30}{-.1ex}{\lift@accent{34v}{#1}}}
+%
+% iota subscript
+\DeclareTextCommand{\iS}{\GRencoding@name}[1]
+ {\ooalign{#1\crcr\hidewidth\char124\hidewidth}}
+
+% \end{macrocode}
+%
+% \begin{macro}{\d}
+% The |\d| macro must be made available also with the Greek encoding
+% \begin{macrocode}
+\DeclareTextCommand{\d}{\GRencoding@name}[1]%
+ {\leavevmode\bgroup\o@lign{\relax#1\crcr
+ \hidewidth\sh@ft{10}.\hidewidth}\egroup}
+
+% \end{macrocode}
+% \end{macro}
+%
+% Some other philologist diacritical marks are needed.
+%
+% \begin {macro}{\Open}
+% The |\Open| macro sets a special sign under a letter in order
+% to mark it with an open pronunciation.
+% \begin{macrocode}
+\DeclareRobustCommand{\Open}[1]{\leavevmode
+{\setbox4\hbox{\raise-.33ex\hbox{\metricsfont\char14}}%
+\dimen@-.5\wd4
+\setbox\tw@\hbox{i}\setbox\z@\hbox{#1}%
+\ifx\cf@encoding\GRencoding@name
+ \advance\dimen@ .5\wd\z@
+ \setbox\tw@\hbox{h}\ifdim\wd\z@=\wd\tw@\advance\dimen@-.13\wd\z@\fi
+\else
+ \ifdim\wd\z@>\wd\tw@\advance\dimen@ .55\wd\z@
+ \else\advance\dimen@ .5\wd\tw@\fi
+\fi
+\setbox\tw@\hbox{o}\ifdim\wd\z@=\wd\tw@\advance\dimen@-.05\wd\z@\fi
+\hbox to\z@{\kern\dimen@\box4\hss}\unhbox\z@}}
+
+% \end{macrocode}
+% \end{macro}
+% \begin {macro}{\nasal}
+% The macro |\nasal| marks a letter for a nasal pronunciation.
+% \begin{macrocode}
+\DeclareRobustCommand{\nasal}[1]{\leavevmode
+{\setbox4\hbox{\raise-1.7ex\hbox{\GEcq}}%
+\dimen@-.5\wd4
+\setbox\tw@\hbox{i}\setbox\z@\hbox{#1}%
+\ifx\cf@encoding\GRencoding@name
+ \advance\dimen@ .5\wd\z@
+ \setbox\tw@\hbox{h}\ifdim\wd\z@=\wd\tw@\advance\dimen@-.13\wd\z@\fi
+\else
+ \ifdim\wd\z@>\wd\tw@\advance\dimen@ .55\wd\z@
+ \else\advance\dimen@ .5\wd\tw@\fi
+\fi
+\setbox\tw@\hbox{o}\ifdim\wd\z@=\wd\tw@\advance\dimen@-.05\wd\z@\fi
+\hbox to\z@{\kern\dimen@\box4\hss}\unhbox\z@}}
+
+% \end{macrocode}
+% \end{macro}
+%\begin {macro}{\tenaspir}
+% Similarly |\tenaspir| marks a ``tenuis aspiratio''
+% \begin{macrocode}
+\DeclareRobustCommand{\tenaspir}[1]{#1\/%
+ {\fontencoding{\GRencoding@name}\selectfont<v}}
+% \end{macrocode}
+% \end{macro}
+%\begin{macro}{\palat}
+% |\palat| marks a palatal pronunciation of some consonants.
+% \begin{macrocode}
+\DeclareRobustCommand{\palat}[1]{#1{%
+ \expandafter\fontencoding\expandafter{\GRencoding@name}\selectfont
+ \anwtonos}}
+
+% \end{macrocode}
+%\end{macro}
+%
+% With the help of the previous macros some new commands get defined so as
+% to use a simple more or less mnemonic macro instead of having the typesetter type
+% in nested macros; these macros are valid only in the Greek and Latin encodings.
+% \begin{macrocode}
+% dot and breve
+\DeclareTextCommand{\Ud}{\GRencoding@name}[1]{\d{\u{#1}}}
+% dot and macron
+\DeclareTextCommand{\md}{\GRencoding@name}[1]{\d{\={#1}}}
+% open and breve
+\DeclareTextCommand{\UO}{\GRencoding@name}[1]{\Open{\u{#1}}}
+% open and macron
+\DeclareTextCommand{\mO}{\GRencoding@name}[1]{\Open{\={#1}}}
+
+%
+\DeclareTextCommand{\Ud}{T1}[1]{\d{\u{#1}}}
+\DeclareTextCommand{\md}{T1}[1]{\d{\={#1}}}
+\DeclareTextCommand{\UO}{T1}[1]{\Open{\u{#1}}}
+\DeclareTextCommand{\mO}{T1}[1]{\Open{\={#1}}}
+%
+\DeclareTextCommand{\Ud}{OT1}[1]{\d{\u{#1}}}
+\DeclareTextCommand{\md}{OT1}[1]{\d{\={#1}}}
+\DeclareTextCommand{\UO}{OT1}[1]{\Open{\u{#1}}}
+\DeclareTextCommand{\mO}{OT1}[1]{\Open{\={#1}}}
+
+% \end{macrocode}
+%
+% \subsection{Some text commands}
+% \begin{macro}{\greekquoteleft}
+% \begin{macro}{\greekquoteright}
+% \begin{macro}{\textguillemotleft}
+% \begin{macro}{\textguillemotright}
+% \begin{macro}{\textcompwordmark}
+% \begin{macro}{\textemdash}
+% \begin{macro}{emdash}
+% \begin{macro}{\textendash}
+% All these macros are defined by the new \texttt{lgrenc.def} file, so it is not necessary to redefine them.% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
+%\begin{macro}{\stigma}
+%\begin{macro}{\varstigma}
+%\begin{macro}{\koppa}
+%\begin{macro}{\coppa}
+%\begin{macro}{\varkoppa}
+%\begin{macro}{\sampi}
+%\begin{macro}{\Coppa}
+%\begin{macro}{\Stigma}
+%\begin{macro}{\Sampi}
+%\begin{macro}{\Euro}
+%\begin{macro}{\permill} S
+% These macros, too, are defined by the \texttt{lgrenc.def} file and subsidiaries,
+% but with different names; therefore we make some aliases:
+% \begin{macrocode}
+\let\stigma\textstigma
+\let\varstigma\textvarstigma
+\let\koppa\textkoppa
+\let\qoppa\textqoppa
+\let\coppa\textqoppa
+\let\Koppa\textQoppa
+\let\Coppa\textQoppa
+\let\varkoppa\textqoppa
+\let\sampi\textsampi
+\let\Stigma\textStigma
+\let\Sampi\textsampi
+\let\f\textdigamma
+\let\F\textDigamma\let\Digamma\F
+\let\Euro\texteuro
+\let\permill\textperthousand
+\let\schwa\textschwa
+% \end{macrocode}
+%\end{macro}
+%\end{macro}
+%\end{macro}
+%\end{macro}
+%\end{macro}
+%\end{macro}
+%\end{macro}
+%\end{macro}
+%\end{macro}
+%\end{macro}
+%\end{macro}
+%
+%\begin{macro}{\textdollar}
+%\begin{macro}{\textsection}
+%\begin{macro}{\textsterling}
+%\begin{macro}{\textunderscore}
+%\begin{macro}{\textvisiblespace}
+% More important, although unlikely to be found in a philological text, is the
+% question of standard \LaTeX\ commands that are defined with reference to some
+% encoding; if Greek text is being typeset, the Greek encoding is being used and
+% such symbols would not be available any more; \LaTeX would issue warning messages
+% complaining for their absence. Therefore we redefined them also for the Greek
+% encoding.
+% \begin{macrocode}
+\DeclareTextCommand{\textdollar}{\GRencoding@name}%
+ {{\fontencoding{T1}\selectfont\char36}}
+\DeclareTextCommand{\textsection}{\GRencoding@name}%
+ {{\fontencoding{T1}\selectfont\char159}}
+\DeclareTextCommand{\textsterling}{\GRencoding@name}%
+ {{\fontencoding{T1}\selectfont\char191}}
+\DeclareTextCommand{\textunderscore}{\GRencoding@name}%
+ {{\fontencoding{T1}\selectfont\char95}}
+\DeclareTextCommand{\textvisiblespace}{\GRencoding@name}%
+ {{\fontencoding{T1}\selectfont\char32}}
+
+% \end{macrocode}
+%\end{macro}
+%\end{macro}
+%\end{macro}
+%\end{macro}
+%\end{macro}
+%
+%
+% \subsection{Accent macros and glyph names}
+% Now come dozens of macros that allow to access Greek accented vowels (plus rho
+% with rough and smooth breaths) with macros instead of ligatures; such macros
+% allow the kerning information to be used by \TeX, while the ligature mechanism
+% would sometimes impeach the use of such kerning information. Notice that the
+% same glyphs are often accessed with a ``text symbol'' or a ``text composite
+% symbol''; as explained above the opportunity of using either one derives from
+% the necessity of maintaining the kerning mechanism embedded in the font; if the
+% CB fonts had a postfixed accent notation, instead of a prefixed one, none of
+% these macros would be necessary (probably\dots!), but there would be other
+% inconveniences.
+%
+% Notice that the following code is subject to the boolean variable |GlyphNames|
+% which is set to \emph{false} by default, just for compatibility with the past;
+% I suggest to use the \emph{GlyphNames} option when when you really want to use
+% such macros; remember though that all these glyphs are more easily specified by
+% means of the extended accent macros that are also less restricted in their
+% names; for a letter marked with a smooth breath and an acute accent you can
+% indifferently type before the letter one of the following |\>\'|, |\>'|, |\'\>|,
+% |\'>| at your choice. Moreover you can always postfix the mark for the iota
+% subscribed at the right of the letter, without any need o memorising complicated
+% names.
+%
+% Notice the macros |\oR| and |\oG| that have the second letter capitalised in
+% order to avoid conflicts with otherwise homonymous macros defined in the \LaTeX\
+% kernel or in other packages; by maintaining the false value to the boolean
+% variable |GlyphNames| you are sure to avoid conflicts.
+% \begin{macrocode}
+\ifGlyphNames
+\DeclareTextSymbol{\ag}{\GRencoding@name}{128}
+\DeclareTextSymbol{\ar}{\GRencoding@name}{129}
+\DeclareTextComposite{\r}{\GRencoding@name}{a}{129}
+\DeclareTextSymbol{\as}{\GRencoding@name}{130}
+\DeclareTextComposite{\s}{\GRencoding@name}{a}{130}
+\DeclareTextSymbol{\aa}{\GRencoding@name}{136}
+\DeclareTextSymbol{\ac}{\GRencoding@name}{144}
+\DeclareTextSymbol{\ai}{\GRencoding@name}{248}
+\DeclareTextSymbol{\aai}{\GRencoding@name}{140}
+\DeclareTextSymbol{\aci}{\GRencoding@name}{148}
+\DeclareTextSymbol{\agi}{\GRencoding@name}{132}
+\DeclareTextSymbol{\ara}{\GRencoding@name}{137}
+\DeclareTextComposite{\Ar}{\GRencoding@name}{a}{137}
+\DeclareTextSymbol{\arc}{\GRencoding@name}{145}
+\DeclareTextComposite{\Cr}{\GRencoding@name}{a}{145}
+\DeclareTextSymbol{\arg}{\GRencoding@name}{131}
+\DeclareTextComposite{\Gr}{\GRencoding@name}{a}{131}
+\DeclareTextSymbol{\ari}{\GRencoding@name}{133}
+\DeclareTextSymbol{\asa}{\GRencoding@name}{138}
+\DeclareTextComposite{\As}{\GRencoding@name}{a}{138}
+\DeclareTextSymbol{\asc}{\GRencoding@name}{146}
+\DeclareTextComposite{\Cs}{\GRencoding@name}{a}{146}
+\DeclareTextSymbol{\asg}{\GRencoding@name}{139}
+\DeclareTextComposite{\Gs}{\GRencoding@name}{a}{139}
+\DeclareTextSymbol{\asi}{\GRencoding@name}{134}
+\DeclareTextSymbol{\argi}{\GRencoding@name}{135}
+\DeclareTextSymbol{\arai}{\GRencoding@name}{141}
+\DeclareTextSymbol{\arci}{\GRencoding@name}{149}
+\DeclareTextSymbol{\asai}{\GRencoding@name}{142}
+\DeclareTextSymbol{\asgi}{\GRencoding@name}{143}
+\DeclareTextSymbol{\asci}{\GRencoding@name}{150}
+\DeclareTextSymbol{\hg}{\GRencoding@name}{152}
+\DeclareTextSymbol{\hr}{\GRencoding@name}{153}
+\DeclareTextComposite{\r}{\GRencoding@name}{h}{153}
+\DeclareTextSymbol{\hs}{\GRencoding@name}{154}
+\DeclareTextComposite{\s}{\GRencoding@name}{h}{154}
+\DeclareTextSymbol{\hrg}{\GRencoding@name}{163}
+\DeclareTextComposite{\Gr}{\GRencoding@name}{h}{163}
+\DeclareTextSymbol{\hgi}{\GRencoding@name}{156}
+\DeclareTextSymbol{\hri}{\GRencoding@name}{157}
+\DeclareTextSymbol{\hsi}{\GRencoding@name}{158}
+\DeclareTextSymbol{\hrgi}{\GRencoding@name}{167}
+\DeclareTextSymbol{\ha}{\GRencoding@name}{160}
+\DeclareTextSymbol{\hra}{\GRencoding@name}{161}
+\DeclareTextComposite{\Ar}{\GRencoding@name}{h}{161}
+\DeclareTextSymbol{\hsa}{\GRencoding@name}{162}
+\DeclareTextComposite{\As}{\GRencoding@name}{h}{162}
+\DeclareTextSymbol{\hsg}{\GRencoding@name}{171}
+\DeclareTextComposite{\Gs}{\GRencoding@name}{h}{171}
+\DeclareTextSymbol{\hai}{\GRencoding@name}{164}
+\DeclareTextSymbol{\hrai}{\GRencoding@name}{165}
+\DeclareTextSymbol{\hsai}{\GRencoding@name}{166}
+\DeclareTextSymbol{\hsgi}{\GRencoding@name}{175}
+\DeclareTextSymbol{\hc}{\GRencoding@name}{168}
+\DeclareTextSymbol{\hrc}{\GRencoding@name}{169}
+\DeclareTextComposite{\Cr}{\GRencoding@name}{h}{169}
+\DeclareTextSymbol{\hsc}{\GRencoding@name}{170}
+\DeclareTextComposite{\Cs}{\GRencoding@name}{h}{170}
+\DeclareTextSymbol{\hci}{\GRencoding@name}{172}
+\DeclareTextSymbol{\hrci}{\GRencoding@name}{173}
+\DeclareTextSymbol{\hsci}{\GRencoding@name}{174}
+\DeclareTextSymbol{\hi}{\GRencoding@name}{249}
+\DeclareTextSymbol{\wg}{\GRencoding@name}{176}
+\DeclareTextSymbol{\wr}{\GRencoding@name}{177}
+\DeclareTextComposite{\r}{\GRencoding@name}{w}{177}
+\DeclareTextSymbol{\ws}{\GRencoding@name}{178}
+\DeclareTextComposite{\s}{\GRencoding@name}{w}{178}
+\DeclareTextSymbol{\wrg}{\GRencoding@name}{179}
+\DeclareTextComposite{\Gr}{\GRencoding@name}{w}{179}
+\DeclareTextSymbol{\wgi}{\GRencoding@name}{180}
+\DeclareTextSymbol{\wri}{\GRencoding@name}{181}
+\DeclareTextSymbol{\wsi}{\GRencoding@name}{182}
+\DeclareTextSymbol{\wrgi}{\GRencoding@name}{183}
+\DeclareTextSymbol{\wa}{\GRencoding@name}{184}
+\DeclareTextSymbol{\wra}{\GRencoding@name}{185}
+\DeclareTextComposite{\Ar}{\GRencoding@name}{w}{185}
+\DeclareTextSymbol{\wsa}{\GRencoding@name}{186}
+\DeclareTextComposite{\As}{\GRencoding@name}{w}{186}
+\DeclareTextSymbol{\wsg}{\GRencoding@name}{187}
+\DeclareTextComposite{\Gs}{\GRencoding@name}{w}{187}
+\DeclareTextSymbol{\wai}{\GRencoding@name}{188}
+\DeclareTextSymbol{\wrai}{\GRencoding@name}{189}
+\DeclareTextSymbol{\wsai}{\GRencoding@name}{190}
+\DeclareTextSymbol{\wsgi}{\GRencoding@name}{191}
+\DeclareTextSymbol{\wc}{\GRencoding@name}{192}
+\DeclareTextSymbol{\wrc}{\GRencoding@name}{193}
+\DeclareTextComposite{\Cr}{\GRencoding@name}{w}{193}
+\DeclareTextSymbol{\wsc}{\GRencoding@name}{194}
+\DeclareTextComposite{\Cs}{\GRencoding@name}{w}{194}
+\DeclareTextSymbol{\wci}{\GRencoding@name}{196}
+\DeclareTextSymbol{\wrci}{\GRencoding@name}{197}
+\DeclareTextSymbol{\wsci}{\GRencoding@name}{198}
+\DeclareTextSymbol{\wi}{\GRencoding@name}{250}
+\DeclareTextSymbol{\ig}{\GRencoding@name}{200}
+\DeclareTextSymbol{\ir}{\GRencoding@name}{201}
+\DeclareTextComposite{\r}{\GRencoding@name}{i}{201}
+\DeclareTextSymbol{\is}{\GRencoding@name}{202}
+\DeclareTextComposite{\s}{\GRencoding@name}{i}{202}
+\DeclareTextSymbol{\irg}{\GRencoding@name}{203}
+\DeclareTextComposite{\Gr}{\GRencoding@name}{i}{203}
+\DeclareTextSymbol{\ia}{\GRencoding@name}{208}
+\DeclareTextSymbol{\ira}{\GRencoding@name}{209}
+\DeclareTextComposite{\Ar}{\GRencoding@name}{i}{209}
+\DeclareTextSymbol{\isa}{\GRencoding@name}{210}
+\DeclareTextComposite{\As}{\GRencoding@name}{i}{210}
+\DeclareTextSymbol{\isg}{\GRencoding@name}{211}
+\DeclareTextComposite{\Gs}{\GRencoding@name}{i}{211}
+\DeclareTextSymbol{\ic}{\GRencoding@name}{216}
+\DeclareTextSymbol{\irc}{\GRencoding@name}{217}
+\DeclareTextComposite{\Cr}{\GRencoding@name}{i}{217}
+\DeclareTextSymbol{\isc}{\GRencoding@name}{218}
+\DeclareTextComposite{\Cs}{\GRencoding@name}{i}{218}
+\DeclareTextSymbol{\id}{\GRencoding@name}{240}
+\DeclareTextSymbol{\idg}{\GRencoding@name}{241}
+\DeclareTextComposite{\Gd}{\GRencoding@name}{i}{241}
+\DeclareTextSymbol{\ida}{\GRencoding@name}{242}
+\DeclareTextComposite{\Ad}{\GRencoding@name}{i}{242}
+\DeclareTextSymbol{\idc}{\GRencoding@name}{243}
+\DeclareTextComposite{\Cd}{\GRencoding@name}{i}{243}
+\DeclareTextSymbol{\ug}{\GRencoding@name}{204}
+\DeclareTextSymbol{\ur}{\GRencoding@name}{205}
+\DeclareTextComposite{\r}{\GRencoding@name}{u}{205}
+\DeclareTextSymbol{\us}{\GRencoding@name}{206}
+\DeclareTextComposite{\s}{\GRencoding@name}{u}{206}
+\DeclareTextSymbol{\urg}{\GRencoding@name}{207}
+\DeclareTextComposite{\Gr}{\GRencoding@name}{u}{207}
+\DeclareTextSymbol{\ua}{\GRencoding@name}{212}
+\DeclareTextSymbol{\ura}{\GRencoding@name}{213}
+\DeclareTextComposite{\Ar}{\GRencoding@name}{u}{213}
+\DeclareTextSymbol{\usa}{\GRencoding@name}{214}
+\DeclareTextComposite{\As}{\GRencoding@name}{u}{214}
+\DeclareTextSymbol{\usg}{\GRencoding@name}{215}
+\DeclareTextComposite{\Gs}{\GRencoding@name}{u}{215}
+\DeclareTextSymbol{\uc}{\GRencoding@name}{220}
+\DeclareTextSymbol{\urc}{\GRencoding@name}{221}
+\DeclareTextComposite{\Cr}{\GRencoding@name}{u}{221}
+\DeclareTextSymbol{\usc}{\GRencoding@name}{222}
+\DeclareTextComposite{\Cs}{\GRencoding@name}{u}{222}
+\DeclareTextSymbol{\ud}{\GRencoding@name}{244}
+\DeclareTextSymbol{\udg}{\GRencoding@name}{245}
+\DeclareTextComposite{\Gd}{\GRencoding@name}{u}{245}
+\DeclareTextSymbol{\uda}{\GRencoding@name}{246}
+\DeclareTextComposite{\Ad}{\GRencoding@name}{u}{246}
+\DeclareTextSymbol{\udc}{\GRencoding@name}{247}
+\DeclareTextComposite{\Cd}{\GRencoding@name}{u}{247}
+\DeclareTextSymbol{\eg}{\GRencoding@name}{224}
+\DeclareTextSymbol{\er}{\GRencoding@name}{225}
+\DeclareTextComposite{\r}{\GRencoding@name}{e}{225}
+\DeclareTextSymbol{\es}{\GRencoding@name}{226}
+\DeclareTextComposite{\s}{\GRencoding@name}{e}{226}
+\DeclareTextSymbol{\erg}{\GRencoding@name}{227}
+\DeclareTextComposite{\Gr}{\GRencoding@name}{e}{227}
+\DeclareTextSymbol{\ea}{\GRencoding@name}{232}
+\DeclareTextSymbol{\era}{\GRencoding@name}{233}
+\DeclareTextComposite{\Ar}{\GRencoding@name}{e}{233}
+\DeclareTextSymbol{\esa}{\GRencoding@name}{234}
+\DeclareTextComposite{\As}{\GRencoding@name}{e}{234}
+\DeclareTextSymbol{\esg}{\GRencoding@name}{235}
+\DeclareTextComposite{\Gs}{\GRencoding@name}{e}{235}
+\DeclareTextSymbol{\oR}{\GRencoding@name}{229}
+\DeclareTextComposite{\r}{\GRencoding@name}{o}{229}
+\DeclareTextSymbol{\oG}{\GRencoding@name}{228}
+\DeclareTextSymbol{\os}{\GRencoding@name}{230}
+\DeclareTextComposite{\s}{\GRencoding@name}{o}{230}
+\DeclareTextSymbol{\org}{\GRencoding@name}{231}
+\DeclareTextComposite{\Gr}{\GRencoding@name}{o}{231}
+\DeclareTextSymbol{\oa}{\GRencoding@name}{236}
+\DeclareTextSymbol{\ora}{\GRencoding@name}{237}
+\DeclareTextComposite{\Ar}{\GRencoding@name}{o}{237}
+\DeclareTextSymbol{\osa}{\GRencoding@name}{238}
+\DeclareTextComposite{\As}{\GRencoding@name}{o}{238}
+\DeclareTextSymbol{\osg}{\GRencoding@name}{239}
+\DeclareTextComposite{\Gs}{\GRencoding@name}{o}{239}
+\DeclareTextSymbol{\rr}{\GRencoding@name}{251}
+\DeclareTextComposite{\r}{\GRencoding@name}{r}{251}
+\DeclareTextSymbol{\rs}{\GRencoding@name}{252}
+\DeclareTextComposite{\s}{\GRencoding@name}{r}{252}
+\DeclareTextSymbol{\Id}{\GRencoding@name}{219}
+\DeclareTextSymbol{\Ud}{\GRencoding@name}{223}
+\DeclareTextComposite{\"}{\GRencoding@name}{U}{223}
+\fi
+
+%
+% \end{macrocode}
+%
+% \subsection{Text philological symbols and macros}
+% Next come some short macros for inserting special symbols that philologists
+% use quite often in Greek.
+%\begin{macro}{\h}
+% Macro |\h| is used to insert a Latin ``h'' while typesetting in Greek.
+%\begin{macro}{\q}
+% Macro |\q| is used to insert a Latin ``q'' while typesetting in Greek.
+%\begin{macro}{\yod}
+%\begin{macro}{\iod}
+% Macros |\yod| and |\iod| are used to insert a
+% Latin ``j'' while typesetting in Greek; the control sequence |\jod| was avoided in
+% order to reduce the possibility of typing |\jot| which is a \TeX\ internal
+% dimension.
+% \begin{macrocode}
+\DeclareTextCommand{\h}{\GRencoding@name}%
+ {{\fontencoding{OT1}\selectfont h}}
+\DeclareTextCommand{\q}{\GRencoding@name}%
+ {{\fontencoding{OT1}\selectfont q}}
+\DeclareTextCommand{\yod}{\GRencoding@name}%
+ {{\fontencoding{OT1}\selectfont j}}%
+\let\iod\yod
+
+% \end{macrocode}
+%\end{macro}
+%\end{macro}
+%\end{macro}
+%\end{macro}
+%
+%\begin {macro}{\f}
+%\begin {macro}{\F}
+%\begin {macro}{\digamma}
+%\begin {macro}{\Digamma}
+% At the same time it was believed that for inserting lower and upper case
+% ``digamma'' it was preferable to use short macros and to avoid the dilemma between
+% the |\ddigamma| and the |\digamma| macros, the former being the
+% one defined in the |greek| option to \babel, the latter being
+% a standard mathematical symbol; initially I believed that philologists do
+% not use mathematical symbols so we made |\digamma| an alias for |\f|;
+% afterwards I
+% found out that mathematicians, physicists, engineers,~\dots\ use the
+% \textsf{teubner.sty} package and that the |\digamma| is a symbol already defined
+% in the package \textsf{amssymb.sty}; therefore I made a conditional creation of
+% this alias; this trick is delayed to the beginning of the document, so as to
+% make it independent on the order with which packages are loaded.
+% \begin{macrocode}
+\AtBeginDocument{\unless\ifcsname digamma\endcsname\let\digamma\textdigamma\fi}
+% \end{macrocode}
+%\end{macro}
+%\end{macro}
+%\end{macro}
+%\end{macro}
+%
+%\begin {macro}{\fLow}
+%\begin {macro}{\fHigh}
+% The digamma glyphs set forth another question because, according to Paolo
+% Ciacchi, a different glyph should be used for typesetting text compared with
+% the one that is used as a variant in Milesian numerals in place of the standard
+% stigma symbol.
+% By means of macros |\fLow| or |\fHigh| it is possible to chose the raised or the
+% lowered digamma glyphs; Greek numerals always use the lowered one, while when
+% text is being typeset the typesetter can chose the version he likes best.
+% \begin{macrocode}
+\DeclareRobustCommand{\fLow}%
+ {{\setbox\z@\hbox{\f}\dimen@\ht\z@
+ \advance\dimen@-1ex\raise-\dimen@\hbox{\box\z@}}}
+\DeclareRobustCommand{\fHigh}%
+ {{\setbox\z@\hbox{\f}\dimen@\dp\z@\raise\dimen@\hbox{\box\z@}}}
+
+% \end{macrocode}
+%\end{macro}
+%\end{macro}
+%
+%\begin{macro}{\qmark}
+%\begin{macro}{\lpar}
+%\begin{macro}{\rpar}
+%\begin{macro}{\frapar}
+% Here we start a set of miscellaneous macros. We begin with some parentheses
+% that should turn out in upright shape, even if the default font is the Lipsian
+% one which is oblique; its parentheses are oblique as in all oblique fonts,
+% therefore we need to quietly change fonts behind the scenes. The same is true with
+% the question mark that, philologically speaking, represents an uncertain element,
+% not the termination of a real question; it should therefore always come out
+% between parentheses and in upright shape from a Latin font. While the
+% parenthesized question mark comes from the OT1 Latin upright font, the parentheses
+% obtained with |\lpar| and |\rpar| are taken from the metric symbols font, as well
+% as the parentheses used in the parenthesized text processed with macro |\frapar|.
+% \begin{macrocode}
+\DeclareRobustCommand\qmark{\hskip.16ex{\fontencoding{OT1}\upshape(?)}}
+\DeclareRobustCommand\lpar{{\metricsfont(}}
+\DeclareRobustCommand\rpar{{\metricsfont)}}
+\DeclareRobustCommand\frapar[1]{\lpar#1\rpar}
+
+% \end{macrocode}
+%\end{macro}
+%\end{macro}
+%\end{macro}
+%\end{macro}
+%
+%\begin{macro}{\ap}
+% The apex/superscript macro |\ap| does not differ much from the plain standard
+% \LaTeX\ macro |\textsuperscript|, the only difference being the italic correction
+% that precedes |\textsuperscript|.
+% \begin{macrocode}
+\DeclareRobustCommand{\ap}[1]{\/\textsuperscript{#1}}
+
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\Dots}
+%\begin{macro}{\DOTS}
+%\begin{macro}{\Dashes}
+%\begin{macro}{\DASHES}
+% Four macros are defined so as to insert a certain number of dots or dashes as
+% specified in the optional command argument; |\Dots| and |\Dashes| fit the dots or
+% the dashes pretty close together, while |\DOTS| and |\DASHES| fit them more
+% loosely apart.
+% \begin{macrocode}
+\newcommand\Dots[1][1]{{\count255=#1\@whilenum\count255>\z@
+ \do{\kern.4ex\d{v}\kern.4ex\advance\count255\m@ne}}}
+\newcommand\DOTS[1][1]{{\count255=#1\@whilenum\count255>\z@
+ \do{\kern.8ex\d{v}\kern.8ex\advance\count255\m@ne}}}
+\newcommand\Dashes[1][1]{{\count255=#1\@whilenum\count255>\z@
+ \do{\kern.4ex--\kern.4ex\advance\count255\m@ne}}}
+\newcommand\DASHES[1][1]{{\count255=#1\@whilenum\count255>\z@
+ \do{\kern.8ex--\kern.8ex\advance\count255\m@ne}}}
+
+% \end{macrocode}
+%\end{macro}
+%\end{macro}
+%\end{macro}
+%\end{macro}
+%
+%\begin{macro}{\:}
+%\begin{macro}{\;}
+%\begin{macro}{\?}
+%\begin{macro}{\MutPers}
+% Greek text or poetry sometimes requires some stacked dots; here we prepared macros
+% for two (|\:|), three (|\;|), and four (|\?|) stacked dots. Two stacked dots in a
+% row indicate that the speaker of a drama or comedy has changed (\textit{mutatio
+% personae}). For |\:| and |\;| it is necessary to preserve the mathematical
+% meaning, while |\?| apparently does not have any previous use in standard \LaTeX.
+% The real macros are |\tw@dots|, |\thre@dots|,
+% and |\f@urdots|.
+% \begin{macrocode}
+\DeclareRobustCommand{\:}{\textormath{\tw@dots}{\mskip\medmuskip}}
+\DeclareRobustCommand{\;}{\textormath{\thre@dots}{\mskip\thickmuskip}}
+\DeclareRobustCommand{\?}{\f@urdots}
+\DeclareRobustCommand{\mutpers}{\makebox[1ex]{\:\hfill\:}\space}
+\let\MutPers\mutpers\let\antilabe\mutpers
+\def\tw@dots{\mbox{\kern1\p@\vbox to1ex{\hbox{.}\vss\hbox{.}}}}
+\def\thre@dots{\mbox{\kern1\p@\vbox to 2ex{\hbox{.}\vss
+ \hbox{.}\vss\hbox{.}}}}
+\def\f@urdots{\mbox{\kern1\p@\vbox to 2ex{\hbox{.}\vss
+ \hbox{.}\vss\hbox{.}\vss\hbox{.}}}}
+
+% \end{macrocode}
+%\end{macro}
+%\end{macro}
+%\end{macro}
+%\end{macro}
+%
+% \DeleteShortVerb{\|}
+%\begin{macro}{\|}
+% \MakeShortVerb{\|}
+%\begin{macro}{\dBar}
+%\begin{macro}{\tBar}
+% Similarly Greek text and poetry require certain \emph{cesurae} indicated with
+% vertical bars; we provided commands for one (\verb"\|"), two (|\dBar|), and
+% three (|\tBar|) vertical bars.
+% \begin{macrocode}
+\DeclareRobustCommand{\|}{\relax\ensuremath{\mskip2mu\vert}}
+\DeclareRobustCommand{\dBar}{\ensuremath{\vert\vert}}
+\DeclareRobustCommand{\tBar}{\ensuremath{\vert\vert\vert}}
+
+% \end{macrocode}
+%\end{macro}
+%\end{macro}
+%\end{macro}
+%
+%\begin{macro}{\negthinspace}
+%\begin{macro}{\posthinspace}
+%\begin{macro}{\posthindspace}
+%\begin{macro}{\,}
+%\begin{macro}{\!}
+% The following are mostly service macros for adjusting the spacing within macro
+% definitions. Nevertheless they are available also to the typesetter, because
+% sometimes certain glyph combinations require a little adjustment. Of course the
+% typesetter will not use them at the very beginning, but only during proof
+% revision, so as to introduce them only where really necessary.
+% \begin{macrocode}
+\def\negthinspace{\nobreak\hskip-0.07em}
+\def\posthinspace{\nobreak\hskip0.07em}
+\def\posthindspace{\nobreak\hskip0.14em}
+\renewcommand{\,}{\textormath{\posthinspace}{\mskip\thinmuskip}}
+\renewcommand{\!}{\textormath{\negthinspace}{\mskip-\thinmuskip}}
+
+% \end{macrocode}
+%\end{macro}
+%\end{macro}
+%\end{macro}
+%\end{macro}
+%\end{macro}
+%
+%\begin{macro}{\lbrk}
+%\begin{macro}{\rbrk}
+%\begin{macro}{\lmqi}
+%\begin{macro}{\rmqi}
+%\begin{macro}{\lmqs}
+%\begin{macro}{\rmqs}
+%\begin{macro}{\mqi}
+%\begin{macro}{\mqs}
+%\begin{macro}{\Ladd}
+%\begin{macro}{\LLadd}
+%\begin{macro}{\ladd}
+%\begin{macro}{\lladd}
+%\begin{macro}{\lesp}
+%\begin{macro}{\ldel}
+% Philologists require a certain number of special parentheses in order to
+% enclose parts of text that are doubtful or that have been added although
+% they are missing from the original manuscripts; even letter strings that have
+% been modified under the assumption that the copyist made some error.
+% Such enclosing marks include angle brackets, square brackets, upper part
+% of square brackets, lower part of square brackets. Such symbols may even
+% appear doubled. Most of these glyphs have been designed anew, because they
+% are missing or are inadequate if they are taken from the usual CM fonts (either
+% text or math fonts). Brackets for example have been designed as to be higher
+% and deeper than the font total height, so as not to interfere with Greek
+% accents and to accomodate for at least one level of nesting (for example square
+% brackets enclosing lower part of square brackets. The single glyphs may be used
+% directly by the typesetter, but we think that the commands requiring some text are
+% far more useful. |\Ladd| and its double version |\LLadd| enclose text that should
+% be added for sure.
+% |\ladd| and its double version |\lladd| enclose text that probably should be
+% added. |\lesp| and its synonymous |\ldel| enclose text that should be deleted.
+% |\mqi| surrounds some text with the lower part of open and closed square brackets.
+% |\mqs| surrounds some text with the upper part of open and closed square brackets.
+% See \texttt{teubenr-doc.pdf} for samples of such commands.
+% \begin{macrocode}
+\DeclareRobustCommand{\lbrk}{{\metricsfont\posthindspace[\negthinspace}}
+\DeclareRobustCommand{\rbrk}{{\metricsfont]}}
+\DeclareRobustCommand\lmqi{{\metricsfont!}}
+\DeclareRobustCommand\rmqi{{\metricsfont:}}
+\DeclareRobustCommand\lmqs{{\metricsfont?}}
+\DeclareRobustCommand\rmqs{{\metricsfont;}}
+\DeclareRobustCommand\mqi[1]{\posthinspace\lmqi\negthinspace
+ {#1\/}\rmqi}\let\mezzeq\mqi
+\DeclareRobustCommand\mqs[1]{\lmqs{#1\/}\rmqs}
+\DeclareRobustCommand{\Ladd}[1]{{\metricsfont<}{\!\!#1\/}%
+ {\metricsfont>}}% litterae certe addendae
+\DeclareRobustCommand{\LLadd}[1]{{\metricsfont<\kern-.3ex<}
+ {\!\!#1\/}{\metricsfont>\kern-.3ex>}}% litterae certe addendae
+\DeclareRobustCommand{\ladd}[1]{{\metricsfont\kern.15ex[\negthinspace}%
+ {#1\/}{\metricsfont]\kern-.15ex}}% litterae addendae
+\DeclareRobustCommand{\lladd}[1]{{\metricsfont\kern.15ex[\kern-.3ex[%
+ \negthinspace}{#1\/}{\metricsfont]\kern-.3ex]%
+ \kern-.15ex}}% litterae addendae
+\DeclareRobustCommand{\lesp}[1]%
+ {\mbox{$\{\kern-.20ex$#1\kern.16ex$\}$}}% litterae delendae
+\let\ldel\lesp
+
+% \end{macrocode}
+%\end{macro}
+%\end{macro}
+%\end{macro}
+%\end{macro}
+%\end{macro}
+%\end{macro}
+%\end{macro}
+%\end{macro}
+%\end{macro}
+%\end{macro}
+%\end{macro}
+%\end{macro}
+%\end{macro}
+%\end{macro}
+%
+% \subsection{Greek, English, and German quotes}
+%\begin{macro}{\itopenquotes}
+%\begin{macro}{\itclosedquotes}
+%\begin{macro}{\itoq}
+%\begin{macro}{\itcq}
+% The following macros allow to set Italian\slash English high quotes even while
+% typing in Greek; such quotes are standard in Italian and in English typesetting
+% and their commands preserve the font family shape and series of the surrounding
+% font. In French typography, as well in the typographic traditions of other
+% countries, different quotes are used. In that case the typesetter must resort to a
+% change of language, for example returning to German, inputting the German quotes,
+% then turning back to Greek. He might as well define his own macros, or he might
+% clone the following definitions and change them according to his country
+% typographic traditions. If he decides to modify these definitions he should either
+% rename this file or he should put his redefinitions in a private package to be
+% input \emph{after} \texttt{teubner.sty}.
+% \begin{macrocode}
+\DeclareTextCommand{\itopenquotes}{\GRencoding@name}%
+ {{\fontencoding{OT1}\selectfont\char92}}%
+\DeclareTextCommand{\itclosedquotes}{\GRencoding@name}%
+ {{\fontencoding{OT1}\selectfont\char34}}%
+\let\itoq\itopenquotes
+\let\itcq\itclosedquotes
+
+% \end{macrocode}
+%\end{macro}
+%\end{macro}
+%\end{macro}
+%\end{macro}
+%
+%\begin{macro}{\GEodq}
+%\begin{macro}{\GEcdq}
+%\begin{macro}{\GEdqtext}
+%\begin{macro}{\GEoq}
+%\begin{macro}{\GEcq}
+%\begin{macro}{\GEqtext}
+%\begin{macro}{\ENodq}
+%\begin{macro}{\ENcdq}
+%\begin{macro}{\ENdqtext}
+% On the opposite the following German and English quotes are redesigned and
+% included in the metric symbols font. Since this font is in one shape and one
+% series, these quotes do not change as the outside font does, but remain fixed; the
+% most useful commands are |\GEdqtext| for enclosing some text within German double
+% quotes, |\GEqtext| for enclosing some text within German single quotes, and
+% |\ENdqtext| for enclosing some text in English double quotes. Apparently
+% while setting Greek poetry in stacked, possibly enumerated, verses, German double
+% or single quotes are often used, since they cannot be misunderstood with Greek
+% diacritical marks. Modern Greek double quotes apparently are not appreciated by
+% philologists, at least outside Greece.
+% \begin{macrocode}
+\newcommand\GEodq{\bgroup\futurelet\@tempA\GE@dq}
+\def\GE@dq{{\metricsfont\char18}\ifx\@tempA m\posthinspace\fi\egroup}
+\newcommand\GEcdq{{\metricsfont\char16}}
+\newcommand\GEdqtext[1]{\GEodq\posthinspace#1\/\posthinspace\GEcdq}
+\newcommand\GEoq{\bgroup\futurelet\@tempA\GE@q}
+\def\GE@q{{\metricsfont\char13}\ifx\@tempA m\posthinspace\fi\egroup}
+\newcommand\GEcq{{\metricsfont\char19}}
+\newcommand\GEqtext[1]{\GEoq\posthinspace#1\/\posthinspace\GEcq}
+\newcommand\ENodq{{\metricsfont\char16}}
+\newcommand\ENcdq{{\metricsfont\char17}}
+\newcommand\ENdqtext[1]{\ENodq\negthinspace#1\/\posthinspace\ENcdq}
+
+% \end{macrocode}
+%\end{macro}
+%\end{macro}
+%\end{macro}
+%\end{macro}
+%\end{macro}
+%\end{macro}
+%\end{macro}
+%\end{macro}
+%\end{macro}
+%
+% \subsection{Other philological symbols and macros}
+% \begin{macro}{\LitNil}
+% \begin{macro}{\litnil}
+% The next synonymous macros indicate the \emph{littera nihil}.
+% \begin{macrocode}
+\DeclareRobustCommand\LitNil{\textbullet}
+\let\litnil\LitNil
+% \end{macrocode}
+%\end{macro}
+%\end{macro}
+%
+%\begin{macro}{\sva}
+%\begin{macro}{\shva}
+%\begin{macro}{\shwa}
+% The CB fonts include also the letter ``shwa'', the glyph that
+% appears as a roman ``e'' rotated 180$^\circ$ around its center. Philologists
+% need it even when writing Greek. In order to make it available also when the
+% Latin encodings are in force, suitable definitions have been given so that the
+% suitable CB font was changed behind the scenes without any intervention by the
+% typesetter. With this version of |teubner.sty| a new definition is made up that
+% uses the |\rotatebox| facility of the |graphicx| package; In a future revision of
+% the CB fonts the |\schwa| slot shall be freed so that Greek glyphs only populate
+% it, without extraneous presences. The |\schwa| glyph is made available also with
+% the Latin encodings.
+% \begin{macrocode}
+%\DeclareTextSymbol{\sva}{\GRencoding@name}{26}
+\DeclareTextCommand{\sva}{\GRencoding@name}{%
+\rotatebox[origin=c]{180}{\def\@tempA{li}%
+\fontencoding{OT1}\ifx\f@shape\@tempA\fontshape{it}\fi\selectfont e}}
+\DeclareTextCommand\sva{OT1}{{\expandafter\fontencoding
+ \expandafter{\GRencoding@name}\selectfont\sva}}
+\DeclareTextCommand\sva{T1}{{\expandafter\fontencoding
+ \expandafter{\GRencoding@name}\selectfont\sva}}
+\let\shva\sva\let\shwa\sva
+
+% \end{macrocode}
+%\end{macro}
+%\end{macro}
+%\end{macro}
+%
+%\begin{macro}{\skewstack}
+% The |\skewstack| command stacks two arguments not one on top of the other, but the
+% second argument is placed to the right and upwards relative to the first argument.
+% The second argument is set in script font size. Although there are similarities
+% with the |\textsuperscript| command, the exact placement of the second argument
+% depends on the shape (height and depth) of both arguments. This command will be
+% used for creating some philologist's symbols, but is readily available to the
+% typesetter both for direct use and for writing macros defining new symbols.
+% \begin{macrocode}
+\DeclareRobustCommand\skewstack[2]{{%
+\edef\slant@{\strip@pt\fontdimen1\font}%
+\setbox\z@\hbox{#1}\dimen@\ht\z@\box\z@
+\kern-.045em\setbox\@ne\hbox{\scriptsize#2}%
+\ifdim\dimen@>1.2ex\advance\dimen@-\ht\@ne\else
+ \dimen@1ex\advance\dimen@-.5\ht\@ne\fi
+\kern\slant@\dimen@\raise\dimen@\hbox{\box\@ne}}}
+
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\hv}
+%\begin{macro}{\qw}
+%\begin{macro}{\gw}
+%\begin{macro}{\gusv}
+%\begin{macro}{\qusv}
+%\begin{macro}{\qu}
+% Matter of fact some common Latin stacked symbols are defined here in terms of
+% |\skewstack|. As it may bee seen, the second argument (the first as well, but here
+% there are no examples) may in turn contain other macros for composite symbols.
+% \begin{macrocode}
+\DeclareRobustCommand\hv{{\fontencoding{OT1}\selectfont
+ \skewstack{h}{v}}}
+\DeclareRobustCommand\qw{{\fontencoding{OT1}\selectfont
+ \skewstack{q}{w}}}
+\DeclareRobustCommand\gw{{\fontencoding{OT1}\selectfont
+ \skewstack{g}{w}}}
+\DeclareRobustCommand\gusv{{\fontencoding{OT1}\selectfont
+ \skewstack{g}{\semiv{u}}}}
+\DeclareRobustCommand\qusv{{\fontencoding{OT1}\selectfont
+ \skewstack{q}{\semiv{u}}}}
+\DeclareRobustCommand\qu{{\fontencoding{OT1}\selectfont
+ \skewstack{q}{u}}}
+
+% \end{macrocode}
+%\end{macro}
+%\end{macro}
+%\end{macro}
+%\end{macro}
+%\end{macro}
+%\end{macro}
+%
+%\begin{macro}{\dz}
+% Without using |\skewstack| other symbols may be defined; here |\dz| is just an
+% example, where the kerning between `d' and `z' has been found by cut and try. With
+% other glyphs may be different kerning is necessary.
+% \begin{macrocode}
+\DeclareRobustCommand\dz{{\fontencoding{OT1}\selectfont d\kern-.33ex z}}
+
+% \end{macrocode}
+%\end{macro}
+%
+% Now we come to another set of commands like the ones needed to mark the syneresis
+% or the zeugma and other similar marks.
+%\begin{macro}{\Utie}
+% This first macro sets a ``smile'' symbol under a couple of letters. The glyph is
+% fine but is good only for two adjacent letters, therefore
+% it is necessary to have a stretchable symbol.
+% \begin{macrocode}
+\DeclareRobustCommand\Utie[1]{%
+\mbox{\vtop{\ialign{##\crcr
+ \hfil#1\hfil\crcr
+ \noalign{\kern.3ex\nointerlineskip}%
+ \hfil$\smile$\hfil\crcr}}}}
+
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\siner}
+%\begin{macro}{\siniz}
+% This is why the |\siner| and |\siniz| synonymous commands have been defined; in
+% place of or in addition to the ``smile'' symbol; they contain a stretchable
+% filler |\upfill| that behaves almost as the stretchable horizontal brace that is
+% used in the definition of the \LaTeX\ commands |\underbrace| or |\overbrace|.
+% \begin{macrocode}
+\DeclareRobustCommand{\siner}[1]{%
+\mbox{\vtop{\ialign{##\crcr
+ \hfil#1\hfil\crcr
+ \noalign{\kern.6ex\nointerlineskip}%
+ \upfill\crcr}}}}
+\let\siniz\siner
+
+% \end{macrocode}
+%\end{macro}
+%\end{macro}
+%
+%\begin{macro}{\upfill}
+% The |\upfill| is defined as a leader, the same way as the corresponding \LaTeX\
+% stretchable horizontal brace.
+% \begin{macrocode}
+\def\upfill{$\m@th \scriptstyle\setbox\z@\hbox{$\scriptstyle\bracelu$}%
+ \kern.16ex\bracelu\ifPDF\kern-.15ex\fi
+ \leaders\vrule \@height\ht\z@ \@depth\z@\hfill
+ \braceru\kern.16ex$}
+
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\downfill}
+% The |\downfill| arc is totally similar to the |\upfill| one, except for its
+% terminating elements that change the shape of the arc from ``up'' to ``down''.
+% \begin{macrocode}
+\def\downfill{$\m@th\scriptstyle\setbox\z@\hbox{$\scriptstyle\braceld$}%
+ \kern.16ex\braceld\ifPDF\kern-.15ex\fi
+ \leaders\vrule \@height\ht\z@ \@depth\z@\hfill
+ \bracerd\kern.16ex$}
+
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\zeugma}
+% Similarly |\zeugma| puts a stretchable arc over its argument; it must take into
+% account the slant of the argument font so as to skew the placement of the arc.
+% \begin{macrocode}
+\newcommand*\zeugma[1]{{\vbox{\setbox\z@\hbox{#1}\dimen@=\ht\z@
+ \edef\@slant{\strip@pt\fontdimen1\font}%
+ \dimen\tw@=\wd\z@
+ \dimen@=\@slant\dimen@\ifmetricsfont\dimen@=\z@
+ \advance\dimen\tw@-.5ex\fi
+ \kern-.2ex\ialign{##\crcr
+ \hbox to\z@{\ifmetricsfont\kern.25ex\fi\kern\dimen@
+ \hbox to\dimen\tw@{\hss\downfill\kern.2\dimen@\hss}\hss}\crcr
+ \noalign{\ifmetricsfont\kern.6ex
+ \else\kern.4ex\fi\nointerlineskip}%
+ \hfil{#1}\hfil\crcr}}}%
+}
+
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\slzeugma}
+%\begin{macro}{\rszeugma}
+% Although the shape of oblique zeugma arcs cannot be changed depending on the width
+% and height of the zeugma argument, in certain circumstances the philologists want
+% to use oblique zeugma marks. This is why we defined a ``sloping zeugma arc''
+% |\slzeugma|, and a ``rising zeugma arc'' |\rszeugma| that can be used with poor
+% results, if such arcs are superimposed over the ``wrong'' letters. There is
+% nothing automatic in the choice of the oblique arc and is totally on the
+% typesetter responsibility to use the correct command. These slanted zeugma signs
+% are possibly useful only for two letters since they are not stretchable.
+% \begin{macrocode}
+\newcommand*\slzeugma[1]{{\leavevmode
+ \setbox\tw@\hbox{\metricsfont\char120}%
+ \setbox\z@\hbox{#1}\dimen@.5\wd\z@\advance\dimen@-.5\wd\tw@
+ \edef\@slant{\strip@pt\fontdimen1\font}%
+ \advance\dimen@\@slant\ht\z@
+ \hbox to\z@{\kern\dimen@\box\tw@\hss}\box\z@
+ }%
+}
+
+\newcommand*\rszeugma[1]{{\leavevmode
+ \setbox\tw@\hbox{\metricsfont\char122}%
+ \setbox\z@\hbox{#1}\dimen@.5\wd\z@\advance\dimen@-.5\wd\tw@
+ \edef\@slant{\strip@pt\fontdimen1\font}%
+ \advance\dimen@\@slant\ht\z@
+ \hbox to\z@{\kern\dimen@\box\tw@\hss}\box\z@
+ }%
+}
+
+% \end{macrocode}
+%\end{macro}
+%\end{macro}
+%
+%\begin{macro}{\nexus}
+%\begin{macro}{\nesso}
+% Originally I had two different macros for marking a \emph{nexus}; one made use of a ``up stretchable turtle bracket'', and the user used a leader of Latin circumflex signs. Both were unsatisfactory; the latter was really ugly, but I kept the macro name as a synonym for compatibility with the past. The good looking marker is obtained from a mathematical |\widehat| sign by stretching it to the width of the string the marcher should mark; the new macro |\nexus| (that replaces the stretchable turtle bracket) relies on the facilities offered by the |\resizebox| of the package |graphicx|.
+% \begin{macrocode}
+\newcommand*{\nexus}[1]{{\setbox\tw@\hbox{#1\/}%
+ \edef\slant@{\strip@pt\fontdimen1\font}%
+ \@tempdima=\slant@\ht\tw@\advance\@tempdima.45ex
+ \setbox4\hbox{\resizebox{\wd\tw@}{\height}{$\widehat{\phantom{aaa}}$}}%
+ \setbox4\hbox{\smash{\lower1.35ex\hbox{\box4}}}%
+ \vbox{\ialign{##\crcr%
+ \kern\@tempdima\box4%
+ \crcr
+ \noalign{\kern.15ex\nointerlineskip}%
+ \hfil{#1}\hfil\crcr}}}}
+\let\nesso\nexus
+
+% \end{macrocode}
+%\end{macro}
+%\end{macro}
+%
+%
+%\begin{macro}{\coronis}
+%\begin {macro}{\Coronis}
+%\begin {macro}{\paragr}
+% \begin {macro}{\dpar}
+% While setting poetry it is necessary to mark the end of paragraphs, which do not
+% necessarily coincide with the ends of stanzas. After the verse that concludes a
+% logical paragraph philologists insert a mark called ``coronis'' (synonymous of
+% paragraph, therefore the command |\paragr|) or a ``stronger'' mark called
+% ``Coronis'', which differs from the common ``coronis'' because it bears an
+% inverted semilunar sign on its left. Both marks are input by means of their
+% respective commands |\paragr| (preferred to |\coronis|) or |\Coronis| inserted
+% \emph{at the beginning of the paragraph terminating verse}.
+% The command |\dparagr| inserts a double coronis mark, which is sometimes required
+% in place of the ordinary single mark.
+% \begin{macrocode}
+\def\C@rule{\vrule\@height.45ex\@depth-.35ex\@width1.5em}
+\def\coronis@rule{\hbox to\z@{\hss\C@rule\hss}}
+\def\Coronis@rule{\hbox to\z@
+ {\hss\hbox to\z@{\hss$\scriptstyle)$\kern-1.5\p@}\C@rule\hss}}
+\DeclareRobustCommand\paragr{\raisebox{-1ex}[\z@][\z@]{\coronis@rule}}
+\let\coronis\paragr
+\DeclareRobustCommand\Coronis{\raisebox{-1ex}[\z@][\z@]{\Coronis@rule}}
+\DeclareRobustCommand{\dparagr}%
+ {\raisebox{-1.3ex}[\z@][\z@]{\coronis@rule}%
+ \raisebox{-1.6ex}[\z@][\z@]{\coronis@rule}}
+
+% \end{macrocode}
+%\end{macro}
+%\end{macro}
+%\end{macro}
+%\end{macro}
+%
+%\begin {macro}{\sinafia}
+%\begin {macro}{\crux}
+%\begin {macro}{\FinisCarmen}
+%\begin {macro}{\apici}
+%\begin {macro}{\positio}
+%\begin {macro}{\Int}
+%\begin {macro}{\star}
+%\begin {macro}{\dstar}
+%\begin {macro}{\tstar}
+%\begin {macro}{\responsio}
+% The next group of commands are intended to insert special symbols in the
+% philological text; just the command |\apici| requires an argument, a block of text
+% that shall be enclosed within straight vertical apices, irrespective of the font
+% slant. The command |\FinisCarmen| although very descriptive, is long to type,
+% therefore a shorter alias |\FinCar| has been defined. |\apex| was the initial name
+% given to the command, but on a second time it was changed to |\positio|, and the
+% latter should always be used in place of the former. For what concerns |\star|
+% which is a standard \LaTeX\ math command, the original definition is saved in the
+% service macro |\m@thst@r| and the command is redefined so as to perform as it
+% should both in text and in math mode. The symbol $\int$, on the contrary, was
+% redefined so as not to mix math with text, even if its rendering resorts to
+% mathematics.
+% \begin{macrocode}
+\DeclareRobustCommand*\sinafia{{\metricsfont s}}
+\DeclareRobustCommand*{\crux}{{\metricsfont\char'171}}
+\DeclareRobustCommand*{\FinisCarmen}{\ensuremath{\otimes}}
+\let\FinCar\FinisCarmen
+\DeclareRobustCommand*{\apici}[1]%
+ {\posthinspace{\metricsfont\char96}\negthinspace#1%
+ \posthinspace{\metricsfont\char39}\negthinspace}
+\DeclareRobustCommand*{\apex}%
+ {\/\hskip.5ex\vrule\@height1.7ex\@depth-1ex\hskip.2ex}
+\let\positio\apex
+\DeclareRobustCommand*{\Int}{\ensuremath{\int}}
+\let\m@thst@r\star
+\DeclareRobustCommand*{\star}{\textormath{{{\upshape *}}}{\m@thst@r}}
+\DeclareRobustCommand*{\dstar}{{\upshape **}}
+\DeclareRobustCommand*{\tstar}{{\upshape ***}}
+\DeclareRobustCommand*{\responsio}{{\boldmath\ensuremath{\sim}}}
+
+% \end{macrocode}
+%\end{macro}
+%\end{macro}
+%\end{macro}
+%\end{macro}
+%\end{macro}
+%\end{macro}
+%\end{macro}
+%\end{macro}
+%\end{macro}
+%\end{macro}
+%
+%\begin{macro}{\thorn}
+%\begin{macro}{\Thorn} |\thorn| and |\Thorn| are the exact equivalents of |\th|
+% and |\Th| that are defined only for the T1 encoding. Therefore such encoding is
+% selected in an implicit way.
+% \begin{macrocode}
+\DeclareRobustCommand{\thorn}{{\fontencoding{T1}\selectfont\th}}
+\DeclareRobustCommand{\Thorn}{{\fontencoding{T1}\selectfont\TH}}
+
+% \end{macrocode}
+%\end{macro}
+%\end{macro}
+%
+% \subsection{Ancient Greek monetary unit symbols}
+%\begin{macro}{\dracma}
+%\begin {macro}{\hemiobelion}
+%\begin {macro}{\tetartemorion}
+%\begin {macro}{\stater}
+%\begin {macro}{\denarius}
+%\begin {macro}{\etos}
+% This set of symbols, taken from the metrics symbol font (which by this time is
+% evident does not contain only metrics symbols) represents the unit symbols of some
+% coins of ancient Greece, as they were found on many ``ostraka'' in several
+% archeological sites.
+% \begin{macrocode}
+\DeclareRobustCommand{\dracma}{{\metricsfont D}}
+\DeclareRobustCommand{\hemiobelion}{{\metricsfont A}}
+\DeclareRobustCommand{\tetartemorion}{{\metricsfont B}}
+\DeclareRobustCommand{\stater}{{\metricsfont C}}
+\DeclareRobustCommand{\denarius}{{\metricsfont E}}
+\DeclareRobustCommand{\etos}{{\metricsfont G}}
+
+% \end{macrocode}
+%\end{macro}
+%\end{macro}
+%\end{macro}
+%\end{macro}
+%\end{macro}
+%\end{macro}
+%
+% \subsection{Another set of philological symbols and macros}
+%\begin{macro}{\cut}
+%\begin{macro}{\dcutbar}
+%\begin{macro}{\bcutbar}
+%\begin{macro}{\gcutbar}
+% The following set of macros are all connected with the principal macro |\cut|,
+% which should position a horizontal tie or bar across a certain number of latin
+% letters, specifically `d', `b', and `g'; due to their different shapes, such bars
+% are of different length and located at different heights; if they are in italics
+% the bar position must change again. Therefore even if the user command |\cut| is
+% the same for all these letters, its action must change depending on different
+% circumstances.
+% It merely checks its argument (it must be \emph{one} letter and unpredictable
+% results are obtained if more that one token is passed as an argument to |\cut|)
+% and selects the proper bar. The specific bar commands |\dcutbar|, |\bcutbar|, and
+% |\gcutbar|, are defined in such a way as to cope only with the their initial
+% letter.
+% \begin{macrocode}
+\DeclareRobustCommand{\cut}[1]{%
+ \ifx#1d\dcutbar\else
+ \ifx#1b\bcutbar\else
+ \ifx#1g\gcutbar
+ \fi
+ \fi
+ \fi}
+%
+\def\dcutbar{{\edef\slant@{\strip@pt\fontdimen1\font}%
+ d\dimen@1.2ex\kern\slant@\dimen@
+ \llap{\vrule\@height1.3ex\@depth-\dimen@
+ \ifdim\slant@\p@>\z@\@width.35em\else\@width.4em\fi\kern.03em}}}
+\def\bcutbar{{\edef\slant@{\strip@pt\fontdimen1\font}%
+ \rlap{\dimen@1.2ex\kern\slant@\dimen@
+ \ifdim\slant@\p@=\z@\kern.03em\fi
+ \vrule\@height1.3ex\@depth-\dimen@
+ \ifdim\slant@\p@>\z@\@width.3em\else\@width.4em\fi}b}}
+\def\gcutbar{{\edef\slant@{\strip@pt\fontdimen1\font}%
+ \ifdim\slant@\p@>\z@
+ g\kern-.55ex\dimen@.2ex\kern-\slant@\dimen@
+ \vrule\@height-.1ex\@depth\dimen@\@width.6ex
+ \else
+ \dimen@.2ex\kern\slant@\dimen@\vrule\@height.3ex\@depth-\dimen@
+ \@width.6ex\kern-.55ex\relax g
+ \fi}}
+
+% \end{macrocode}
+%\end{macro}
+%\end{macro}
+%\end{macro}
+%\end{macro}
+%
+%\begin{macro}{\OSN}
+% The next macro is just a shortcut instead of using |\oldstylenums|.
+% \begin{macrocode}
+\let\OSN\oldstylenums
+
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\splus}
+%\begin{macro}{\stimes}
+%\begin{macro}{\kclick}
+% The next three macros are used in glottology; the first two ones are used to
+% mark special pronunciations of the sibilant, while the last one is used to mark
+% a special pronunciation of the guttural that produces a ``click''.
+%\begin{macrocode}
+\newcommand\splus{\leavevmode{%
+ \edef\slant@{\strip@pt\fontdimen1\font}%
+ \setbox\z@\hbox{s}%
+ \dimen@=\wd\z@
+ \setbox\tw@\hbox{$\scriptscriptstyle+$}%
+ \advance\dimen@.35\ht\tw@
+ \raisebox{\dimen@}[\z@][\z@]{%
+ \makebox[\z@][l]{\kern.5\wd\z@
+ \kern\slant@\dimen@\kern-.5\wd\tw@\box\tw@}}%
+ \box\z@}}%
+\newcommand\stimes{\leavevmode{%
+ \edef\slant@{\strip@pt\fontdimen1\font}%
+ \setbox\z@\hbox{s}%
+ \dimen@=\wd\z@
+ \setbox\tw@\hbox{$\scriptscriptstyle\times$}%
+ \advance\dimen@.2\ht\tw@
+ \raisebox{\dimen@}[\z@][\z@]{%
+ \makebox[\z@][l]{\kern.5\wd\z@
+ \kern\slant@\dimen@\kern-.5\wd\tw@\box\tw@}}%
+ \box\z@}}%
+\newcommand\kclick{\leavevmode{%
+ \edef\slant@{\strip@pt\fontdimen1\font}%
+ \setbox\z@\hbox{k}%
+ \setbox\tw@\hbox{\fontencoding\GRencoding@name\selectfont\s{v}}%
+ \dimen@\wd\z@
+ \ifdim\slant@\p@=\z@
+ \advance\dimen@-.1\wd\z@\else\advance\dimen@\wd\tw@
+ \fi
+ k\makebox[\z@][r]{\unhcopy\tw@\kern.5\dimen@}%
+ }}%
+
+% \end{macrocode}
+%\end{macro}
+%\end{macro}
+%\end{macro}
+%
+% \subsection{Poetry environments and macros}
+%\begin {macro}{\verso}
+%\begin{environment}{versi}
+% Here we start with verse environments; we already explained that we defined three
+% new verse environments that typeset poetry in ``in-line'' verses,
+% ``numbered by five'' verses, and ``numbered by five and subnumbered'' verses.
+% For the environment |versi| we first need a counter and a little macro for
+% generating the short bar that has to receive the verse number as a ``limits''
+% superscript.
+% \begin{macrocode}
+\newcounter{verso}\setcounter{verso}{0}
+\newcommand{\smallvert}{\vrule\@height.6ex\@depth.4ex}
+
+% \end{macrocode}
+% Next we define the macro |\verso| that sets the small bar with the verse number on
+% top. Since the initial numbering might be different from~1, |\verso| accepts an
+% optional argument, which is intended to be the initial counter value. Since
+% |\verso| steps up the counter a different action must be taken if the optional
+% argument is present; in order to be able to reference such verse by means of the
+% |\label|--|\ref| cross reference mechanism, this stepping up must be done by means
+% of |\refstepcounter|; therefore we have to leave |\refstepcounter| outside the
+% conditional code, and step down the counter by one unit only in case the initial
+% value is specified.
+% \begin{macrocode}
+\DeclareRobustCommand\verso[1][]{%
+ \def\@tempA{#1}\ifx\@tempA\empty
+ \else
+ \setcounter{verso}{#1}\addtocounter{verso}{\m@ne}%
+ \fi
+ \refstepcounter{verso}%
+ \@killglue\space
+ \ensuremath{\mathop{\smallvert}\limits^{\scriptscriptstyle\theverso}}%
+ \space\ignorespaces}
+
+% \end{macrocode}
+% Now that the verse separation macro is ready we can define the environment; the
+% required opening statement argument represents a short text whose width is taken
+% as a measure for indentation, so that verses are typeset with a left margin that
+% leaves out this short text. Substantially this environment is a \texttt{list} one,
+% and the left margin variable width is totally similar to the one used in
+% |thebibiography| environment. Also the |\makelabel| command has been modified
+% accordingly.
+% \begin{macrocode}
+\newenvironment{versi}[1]{%
+\def\makelabel##1{##1}
+\setbox\z@\hbox{#1}%
+\list{}{\labelwidth\wd\z@\leftmargin\labelwidth
+ \advance\leftmargin\labelsep}%
+ \item[\box\z@]
+}{%
+\endlist
+}
+\let\versus\versi \let\endversus\endversi
+% \end{macrocode}
+%\end{environment}
+%\end{macro}
+%
+%\begin{environment}{Versi}
+% The second environment |Versi| accepts an optional starting number in the opening,
+% statement, whose default value is~1: verses are composed as in the standard
+% \LaTeX\ |verse| environment (with one minor difference) except they are numbered
+% in the left margin with a progression of five; only verse numbers that are integer
+% multiples of five are displayed. The minor difference is that stanzas cannot be
+% marked with a blank line in the input |.tex| file, as it is customary with
+% the standard environment, but if a visual mark is desired, such as extra vertical
+% space, it is necessary to resort to the optional spacing parameter that can be
+% specified to the |\\| command. This environment uses the same verse counting
+% counter, defined for use with the |versi| environment.
+%
+%\begin{macro}{\BreakVersotrue}
+%\begin{macro}{\BreakVersofalse}
+% For specific purposes it is necessary to have a boolean variable for allowing or
+% prohibiting verses to split up at the end of line; the default is not
+% to split.
+% \begin{macrocode}
+\newif\ifBreakVersi
+\BreakVersifalse
+\newenvironment{Versi}[1][1]{%
+ \setcounter{verso}{#1}%
+% \end{macrocode}
+%\end{macro}
+%\end{macro}
+% An internal macro |\writ@verso| does not actually write out the complete, possibly
+% numbered verse, but provides for checking that the verse counter contains a
+% multiple of~5, and to write it out using old stile numbers; in case the number is
+% not an integer multiple of~5 the number is written out as the |\empty| macro.
+% \begin{macrocode}
+ \def\writ@verso{%
+ \count255=\value{verso}\divide\count255by5\relax
+ \multiply\count255by5\relax
+ \advance\count255-\value{verso}%
+ \ifnum\count255=\z@
+ {\fontseries{m}\small\expandafter\oldstylenums\expandafter{\the\c@verso}}%
+ \else
+ \empty
+ \fi}%
+% \end{macrocode}
+% Since the |\\| command should provide the same functionality as the regular
+% \LaTeX\ command, while in this environment it should provide other
+% functionalities, such as triggering the display of the verse number. It is
+% necessary to define an intermediate command |\v@rscr|, that examines the possible
+% optional arguments, such as the optional star or the brackets enclosing vertical
+% spacing
+% \begin{macrocode}
+ \def\acapo{\@ifstar{\v@rscr{\@M}}{\v@rscr{\z@}}}%
+ \let\\\acapo
+ \def\v@rscr##1{\@ifnextchar[{\wr@teverse{##1}}%
+ {\wr@teverse{##1}[\z@]}}%
+% \end{macrocode}
+% Finally the |\wr@teverse| macro does the actual typesetting of the verse. Notice
+% that the environment opening statement and every succeeding previous verse starts
+% an horizontal box where the contents of the current verse is stored. Therefore the
+% first thing to do is to close the box with the |\egroup| command, then a line of
+% text is output that contains a possibly empty box or the verse number and the
+% command for stepping up the verse counter, followed by the verse box number~0 and
+% an end of paragraph; in this way the |\\| operates always in vertical mode,
+% contrary to what happens in the |verse| standard \LaTeX\ environment. Even in this
+% environment the actual typesetting is done within a |list| environment, whose
+% parameters are set differently from what they are in the |verse| environment.
+% Notice in any case that the command |\wr@teverse| reopens the~0 box, so on the
+% last verse, upon closing the environment, it is necessary to remember to close
+% such box, whose contents is irrelevant and can be thrown away.
+%
+% I have experienced some problems in typesetting verses in two-column format; the
+% column width might be too short for setting up verses even if verses are not that
+% long, because in the left margin there must be room for the verse numbering; for
+% homogeneity the spacing must conform also with the following environment
+% \texttt{VERSI} that has a secondary verse numbering, therefore it can't be too
+% small. The result is that there might be a test for controlling the two-column
+% format, but I think that it is more useful for the typesetter to be able to switch
+% on and off the possibility of breaking long verses on more lines.
+% On two-column format in any case it is better to leave the right margin to
+% coincide with the column right margin.
+% \begin{macrocode}
+ \def\wr@teverse##1[##2]{\egroup
+ \makebox[3em][r]{%
+ \writ@verso\refstepcounter{verso}\kern1.5em}
+ \ifBreakVersi
+ \begingroup\raggedright
+ \hyphenpenalty \@M
+ \unhbox\z@\par
+ \endgroup
+ \else
+ \rlap{\box\z@}\par
+ \fi
+ \penalty##1\vskip##2\relax
+ \setbox\z@\hbox\bgroup\ignorespaces}%
+ \list{}{\itemsep\z@\parsep\z@
+ \if@twocolumn
+ \itemindent -5.3em%
+ \listparindent\itemindent
+ \rightmargin\z@
+ \advance\leftmargin 3.3em
+ \else
+ \itemindent -1.5em%
+ \listparindent\itemindent
+ \rightmargin \leftmargin
+ \advance\leftmargin 1.5em
+ \fi
+ }%
+ \item\leavevmode\setbox\z@\hbox\bgroup\ignorespaces
+}{%
+% \end{macrocode}
+% Upon closing it is necessary to activate the writing out of the last verse that is
+% still in the~0 box, but since this box is immediately reopened, it is necessary to
+% close it again before exiting the environment.
+% \begin{macrocode}
+ \\%
+ \egroup
+ \endlist
+}
+\let\Versus\Versi \let\endVersus\endVersi
+
+% \end{macrocode}
+%\end{environment}
+%
+%\begin{environment}{VERSI} The third environment |VERSI| set verses in the
+% traditional way, but numbers them with two different enumerations; the principal
+% one is by multiples of five, while the secondary one counts by units, and may be
+% turned on and off, or reset at will. We therefore need another counter for the
+% secondary enumeration and commands for turning it on and off and for resetting the
+% counter. We need also a new length and a new boolean variable in order to manage
+% the secondary enumeration.
+% The new length represents an indentation of those verses that do no have the
+% secondary enumeration, while secondary enumerated verses are not indented. For
+% \texttt{VERSI} there is the same possibility of turning on and off the possibility
+% of breaking verses at the end of line as it happens for the environment
+% \texttt{Versi}.
+% \begin {macro}{\SubVerso}
+% \begin {macro}{\NoSubVerso}
+% Macro |\NoSubVerso| turns off the secondary enumeration; macro |\SubVerso| turns
+% on the secondary enumeration, but it accepts an optional argument for resetting
+% the secondary counter; the default value is~0; if no optional argument is
+% specified, and therefore if the optional argument has its default value~0, no
+% resetting is performed and the enumeration keeps going from the last contents of
+% the secondary counter; if the first use of |\SubVerso| does not contain the
+% optional argument, the secondary enumeration keeps going from the old contents of
+% the secondary counter which is unpredictable, depending upon the previous
+% occurrences of the environment |VERSI|. The typesetter, therefore, must remember
+% to specify the optional argument to |\SubVerso| the first time he uses it in this
+% environment.
+% \begin{macrocode}
+\newcounter{subverso} \setcounter{subverso}{0}
+\newif\ifSubVerso
+\newlength{\versoskip}
+\newcommand*\NoSubVerso{\global\SubVersofalse
+ \global\versoskip1.3em\ignorespaces}
+\newcommand*\SubVerso[1][0]{\global\SubVersotrue
+ \ifnum#1=0\else
+ \setcounter{subverso}{#1}%
+ \global\protected@edef\@currentlabel{\the\c@subverso}%
+ \fi
+ \global\versoskip.3em\ignorespaces}
+
+% \end{macrocode}
+%\end{macro}
+%\end{macro}
+% The opening environment statement accepts an optional argument (default equals~1)
+% which represents the primary enumeration starting number:
+% \begin{macrocode}
+\newenvironment{VERSI}[1][1]{%
+ \setcounter{verso}{#1}%
+% \end{macrocode}
+% We need two macros |\writ@verso| and |\writ@subverso|, that typeset the primary
+% and secondary enumeration; the first one is similar to the one used in the |Versi|
+% environment, while the second one has no special features except the conditional
+% construct needed to check if the secondary enumeration has to be printed out.
+% \begin{macrocode}
+ \def\writ@verso{%
+ \count255=\value{verso}\divide\count255by5\relax
+ \multiply\count255by5\relax
+ \advance\count255-\value{verso}%
+ \ifnum\count255=0\relax
+ {\fontseries{m}\small\expandafter\oldstylenums\expandafter{\the\c@verso}}%
+ \else
+ \empty
+ \fi}%
+ \NoSubVerso
+ \def\writ@subverso{%
+ \ifSubVerso
+ {\fontseries{m}\scriptsize\expandafter\oldstylenums
+ \expandafter{\the\c@subverso}}%
+ \fi}%
+% \end{macrocode}
+% Similarly to the previous environment, the |\\| command must be redefined
+% so as to perform more or less as the standard one, while doing all the necessary
+% actions needed in this environment. It must check the presence of the optional
+% star and of the optional vertical skip and it has to pass control to a service
+% macro |\v@rscr| that does the actual job; actually it passes control to a third
+% macro |\writ@verse| that effectively outputs the current verse.
+% \begin{macrocode}
+ \def\\%
+ {\@ifstar{\v@rscr{\@M}}{\v@rscr{\z@}}}%
+ \def\v@rscr##1{\@ifnextchar[{\writ@verse{##1}}%
+ {\writ@verse{##1}[\z@]}}%
+ \def\writ@verse##1[##2]{\egroup
+ \makebox[1.5em][r]{\writ@verso\refstepcounter{verso}}%
+ \makebox[1.5em][r]{\writ@subverso\refstepcounter{subverso}}%
+ \kern1.5ex\hskip\versoskip
+ \ifBreakVersi
+ \begingroup
+ \hyphenpenalty \@M
+ \unhbox\z@\par
+ \endgroup
+ \else
+ \rlap{\box\z@}\par
+ \fi
+ \penalty##1\vskip##2\relax
+ \setbox\z@\hbox\bgroup\ignorespaces}%
+% \end{macrocode}
+% For the remaining part, the environment is a normal |list| environment with
+% specific initial parameters.
+% \begin{macrocode}
+ \list{}{\parsep\z@\itemsep\z@
+ \if@twocolumn
+ \itemindent -5.3em%
+ \listparindent\itemindent
+ \rightmargin\z@
+ \advance\leftmargin 3.3em
+ \else
+ \itemindent -1.5em%
+ \listparindent\itemindent
+ \rightmargin \leftmargin
+ \advance\leftmargin 1.5em
+ \fi
+ }%
+ \item\leavevmode\setbox\z@\hbox\bgroup\ignorespaces
+}{%
+% \end{macrocode}
+% The closing statement must output the last verse, which is still contained in
+% box~0; since box~0 is automatically reopened, it must be closed again and its
+% contents, of no significance now, can be lost upon closing the environment group.
+% \begin{macrocode}
+ \\%
+ \egroup\endlist}
+\let\VERSUS\VERSI \let\endVERSUS\endVERSUS
+
+% \end{macrocode}
+%\end{environment}
+%
+% \subsection{Metrics symbols, macros and environmnets}
+% Now we start defining many macros concerned with metrics; the metric symbol font
+% has been developed mainly for this purpose. We start defining some macros for
+% inputting specific symbols; many such macros have their own aliases in Latin.
+%
+%\begin{macro}{\lunga}
+%\begin{macro}{\longa}
+%\begin{macro}{\breve}
+%\begin{macro}{\brevis}
+%\begin{macro}{\bbreve}
+%\begin{macro}{\bbrevis}
+%\begin{macro}{\barbreve}
+%\begin{macro}{\barbrevis}
+%\begin{macro}{\barbbrev}
+%\begin{macro}{\barbbrevis}
+%\begin{macro}{\ubarbreve}
+%\begin{macro}{\ubarbrevis}
+%\begin{macro}{\ubarbbreve}
+%\begin{macro}{\ubarbbrevis}
+%\begin{macro}{\ubarsbreve}
+%\begin{macro}{\ubarsbrevis}
+%\begin{macro}{\ubrevelunga}
+%\begin{macro}{\ubrevislonga}
+% The following definitions are straightforward; a small comment on |\breve|: since
+% it is also a math command in standard \LaTeX, its meaning is saved in a service
+% macro |\br@ve| and the |\breve| macro is redefined taking into account whether the
+% typesetting is being done in text or in math mode. The unusual letters that appear
+% in the definitions of the various metric symbols have no mysterious meaning; they
+% might have been specified by |\char|\meta{number}, but it seemed shorter to
+% specify the corresponding letters that would occupy the same slots in literal
+% fonts.
+% \begin{macrocode}
+\DeclareRobustCommand\lunga{{\metricsfont l}}
+\let\longa\lunga
+\let\br@ve\breve
+\DeclareRobustCommand\breve{\textormath{{{\metricsfont b}}}{\br@ve}}
+\let\brevis\breve
+\DeclareRobustCommand\bbreve{{\metricsfont c}}
+\let\bbrevis\bbreve
+\DeclareRobustCommand\barbreve{{\metricsfont i}}
+\let\barbrevis\barbreve
+\DeclareRobustCommand\barbbreve{{\metricsfont j}}
+\let\barbbrevis\barbbreve
+\DeclareRobustCommand\ubarbreve{{\metricsfont d}}
+\let\ubarbrevis\ubarbreve
+\DeclareRobustCommand\ubarbbreve{{\metricsfont e}}
+\let\ubarbbrevis\ubarbbreve
+\DeclareRobustCommand\ubarsbreve{{\metricsfont f}}
+\let\ubarsbrevis\ubarsbreve
+\DeclareRobustCommand{\ubrevelunga}{{\metricsfont\char107}}
+\let\ubrevislonga\ubrevelunga
+
+% \end{macrocode}
+%\end{macro}
+%\end{macro}
+%\end{macro}
+%\end{macro}
+%\end{macro}
+%\end{macro}
+%\end{macro}
+%\end{macro}
+%\end{macro}
+%\end{macro}
+%\end{macro}
+%\end{macro}
+%\end{macro}
+%\end{macro}
+%\end{macro}
+%\end{macro}
+%\end{macro}
+%\end{macro}
+%
+%\begin {macro}{\corona}
+%\begin {macro}{\ElemInd}
+%\begin {macro}{\coronainv}
+%\begin {macro}{\catal}
+%\begin {macro}{\ipercatal}
+%\begin {macro}{\hiatus}
+%\begin {macro}{\Hiatus}
+%\begin {macro}{\X}
+%\begin {macro}{\anceps}
+%\begin {macro}{\banceps}
+%\begin {macro}{\ancepsdbrevis}
+%\begin {macro}{\aeolicbii}
+%\begin {macro}{\aeolicbiii}
+%\begin {macro}{\aeolicbiv}
+% Similarly the following symbols have straightforward definitions. Only |\hiatus|
+% and |\Hiatus| require a small explanation; |\hiatus| inserts a small capital `H'
+% in superscript position; in a first moment it was chosen the solution of designing
+% a specific sans serif glyph in superscript position directly in the metric symbol
+% font (actually this symbol is still part of the font), but while testing it, Paolo
+% Ciacchi observed that a regular `H' with serifs was better looking than the sans
+% serif counterpart. Therefore the definition was changed in order to use the
+% current font upright shape; by specifying `H', it is irrelevant if the current one
+% is a Latin font, and the letter is a capital 'h', or if the current one is a Greek
+% font and the letter is a capital `eta'. |\Hiatus| displays the same symbol in a
+% zero width box so that it does not occupy any horizontal space; it is useful while
+% writing down complicated metric sequences. Macro|\X| may be considered, thanks to
+% its shape, a mnemonic shortcut in place of the full name |\anceps|.
+% \begin{macrocode}
+\DeclareRobustCommand\corona{{\metricsfont\char20}}
+\let\ElemInd\corona
+\DeclareRobustCommand\coronainv{{\metricsfont\char21}}
+\DeclareRobustCommand\catal{{\metricsfont g}}
+\DeclareRobustCommand\ipercatal{{\metricsfont h}}
+\DeclareRobustCommand\hiatus{\textsuperscript{\upshape H}}
+\DeclareRobustCommand\Hiatus{\makebox[\z@]{\hiatus}}
+\DeclareRobustCommand\X{{\metricsfont X}}
+\let\anceps\X
+\DeclareRobustCommand\banceps{{\metricsfont Y}}
+\DeclareRobustCommand\ancepsdbrevis{{\metricsfont Z}}
+\DeclareRobustCommand{\aeolicbii}{{\metricsfont I}}
+\DeclareRobustCommand{\aeolicbiii}{{\metricsfont J}}
+\DeclareRobustCommand{\aeolicbiv}{{\metricsfont K}}
+
+% \end{macrocode}
+%\end{macro}
+%\end{macro}
+%\end{macro}
+%\end{macro}
+%\end{macro}
+%\end{macro}
+%\end{macro}
+%\end{macro}
+%\end{macro}
+%\end{macro}
+%\end{macro}
+%\end{macro}
+%\end{macro}
+%\end{macro}
+%
+%\begin{macro}{\stripsl@sh}
+%\begin{macro}{\2}
+%\begin{macro}{\3}
+%\begin{macro}{\4}
+% Here we prepare for the definition of a very useful macro, |\newmetrics|, that
+% should ease quite a lot writing complicated and repetitive metric sequences.
+% We shall define |\newmetrics| by means of the internal \LaTeX\ macro |\@namedef|
+% which accepts a macro name containing any character, provided this name does not
+% contain the initial back slash (if it does this back slash becomes part of the
+% macro name; see the \TeX{}book where there is an example for the definition of
+% |\\TeX|). Therefore we need a service macro |\stripsl@sh| that strips the first
+% token from the control sequence, so that the na\"if user does not have to treat
+% the new metrics control sequence differently from the control sequences it uses
+% for example with |\newcommand|. Next we define three numeric control sequences
+% that should be followed by the rest of the macro name.
+% The na\"if user can then type in something like \verb*+\2iamb + in order to
+% activate a macro whose name is formed by the tokens |2iamb|, which is normally
+% impossible in \LaTeX. Notice, though, the compulsory space after the macro name.
+% \begin{macrocode}
+\newif\ifmetricsfont\metricsfontfalse
+\def\stripsl@sh#1{\expandafter\@gobble\string#1}
+\def\2#1 {\csname2#1\endcsname}
+\def\3#1 {\csname3#1\endcsname}
+\def\4#1 {\csname4#1\endcsname}
+
+% \end{macrocode}
+%\end{macro}
+%\end{macro}
+%\end{macro}
+%\end{macro}
+%\begin {macro}{\newmetrics}
+% Here is the user macro |\newmetrics|, to be used just as |\newcommand|, except it
+% accepts a macro name starting with one of the digits `2', `3', or `4', and sets
+% the suitable boolean variable to true so that in a long metric sequence the metric
+% font might be selected just once.
+% \begin{macrocode}
+\newcommand\newmetrics[2]{%
+ \expandafter\@namedef\expandafter{\stripsl@sh#1}%
+ {{\metricsfonttrue#2}}}
+
+% \end{macrocode}
+%\end{macro}
+%
+%\begin {macro}{\iam}
+%\begin {macro}{\chor}
+%\begin {macro}{\enopl}
+%\begin {macro}{\4MACRO}
+%\begin {macro}{\aeolchorsor}
+%\begin {macro}{\hexam}
+%\begin {macro}{\pentam}
+%\begin {macro}{\2tr}
+% Here some common metric sequences are defined; some define single measures, such
+% as the `iambus' or the `choriambus', while some define complete verses such as the
+% `hexameter' or the `pentameter'.
+% \begin{macrocode}
+\newmetrics\iam{\barbreve\lunga\breve\lunga}
+\newmetrics\chor{\lunga\breve\breve\lunga}
+\newmetrics\enopl{\breve\lunga\breve\breve\lunga\breve\breve\lunga}
+\newmetrics{\4MACRO}{\lunga\lunga\lunga\lunga}
+\newmetrics{\aeolchorsor}{\lunga\zeugma{\breve\breve}\breve
+ \breve\zeugma{\breve\breve}}
+\newmetrics{\hexam}{\lunga\breve\breve\lunga\breve\breve
+ \lunga\breve\breve\lunga\breve\breve\lunga\breve\breve
+ \lunga\lunga}
+\newmetrics{\pentam}{\lunga\barbbreve\lunga\barbbreve\lunga\dBar
+ \lunga\breve\breve\lunga\breve\breve\lunga}
+\newmetrics{\2tr}{\lunga\breve\lunga\X\ \lunga\breve\lunga\X\ }
+
+% \end{macrocode}
+% As it may be seen, the definition of such metric sequences may contain almost
+% anything; here |\zeugma| was used as well as \verb*+\ +, but almost every
+% macro defined in the previous parts may be freely used.
+%\end{macro}
+%\end{macro}
+%\end{macro}
+%\end{macro}
+%\end{macro}
+%\end{macro}
+%\end{macro}
+%\end{macro}
+%
+%\begin{macro}{\metricstack}
+% |\metricstack| is a command similar to |\shortstack| used to stack something over
+% something else; specifically the second argument over the third one; it was
+% specifically designed for use while typesetting metric sequences, but actually
+% there is nothing that forbids to use it with any base character (typeset in text
+% LR mode) and any superscript character belonging to a math alphabet (which is
+% being set in script--script style, not in script style, as it happens with
+% |\shortstack|.
+% \begin{macrocode}
+\DeclareRobustCommand*{\metricstack}[2]%
+ {$\mathord{\mathop{\hbox{#1\rule{\z@}{1ex}}}%
+ \limits^{\scriptscriptstyle\relax#2\relax}}$}
+
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\svert}
+% |\svert| is a short vertical rule that may be used, for example, with
+% |\metricstack| for putting a small number over a dividing vertical bar in metric
+% sequences.
+% \begin{macrocode}
+\newcommand*{\svert}{\vrule\@height.8ex\@depth.2ex\relax}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\textoverline}
+% \LaTeX\ has macro |\underline| that can be used in both text and math mode; there
+% is nothing similar for overlining, therefore we defined a new command for this
+% task.
+% \begin{macrocode}
+\DeclareRobustCommand*{\textoverline}[1]{%
+ \leavevmode\vbox{\setbox\z@\hbox{#1}
+ \ialign{##\crcr
+ \hbox to\wd\z@{\hrulefill}\crcr
+ \noalign{\kern.4ex\nointerlineskip}%
+ \hfil\box\z@\hfil\crcr}}}
+
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\verseskip}
+%\begin {environment}{bracedmetrics}
+% The environment |bracedmetrics| is used primarily for setting some metric
+% sequences one atop the other, with a certain alignment and grouped together with a
+% right brace. We need therefore a length name |\br@cedmetrics| for measuring the
+% width of this large metrics sequence stack; we need a command |\verseskip| for
+% inserting a blank space before, after or in the middle of a metric sequence, that
+% more or less is as wide as an integer number of metric symbols, and, last but not
+% least, the environment itself for typesetting this large object containing the
+% said metric sequences; see the documentation file \texttt{teubner-doc.pdf} for
+% examining some examples.
+% \begin{macrocode}
+\newlength{\br@cedmetrics}
+\newcommand*{\verseskip}[1]{{%
+ \setbox\z@\hbox{\longa}\dimen@\wd\z@\leavevmode\hbox to#1\dimen@{}}}
+
+\newenvironment{bracedmetrics}[1]{\def\Hfill{\leavevmode\hfill}%
+\settowidth{\br@cedmetrics}{#1}%
+\ifvmode\vskip1ex\fi
+$\displaystyle\left.%
+\vcenter\bgroup\hsize\br@cedmetrics\parindent\z@\parskip\z@
+}{\egroup\right\}$}
+
+% \end{macrocode}
+%\end{environment}
+%\end{macro}
+%
+% \subsection{Debugging commands}
+%\begin{macro}{\TRON}
+%\begin{macro}{\GTRON}
+%\begin{macro}{\TROF}
+%\begin{macro}{\GTROF}
+%\begin{macro}{\treceon}
+%\begin{macro}{\traceoff}
+% Here there are some macros for turning on and off the tracing facilities of \TeX,
+% that turn out to be useful while debugging; they are accessible also to the end
+% user. Global settings must be turned on and off globally; local settings
+% die out by themselves when a group is closed, but it is a good habit to explicitly
+% turn them out regardless of groups. Attention that when the tracing facilities are
+% on and a page ship out takes place, the |.log| file receives a lot of material,
+% and this file gets very large. In order to avoid logging too much information the
+% |trace| package is loaded; this package give access to the macros |\traceon| and
+% |\traceoff| that log a lot of information, except the redundant one, specifically
+% all the macros executed during any font change. Users don't realize the amount of
+% processing done behind the scenes when with the New Font Selection Scheme (NFSS) a
+% font change takes place; luckily enough modern processors are quite fast so that
+% the compilation CPU time does not become too heavy. But if the \TeX\ processing is
+% logged, this amount of work implies thousands of lines of almost meaningless
+% information when the purpose of logging depends on errors that are difficult to
+% spot; Font changes are almost exempt from errors, so the processing of the inner
+% workings need not be logged down.
+%
+% If the user needs to trace something in order to spot errors, s/he is invited to
+% use the commands |\traceon| and |\traceoff|; commands |\TRON| and |\TROF| do log
+% much more material, in particular font changes, but at least they action may be
+% confined within groups or environments; |\GTRON| and |\GTROF| are global settings
+% and can't be confined within groups or environments; sometimes they are necessary,
+% but it's important to turn off global tracing as soon as possible.
+% \begin{macrocode}
+\RequirePackage{trace}
+\def\GTRON{\global\tracingcommands=\tw@ \global\tracingmacros=\tw@}
+\def\GTROF{\global\tracingcommands=\z@ \global\tracingmacros=\z@}
+\def\TRON{\tracingcommands=\tw@ \tracingmacros=\tw@}
+\def\TROF{\tracingcommands=\z@ \tracingmacros=\z@}
+
+% \end{macrocode}
+%\end{macro}
+%\end{macro}
+%\end{macro}
+%\end{macro}
+%\end{macro}
+%\end{macro}
+%
+% \subsection{Classical Greek numerals}
+% When typesetting Greek it may occur to specify numbers written out as Milesian
+% numerals; the |greek| option to the \babel\ package defines a couple of
+% macros for transforming explicit arabic numerals or counter contents as Milesian
+% numerals. Since this package offers more possibilities in the choice of those
+% ``non alphabetic'' characters used in the Milesian notation, such macros have to
+% be redefined. On the occasion we changed some little internal details so as to make such macros a little faster and more robust.
+%\begin{macro}{\Greeknumeral}
+%\begin{macro}{\greeknumeral}
+%\begin{macro}{\@ifStar}
+%\begin{macro}{\grtoday}
+% Both |\greeknumeral| and |\Greeknumeral|, the latter producing upper case Greek
+% numerals, while the former produces lower case ones, resort to a service macro
+% |\gr@@numeral|. But the new definition accepts the starred version; without the
+% star the digit value~6 is represented with a ``stigma'', while with the star that
+% value is represented with a lowered ``digamma''. The upper case version requires
+% intermediate macros before using |\MakeUppercase| on the result in order to
+% convert lower to upper case Milesian value symbols. This means that |\gr@@numeral|
+% may work only with lower case symbols.
+% It turned out that the normal redefinition command |\renewcommand| produced
+% fragile commands that broke out when used as arguments of other commands,
+% specifically the Greek date was broken when it was passed as the argument to the
+% |\date| command of the class \textsf{memoir}; therefore I decided to redefine the
+% |\@ifstar| macro into another |\@ifStar| one so as not to fiddle with \LaTeX\
+% kernel commands. I defined also the lowercase version of the |\grtoday| date,
+% since the \babel\ package provides only the |\today| command with no control over
+% the use of which type of numerals; |\grtoday| uses the lowercase Milesian numerals
+% through the redefined |\greeknumeral| macro.
+% \begin{macrocode}
+\def\@ifStar#1#2{\def\@tempA{#1}\def\@tempB{#2}\futurelet\@tempC\@testStar}
+\def\@testStar{\ifx\@tempC*\bbl@afterelse\expandafter\@tempA\@gobble\else
+ \bbl@afterfi\@tempB\fi}
+
+\DeclareRobustCommand*{\Greeknumeral}{%
+ \let\n@vanta\textQoppa\let\n@vecento\textSampi
+ \@ifStar{\Gr@@kn@meral}{\Gr@@knum@ral}}
+
+\DeclareRobustCommand*{\greeknumeral}{%
+ \let\n@vanta\textqoppa\let\n@vecento\textsampi
+ \@ifStar{\let\s@i\textstigma\gr@@numeral}{\let\s@i\fLow\gr@@numeral}}
+
+\def\Gr@@kn@meral#1{\let\s@i\textStigma
+ \expandafter\MakeUppercase\expandafter{\gr@@numeral{#1}}}
+
+\def\Gr@@knum@ral#1{\let\s@i\textDigamma
+ \expandafter\MakeUppercase\expandafter{\gr@@numeral{#1}}}
+
+\def\grtoday{{\expandafter\greeknumeral\expandafter{\the\day}}\space
+\gr@c@month\space{\expandafter\greeknumeral\expandafter{\the\year}}}
+
+% \end{macrocode}
+%\end{macro}
+%\end{macro}
+%\end{macro}
+%\end{macro}
+%\begin{macro}{\gr@@numeral}
+% |\gr@@numeral| must do most of the processing; it must check that the argument is
+% within the allowable range $1\sim999\,999$ and issue suitable warnings if not. On
+% the other side, if the number is within the correct range, it must check in which
+% decade it falls and must call other macros so as to produce the correct decimal
+% digit~$\leftrightarrow$ Milesian symbol. Six such macros are needed because the
+% allowable range contains at maximum six decimal places. Apparently Milesian
+% symbology allows to go beyond one million, but Apostolos Syropoulos, who
+% originally wrote the code thought (correctly) that Milesian numbers would not be
+% used for ``acrobatic performances'' but possibly for writing the Greek date with
+% the AD year; six decimal places are more than enough for this purpose.
+% |\gr@ill@value| was not redefined from Apostolos Syropoulos' \babel\ definition;
+% it simply issues a warning message about an argument out of range. The presence
+% of the primitive command |number| in these macros is for two purposes:
+% (a) transforms a counter contents into a sequence of digits tokens, and
+% (b) if the argument is already a digit string, it removes any leading zeros.
+% No braces are present because this string is examined sequentially one digit
+% at a time from the leading position to the least significant position; of
+% course this means that the decimal zero is treated correctly even if Milesian
+% symbols do not have the equivalent of a zero.
+% The double opening and closing braces are necessary to avoid a space vanishing
+% after using the |\gr@@numeral| macro; the six levels of digit reprentation are
+% corrected with the LICR macoros.
+% \begin{macrocode}
+\def\gr@@numeral#1{{%
+ \ifnum#1<\@ne\space\gr@ill@value{#1}%
+ \else
+ \ifnum#1<10\relax\expandafter\gr@num@i\number#1%
+ \else
+ \ifnum#1<100\relax\expandafter\gr@num@ii\number#1%
+ \else
+ \ifnum#1<\@m\relax\expandafter\gr@num@iii\number#1%
+ \else
+ \ifnum#1<\@M\relax\expandafter\gr@num@iv\number#1%
+ \else
+ \ifnum#1<100000\relax\expandafter\gr@num@v\number#1%
+ \else
+ \ifnum#1<1000000\relax\expandafter\gr@num@vi\number#1%
+ \else
+ \space\gr@ill@value{#1}%
+ \fi
+ \fi
+ \fi
+ \fi
+ \fi
+ \fi
+ \fi
+}}
+% \end{macrocode}
+%\end{macro}
+%\begin{macro}{\gr@num@i}
+%\begin{macro}{\gr@num@ii}
+%\begin{macro}{\gr@num@iii}
+%\begin{macro}{\gr@num@iv}
+%\begin{macro}{\gr@num@v}
+%\begin{macro}{\gr@num@vi}
+% The next six macros transform single decimal digits into Milesian symbols. The
+% argument to each macro is a single decimal digit; their positional value is
+% determined by the calling a macro that invokes a different transformation routine
+% for every position.
+% To the right of the least significant position there must be the symbol
+% ``anwtonos'', similar to an apostrophe, while to the left of each most significant
+% symbol whose value is greater than 999 there must be a ``katwtonos'' symbol,
+% similar to a lowered and inverted apostrophe. Zeros are examined in all macros,
+% except the one for ``units'', because their value cannot be printed but there
+% still is the possibility that there are no more digits higher than zero, so that
+% the anwtonos must be set.
+% Macros |\n@vanta| and |\n@vecento| are set by the calling macros so as to be the
+% correct lower or upper case `qoppa' or sampi' respectively.
+% \begin{macrocode}
+\def\gr@num@i#1{%
+ \ifcase#1\or \textalpha\or \textbeta\or \textgamma\or
+ \textdelta\or \textepsilon
+ \or \s@i\or \textzeta\or \texteta\or \texttheta\fi
+ \ifnum#1=\z@\else\anw@true\fi\anw@print}
+\def\gr@num@ii#1{%
+ \ifcase#1\or \textiota\or \textkappa\or \textlambda\or \textmu\or \textnu%
+ \or \textxi\or \textomicron\or \textpi\or \n@vanta\fi
+ \ifnum#1=\z@\else\anw@true\fi\gr@num@i}
+\def\gr@num@iii#1{%
+ \ifcase#1\or \textrho\or \textsigma\or \texttau\or \textupsilon
+ \or \textphi\or \textchi\or \textpsi\or \textomega\or \n@vecento\fi
+ \ifnum#1=\z@\anw@false\else\anw@true\fi\gr@num@ii}
+\def\gr@num@iv#1{%
+ \ifnum#1=\z@\else\katwtonos\fi
+ \ifcase#1\or \textalpha\or \textbeta\or \textgamma\or \textdelta
+ \or \textepsilon\or \s@i\or \textzeta\or \texteta\or \texttheta\fi
+ \gr@num@iii}
+\def\gr@num@v#1{%
+ \ifnum#1=\z@\else\katwtonos\fi
+ \ifcase#1\or \textiota\or \textkappa\or \textlambda\or
+ \textmu\or \textnu\or \textxi\or \textomicron\or \textpi\or \n@vanta\fi
+ \gr@num@iv}
+\def\gr@num@vi#1{%
+ \katwtonos
+ \ifcase#1\or \textrho\or \textsigma\or \texttau\or \textupsilon
+ \or \textphi\or \textchi\or \textpsi\or \textomega\or \n@vecento\fi
+ \gr@num@v}
+
+% \end{macrocode}
+%\end{macro}
+%\end{macro}
+%\end{macro}
+%\end{macro}
+%\end{macro}
+%\end{macro}
+%
+%\subsection{Attic numerals}
+% It's true that Apostolos Siropoulos wrote also the |athnum.sty| extension package
+% in order to typeset integer numbers with the Athenian or Attic notation; this
+% representation of integer strictly positive integers was similar in a way to the
+% Roman notation, based on a biquinalry representation of decimal digits (taking
+% into account that there was not a symbol for zero) so as the Romans had the
+% symbols for 1, 5, 10, 50, 100, 500 and 1000 (I, V, X, L, C, D, M) the Attic
+% notation has symbols for the same sequence of decimal values extended with
+% 10\,000 and 50\,000. While typesetting philological texts in Greek it might be
+% necessary to use also the Attic notation. % As the original Roman notation used
+% to be purely additive (i.e.\ 9\,=\,VIIII), so is the Attic notation.
+%
+%\begin{macro}{\AtticNumeral}
+%\begin{macro}{\AtticCycl@}
+% Therefore another conversion macro was devised that receives the value to be
+% converted as its argument and checks that it falls between the boundaries;
+% actually the lower boundary is zero, while the upper boundary was chosen to be
+% 99\,999, for no other reason that the lack of further symbols, beyond the value
+% 50\,000, would force to long sequences of identical symbols that are difficult
+% to read. The |athnum.sty| package allows to extend this range to 249\,9999;
+% should it be necessary, the user is invited to load that package and its
+% transformation command |\athnum|.
+%
+% The user command |\AtticNumeral| is very simple, but it must be preceded by the
+% definitions of the quinary symbols for 50, 500, 5000, and 50\,000; such symbols
+% are present in all the CB Greek fonts in all sizes, series and shapes; therefore
+% the definitions must be subject to the LGR enconding:
+% \begin{macrocode}
+\DeclareTextSymbol{\Vmiria}{\GRencoding@name}{5}
+\DeclareTextSymbol{\Vkilo}{\GRencoding@name}{4}
+\DeclareTextSymbol{\Vetto}{\GRencoding@name}{3}
+\DeclareTextSymbol{\Vdeka}{\GRencoding@name}{2}
+% \end{macrocode}
+% The we need a command for issuing a warning message if the number to be
+% transformed is out of range:
+% \begin{macrocode}
+\newcommand*\attic@ill@value[1]{\PackageWarning{teubner}{%
+Illegal value (\number#1) for \string\ActicNumeral\space}}
+% \end{macrocode}
+% Finally the robust definition of the |\AtticNumeral| command"
+% \begin{macrocode}
+\DeclareRobustCommand*\AtticNumeral[1]{%
+\ifnum#1<\@ne \attic@ill@value{#1}\else
+ \ifnum#1>99999\relax \attic@ill@value{#1}\else
+ \AtticCycl@{#1}%
+ \fi
+\fi}
+
+% \end{macrocode}
+% The real transformation algorithm is transfered to the auxiliary macro
+% |\AttiCycl@|, where successive division by 10 allow to extract the various decimal
+% digits of various weights maintaining the remainder in the original counter; each
+% decimal digit is possibly divided into the quinary value and the remaining units
+% up to 4; the the cycle is repeated untile the decimal units, that do not require
+% the computation of the remainder and terminate the cycle. Notice that we use also
+% the $\varepsilon$-\TeX\ extended commands for integer computations; this implies
+% that |teubner| mus be run with a suitably recent version of the typesetting engine
+% that embeds the above extensions.
+% \begin{macrocode}
+\def\AtticCycl@#1{%
+ \bgroup
+ \countdef\valore=252\countdef\cifra=250\relax
+ \valore=#1\relax
+ \cifra=\valore\divide\cifra10000\relax
+ \valore=\numexpr\valore-\cifra*10000\relax
+ \ifnum\cifra>4\relax\Vmiria \advance\cifra-5\relax\fi
+ \@whilenum\cifra>\z@\do{M\advance\cifra\m@ne}%
+ \cifra=\valore\divide\cifra1000\relax
+ \valore=\numexpr\valore-\cifra*1000\relax
+ \ifnum\cifra>4\relax\Vkilo \advance\cifra-5\relax\fi
+ \@whilenum\cifra>\z@\do{Q\advance\cifra\m@ne}%
+ \cifra=\valore\divide\cifra100\relax
+ \valore=\numexpr\valore-\cifra*100\relax
+ \ifnum\cifra>4\relax\Vetto \advance\cifra-5\relax\fi
+ \@whilenum\cifra>\z@\do{H\advance\cifra\m@ne}%
+ \cifra=\valore\divide\cifra10\relax
+ \valore=\numexpr\valore-\cifra*10\relax
+ \ifnum\cifra>4\relax\Vdeka \advance\cifra-5\relax\fi
+ \@whilenum\cifra>\z@\do{D\advance\cifra\m@ne}%
+ \cifra=\valore
+ \ifnum\cifra>4\relax P\advance\cifra-5\relax\fi
+ \@whilenum\cifra>\z@\do{I\advance\cifra\m@ne}%
+ \egroup}
+
+% \end{macrocode}
+%\end{macro}
+%\end{macro}
+%\iffalse
+%</package>
+%\fi
+%
+%\iffalse
+%<*tbtx>
+%\fi
+%\section{Accessing the CBgreek fonts when the TX fonts are selected}
+% During the year 2010 this package \textsf{teubner.sty} was upgraded in order to allow
+% using the CBgreek fonts even when other Latin fonts, different from the ``standard'' CM
+% and LM ones are selected for typesetting text with the Latin script.
+
+% At the same time Antonis Tsolomitis uploaded a new package in order to let
+% Greek users use some Greek fonts that match the Times eXtended
+% ones\footnote{Probably Antonis Tsolomitis' Greek fonts match also the
+% newer Times eXtended fonts produced by Michael Sharpe. The newer fonts
+% have different font family names than the previous TX fonts; in order
+% to produce similar \texttt{.fd} files to be used with the newer Times
+% fonts, it is necessary to procede as for any other font collection
+% different from the TX ones.}. In order to use the de facto default
+% encoding LGR for Greek fonts, he produced the necessary |lgrtxr.fd|,
+% |lgrtxss.fd|, |lgrtxtt.fd|, font definition files that allow the font
+% switching implied by the |greek| option to the \textsf{babel} package.
+% These files take precedence over the mechanism outlined in
+% section~\ref{ssec:LatinFontComp}, because command |\substitutefontfamily|
+% first tests the existence of |lgrtxr.fd|, and, if this is not available,
+% it may generate a specific one suitable for working smoothly with
+% \textsf{teubner.sty}.
+%
+% Now if Tsolomitis' files are available on the main system tree, these
+% take precedence and the \textsf{teubner} compatible files are not
+% generated. Unfortunately Tsolomitis' fonts, although better suited to
+% match the TX fonts, are well matched to modern Greek typesettin,
+% but they are incomplete for philological typesetting.
+%
+% We therefore avoid this clash by creating a \textsf{teubnertx.sty} file.
+% This extension defines the families and shapes available with the
+% familiar fond definition files, but the information gets input by
+% \textsf{teubner.sty} at the ``begin document'' time, without resorting
+% to any |.fd| file. May be more information is loaded than is strictly
+% necessary, but it better to do this way than to clash with other packages.
+% \begin{macrocode}
+ \DeclareFontFamily{LGR}{txr}{}
+ \DeclareFontShape{LGR}{txr}{m}{n}{<->ssub * cmr/m/n}{}
+ \DeclareFontShape{LGR}{txr}{m}{it}{<->ssub * cmr/m/it}{}
+ \DeclareFontShape{LGR}{txr}{m}{sl}{<->ssub * cmr/m/sl}{}
+ \DeclareFontShape{LGR}{txr}{m}{sc}{<->ssub * cmr/m/sc}{}
+ \DeclareFontShape{LGR}{txr}{b}{n}{<->ssub * cmr/bx/n}{}
+ \DeclareFontShape{LGR}{txr}{b}{it}{<->ssub * cmr/bx/it}{}
+ \DeclareFontShape{LGR}{txr}{b}{sl}{<->ssub * cmr/bx/sl}{}
+ \DeclareFontShape{LGR}{txr}{b}{sc}{<->ssub * cmr/bx/sc}{}
+ \DeclareFontShape{LGR}{txr}{bx}{n}{<->ssub * cmr/bx/n}{}
+ \DeclareFontShape{LGR}{txr}{bx}{it}{<->ssub * cmr/bx/it}{}
+ \DeclareFontShape{LGR}{txr}{bx}{sl}{<->ssub * cmr/bx/sl}{}
+ \DeclareFontShape{LGR}{txr}{bx}{sc}{<->ssub * cmr/bx/sc}{}
+
+ \DeclareFontShape{LGR}{txr}{m}{li}{<->ssub * cmr/m/li}{}
+ \DeclareFontShape{LGR}{txr}{b}{li}{<->ssub * cmr/b/li}{}
+ \DeclareFontShape{LGR}{txr}{bx}{li}{<->ssub * cmr/bx/li}{}
+ \DeclareFontShape{LGR}{txr}{m}{ui}{<->ssub * cmr/m/ui}{}
+ \DeclareFontShape{LGR}{txr}{b}{ui}{<->ssub * cmr/m/ui}{}
+ \DeclareFontShape{LGR}{txr}{bx}{ui}{<->ssub * cmr/bx/ui}{}
+ \DeclareFontShape{LGR}{txr}{m}{rs}{<->ssub * cmr/m/rs}{}
+ \DeclareFontShape{LGR}{txr}{b}{rs}{<->ssub * cmr/m/rs}{}
+ \DeclareFontShape{LGR}{txr}{bx}{rs}{<->ssub * cmr/bx/rs}{}
+
+ \DeclareFontFamily{LGR}{txss}{}
+ \DeclareFontShape{LGR}{txss}{m}{n}{<->ssub * cmss/m/n}{}
+ \DeclareFontShape{LGR}{txss}{m}{it}{<->ssub * cmss/m/it}{}
+ \DeclareFontShape{LGR}{txss}{m}{sl}{<->ssub * cmss/m/sl}{}
+ \DeclareFontShape{LGR}{txss}{m}{sc}{<->ssub * cmss/m/sc}{}
+ \DeclareFontShape{LGR}{txss}{b}{n}{<->ssub * cmss/bx/n}{}
+ \DeclareFontShape{LGR}{txss}{b}{it}{<->ssub * cmss/bx/it}{}
+ \DeclareFontShape{LGR}{txss}{b}{sl}{<->ssub * cmss/bx/sl}{}
+ \DeclareFontShape{LGR}{txss}{b}{sc}{<->ssub * cmss/bx/sc}{}
+ \DeclareFontShape{LGR}{txss}{bx}{n}{<->ssub * cmss/bx/n}{}
+ \DeclareFontShape{LGR}{txss}{bx}{it}{<->ssub * cmss/bx/it}{}
+ \DeclareFontShape{LGR}{txss}{bx}{sl}{<->ssub * cmss/bx/sl}{}
+ \DeclareFontShape{LGR}{txss}{bx}{sc}{<->ssub * cmss/bx/sc}{}
+
+ \DeclareFontFamily{LGR}{txtt}{\hyphenchar=-1}
+ \DeclareFontShape{LGR}{txtt}{m}{n}{<->ssub * cmtt/m/n}{}
+ \DeclareFontShape{LGR}{txtt}{m}{it}{<->ssub * cmtt/m/it}{}
+ \DeclareFontShape{LGR}{txtt}{m}{sl}{<->ssub * cmtt/m/sl}{}
+ \DeclareFontShape{LGR}{txtt}{m}{sc}{<->ssub * cmtt/m/sc}{}
+ \DeclareFontShape{LGR}{txtt}{b}{n}{<->ssub * cmtt/bx/n}{}
+ \DeclareFontShape{LGR}{txtt}{b}{it}{<->ssub * cmtt/bx/it}{}
+ \DeclareFontShape{LGR}{txtt}{b}{sl}{<->ssub * cmtt/bx/sl}{}
+ \DeclareFontShape{LGR}{txtt}{b}{sc}{<->ssub * cmtt/bx/sc}{}
+ \DeclareFontShape{LGR}{txtt}{bx}{n}{<->ssub * cmtt/bx/n}{}
+ \DeclareFontShape{LGR}{txtt}{bx}{it}{<->ssub * cmtt/bx/it}{}
+ \DeclareFontShape{LGR}{txtt}{bx}{sl}{<->ssub * cmtt/bx/sl}{}
+ \DeclareFontShape{LGR}{txtt}{bx}{sc}{<->ssub * cmtt/bx/sc}{}
+% \end{macrocode}
+%\iffalse
+%</tbtx>
+%\fi
+% \Finale
+\endinput