% \iffalse meta comment
% File: teubner.dtx Copyright (C) 2001-2004 Claudio Beccari
%
% 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
%
% \fi
%
%% \CharacterTable
%%  {Upper-case    \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z
%%   Lower-case    \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z
%%   Digits        \0\1\2\3\4\5\6\7\8\9
%%   Exclamation   \!     Double quote  \"     Hash (number) \#
%%   Dollar        \$     Percent       \%     Ampersand     \&
%%   Acute accent  \'     Left paren    \(     Right paren   \)
%%   Asterisk      \*     Plus          \+     Comma         \,
%%   Minus         \-     Point         \.     Solidus       \/
%%   Colon         \:     Semicolon     \;     Less than     \<
%%   Equals        \=     Greater than  \>     Question mark \?
%%   Commercial at \@     Left bracket  \[     Backslash     \\
%%   Right bracket \]     Circumflex    \^     Underscore    \_
%%   Grave accent  \`     Left brace    \{     Vertical bar  \|
%%   Right brace   \}     Tilde         \~}
% \iffalse 
%<*dtx>
\ProvidesFile{teubner.dtx}[2010/05/08 v.3.0k extensions for Greek philology]
%</dtx>
%<package>\NeedsTeXFormat{LaTeX2e}
%<package>\ProvidesPackage{teubner}[2010/05/08 v.3.0k extensions for Greek philology]
%
%<*driver>
\documentclass{ltxdoc}
\GetFileInfo{teubner.dtx}
  \title{The \textsf{teubner} package\\
        Extensions for Greek philology%
        \thanks{This file
        has version number \fileversion, last
        revised on \filedate.}}
 \author{Claudio Beccari\\\texttt{claudio dot beccari at gmail dot com}}
 \date{}
 \providecommand\babel{\textsf{babel}}
 \newcommand\lbr{\char123\relax}\newcommand\rbr{\char125\relax}
 \newenvironment{sintassi}{%
      \begin{quote}\parskip0pt\hfuzz10pt\ttfamily\obeylines
      }{%
      \end{quote}\ignorespaces
      }
 \newcommand*\acro[1]{\expandafter\textsc\expandafter{\MakeLowercase{#1}}}
 \usepackage{multicol}
\begin{document}
 \maketitle
 \DocInput{teubner.dtx}
\end{document}
%</driver>
% \fi
%
% \CheckSum{4957}
% \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 distributed with the package.
% While this documentation is being written the \TeX{}-Live Team is trying
% to reduce the size of the distribution and one of the proposals is to reduce
% the number of Greek fonts distributed on \TeX-Live; therefore it might
% be necessary that the users of this \textsf{teubner} package download the
% missing fonts directly from one of the \acro{CTAN} archives.
% \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 of 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 honor 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, the new commands are documented and suitably shown.
%
% This package contains new environments and new commands; it presumes
% the user invokes it after declaring the \texttt{greek} option to the \babel\
% package; should he forget, this package will complain. But once the
% \texttt{greek} option is properly declared, this package verifies that the
% |polutonikogreek| dialect is selected, or that the |polutoniko| attribute
% is set. 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\ might use just one hyphenation pattern set, so that in
% one of the two Greek versions some words might turn out with the wrong
% hyphens.
%
% The CB Greek fonts, which have been available for some years now on
% \acro{ctan} in the directory \texttt{/tex-archive/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
% 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.
%
% 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.
%
% Nevertheless there is a little point to observe; Lipsian fonts are very
% nice but show most 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.
%
% \section{Environments}
% I apologize 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 recognizable; 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 consults
% 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 type 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 are saved into the definition file |LGRaccent-glyph.def|, so that it can be used also without the |teubner| package, fore example for typesetting without setting the \emph{polytoniko} language attribute.
%
% 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.
%
% \StopEventually{}
%
% \section{Code}
% \subsection{Preliminaries}
% The beginning of the file starts with the traditional stuff;
% as usual we provide also the means for avoiding reading this file again.
%    \begin{macrocode}
%<*package>
\ifx\teubner\undefined
    \def\teubner{teubner}\else\expandafter\endinput
\fi
%    \end{macrocode}
% 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 sin 2007 the \TeX\ engine is
% \textsf{pdftex} even when DVI output is sought:
%    \begin{macrocode}
\newif\ifPDF \PDFfalse
\@ifundefined{pdfoutput}{\PDFfalse}{\ifnum\pdfoutput>\z@\PDFtrue\fi}
%    \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 with the \texttt{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. 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 breadth}
% \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|, because it never
% falls after another letter, so that it never breaks any ligature or kerning
% command. The command is there just for completeness.
%
% 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 can find
% it). See more on this point in the sequel.
%
% Nevertheless, while these glyph name macros are defined by default, it is possible
% to do without by specifying the option \emph{NoGlyphNames}, In this case the same
% result is more comfortably obtained by using the extended accent macros whose
% behaviour is specified in the definition file |LGRaccent-glyph.def|.
%
% 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, The full collection of the complete size set of
% the CB fonts is not available any more \emph{as the default \TeX\ system set up};
% only the 10pt size are available unless the \texttt{cbgreek-full} font package is
% loaded; for this reason a new option is 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 ddown all the EC and CB fonts from an original
%  10\,pt size. In order that the \texttt{10pt} plays its role correctly, it is
% 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.
%
% 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 sanserif 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, although 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 sequel for 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 \GlyphNamestrue
\DeclareOption{NoGlyphNames}{\GlyphNamesfalse}
\ProcessOptions*
%    \end{macrocode}
%
% In the sequel 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
% chosen 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.}.
% 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}
%\EC@family{U}{mtr}{m}{n}{gmtr}
\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 command 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
% or~3.7; in the former the concept of ``language attribute'' is unknown, while the
% latter recognizes varieties of the same language by the attribute setting.
% 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 dialect or the main language whose attribute
% gets set and, evidently, becomes effective when the main language \texttt{greek}
% is in force.
%    \begin{macrocode}
\ifx\languageattribute\undefined
 \def\GreekName{polutonikogreek}%
\else
 \languageattribute{greek}{polutoniko}\def\GreekName{greek}%
\fi
%    \end{macrocode}
%\end{macro}
%
% \subsection{Compatibility with Latin fonts}
%\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;
% I 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. 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
    }%
    \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 analize 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 ffirst 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}
% \Lispsiantrue\ifFamuly{pxr}{lmr}\Lipsianfalse
% \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; afterwards you reset
% |\Lipsianfalse| in order to avoid that other call 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{pxpackage}, 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 rigth 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 Tymes 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 memorize 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}%
\Lipsiantrue\ifFamily{txr}{cmr}\Lipsianfalse
\ifFamily{txss}{cmss}\ifFamily{txtt}{cmtt}}{}}

\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 read in. 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 \texttt{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, modeled 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 memorized, then the current
% Greek version is selected; the |\let\~\GRcirc| is required because swithching
% 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\~\GRcirc\let~\greek@tilde\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; hte actual font switching is
% made through the same |\Lipsiakostext| declaration, but the innner working
% maintain local this declaration, so non  grouping is explicitly required; 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 |\textit| 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\~\GRcirc\let~\greek@tilde
    \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 and font families, but
% maintaining the current 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 simly 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}%
    \fontfamily{\rmdefault}\selectfont
    \bbl@activate{~}#1}%
    \expandafter\fontencoding\expandafter{\externalencoding}\rmfamily}
    
%    \end{macrocode}
%\end{macro}
%
%\begin{macro}{\uishape}
%\begin{macro}{\textui}
%\begin{macro}{\rsshape}
%\begin{macro}{\textrs}
% The other switching foont macros for using the other shaps that are available with
% the CB fonts are working only when tyesetting 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 name 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#2a\advance\dimen@-.1\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:
%    \begin{macrocode}
\DeclareTextCommand{\cap}{\GRencoding@name}{\cap@}
\DeclareTextCommand{\cap}{OT1}{\cap@}
\DeclareTextCommand{\cap}{T1}{\cap@}

%    \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. Meanwhile we input from
% a separate file |LGRaccent-glyph.def| a whole set of extended accent macros
% slightly adapted from those contained in G\"unter  Milde's definition file.
% 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.
% Notice that all these declarations are restricted to the Greek font encoding so
% they are usable only when such font is in force. See the |teubner-doc.pdf| file
% for more details concerning the usefulness of the extended accent macros vs.\ the
% ligature mechanism.
% 
%    \begin{macrocode}
\input{LGRaccents-glyphs.def}
%    \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 |\~| and its equivalent |\GRcirc| 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 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 ot ``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 command |\nbs| is provided in order to simplify the input
% keying.
%    \begin{macrocode}
\let\nbs\nobreakspace
%    \end{macrocode
%
% Having defined the Greek accents with the extended macroso input with the 
% |LGRaccents-glyphs.def| file, we can let some equivalences so that such accents
% may be used with shorter control sequences that are coherent with the
% corresponding ligatures.
%    \begin{macrocode}
% grave
\DeclareTextCommand{\`}{\GRencoding@name}[1]{\lift@accent{96}{#1}}
% acute
\DeclareTextCommand{\'}{\GRencoding@name}[1]{\lift@accent{39}{#1}}
% circumflex
\DeclareTextCommand{\~}{\GRencoding@name}[1]{\lift@accent{126}{#1}}
\let\GRcirc\Perispomeni

%    \end{mcrocode}
% 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 multilanguage 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; it is not important to add the accent re-definition to the 
% |\extrasgreek| macro, because when this macro is executed the last definition
% given is the one that lasts until the next language shift.
%    \begin{macrocode}
\addto\extrasgreek{\shorthandoff{~}\let\~\Perispomeni}
\addto\noextrasgreek{\shorthandon{~}}

%    \end{macrocode}
% For the diaeresis we need to put an invisible character (|v| in the LGR encoded CB
% fonts) in order to avoid any ligature with an implied end of word (boundarychar)
% that turns the diaeresis into an apostrophe.
%    \begin{macrocode}
% diaeresis
\DeclareTextCommand{\"}{\GRencoding@name}[1]{\lift@accent{34v}{#1}}
% breve
\DeclareTextCommand{\u}{\GRencoding@name}[1]{\lift@accent{30}{#1}}
%    \end{macrocode}
% Besides the normal |\u| 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}}
% macron
\DeclareTextCommand{\=}{\GRencoding@name}[1]{\lift@accent{31}{#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 Milde's
% 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
% preceeding 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 memorize 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
% diaresis.
%
% 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 use always 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}}}
% 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 some 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}
% Several macros are traditionally defined for every encoding; we do not make
% exceptions. Actually all the symbols defined here can be obtained with the regular
% CB font ligatures so the macros are sort of superfluous. Nevertheless, in case any
% of the component symbols is made active and defined to perform something
% different, these macros can overcome the difficulty of producing the ligated
% glyphs. Even the |\textcompwordmark| macro, although the compound word mark is
% sort of unusual, could have been omitted, because with a Latin keyboard this
% symbol gets input by pressing the ``v'' key (``v'' stands for ``void''); all the
% hyphenation pattern files for the Greek language recognize ``v'' as a letter, an
% invisible one, that breaks any ligature, that hides the end of the word, that
% allows hyphenation (if the rest of the word is taken as a \emph{word} by \TeX\ 
% itself, which does not always happens!\dots).
% \begin{macrocode}
\DeclareTextSymbol{\greekquoteleft}{\GRencoding@name}{123}
\let\textguillemotleft\greekquoteleft
\DeclareTextSymbol{\greekquoteright}{\GRencoding@name}{125}
\let\textguillemotright\greekquoteright
\DeclareTextSymbol{\textcompwordmark}{\GRencoding@name}{118}
\DeclareTextSymbol{\textemdash}{\GRencoding@name}{127}
\let\emdash\textemdash
\DeclareTextSymbol{\textendash}{\GRencoding@name}{0}

%    \end{macrocode}
% \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} Some other Greek symbols are defined; some deal with the
% lowercase and upper case Milesian numerals, that are not accessible in the
% font matrix with a normal keyboard stroke, and some deal with the Euro symbol and
% the permill symbol, that are unlikely to be used in a philological text,
% but, who knows\dots
%
% May be the standard names starting with |text| should be used; It would not be too
% difficult a task, but these names should be defined in the |greek.fd| language
% description file; I know tha Werner Lemberg ha written a paper on Eutypon on this
% subject, also in order to make use of the CB fonts with Unicode support. But this
% is just an extension to that package, so I am not going to redefine things that
% are already there or that will be there in a next version of that file.
%    \begin{macrocode}
\DeclareTextSymbol{\stigma}{\GRencoding@name}{006}
\DeclareTextSymbol{\varstigma}{\GRencoding@name}{007}
\DeclareTextSymbol{\koppa}{\GRencoding@name}{18}
\DeclareTextSymbol{\varkoppa}{\GRencoding@name}{19}\let\coppa\varkoppa
\DeclareTextSymbol{\sampi}{\GRencoding@name}{27}
\DeclareTextSymbol{\Coppa}{\GRencoding@name}{21}\let\Koppa\Coppa
\DeclareTextSymbol{\Stigma}{\GRencoding@name}{22}
\DeclareTextSymbol{\Sampi}{\GRencoding@name}{23}
\DeclareTextSymbol{\Euro}{\GRencoding@name}{24}
\DeclareTextSymbol{\permill}{\GRencoding@name}{25}

%    \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 variabale |GlyphNames|
% which is set to true by default, just fort compatibility with the past; I suggest
% to use the \emph{NoGlyphNames} when typesetting new documents, since the glyphs
% are more asily 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.
%    \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 \texttt{greek} extension 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}
\DeclareTextSymbol{\f}{\GRencoding@name}{147}
\AtBeginDocument{\@ifpackageloaded{amssymb}%
{\let\AMSdigamma\digamma\def\digamma{\textormath{\f}{\AMSdigamma}}}% amssymb loaded
{\let\digamma\f}% amssymb not loadedloaded
}
\DeclareTextSymbol{\F}{\GRencoding@name}{195}\let\Digamma\F

%    \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\\{\@ifstar{\v@rscr{\@M}}{\v@rscr{\z@}}}%
    \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 \texttt{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 |\gereeknumeral| 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\Coppa\let\n@vecento\Sampi
      \@ifStar{\Gr@@kn@meral}{\Gr@@knum@ral}}
\DeclareRobustCommand*{\greeknumeral}{%
      \let\n@vanta\varkoppa\let\n@vecento\sampi
    \@ifStar{\let\s@i\stigma\gr@@numeral}{\let\s@i\fLow\gr@@numeral}}
\def\Gr@@kn@meral#1{\let\s@i\Stigma
    \expandafter\MakeUppercase\expandafter{\gr@@numeral{#1}}}
\def\Gr@@knum@ral#1{\let\s@i\Digamma
    \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.
%    \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 a\or b\or g\or d\or e%
  \or \s@i\or z\or h\or j\fi
  \ifnum#1=\z@\else\anw@true\fi\anw@print}
\def\gr@num@ii#1{%
  \ifcase#1\or i\or k\or l\or m\or n%
  \or x\or o\or p\or \n@vanta\fi
  \ifnum#1=\z@\else\anw@true\fi\gr@num@i}
\def\gr@num@iii#1{%
  \ifcase#1\or r\or s\or t\or u\or f%
  \or q\or y\or w\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 a\or b\or g\or d\or e%
  \or \s@i\or z\or h\or j\fi
  \gr@num@iii}
\def\gr@num@v#1{%
  \ifnum#1=\z@\else\katwtonos\fi
  \ifcase#1\or i\or k\or l\or m\or n%
  \or x\or o\or p\or \n@vanta\fi
  \gr@num@iv}
\def\gr@num@vi#1{%
  \katwtonos
  \ifcase#1\or r\or s\or t\or u\or f%
  \or q\or y\or w\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\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\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\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\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}
%    \begin{macrocode}
%</package>
%
%<*defs>
\ProvidesFile{LGRaccents-glyphs.def}%
   [2010/05/08 v.2.0a Definitions of accents and glyphs for LGR encoded Greek fonts]
%    \end{macrocode}
% \subsection{First set of extended accent definitions}
% These macros were originally defined by Guenter Milde
% in his file lgrenc-accents.def version 3.2 dated 2008-06-17
% and released under the LPPL LaTeX Project Public License
% version 1.3 or ay later version.
% 
% These macros were slightly modified by Claudio Beccari
% in this file, version 1.0 of 2010-04-13, in order to adapt them
% to the teubner.sty package, but they can be used independently of 
% this package.
%
% This modified version is released again under the LPPL license
% version 1.3c or any later version.
%
% These definitions are a modest variation of the standard LGR
% encoded ligature set, in the sense that they don't rely on
% ligatures but on accent  and composite text macros that address
% directly the accented glyphs.
%
% For example, if alpha with smooth spirit, acute accent and iota
% subscribed has to be inserted in the Greek text, the user
% can use either one of the following solutions:
% \begin{quote}
%    1) \verb+>'a|+ \\
%    2) \verb+\>'a|+
% \end{quote}
% Solution 1) saves hitting one key but breaks the kerning mechanism;
% Solution 2) requires hitting one more key but preserves the kerning
% mechanism.
%
% Only the diacritics that involve the breve (\u) and the macron (\=)
% are regular TeX accent macros and behave as ordinary OT1-like
% accents. There is no addressing of the marked glyphs, because the 256
% font table can't accommodate so many glyphs.
%
% This file should be usable by inputting it even without requiring the
% polutoniko language attribute of the Greek language.
%
% For more details read the teubner.pdf and the teubner-doc.pdf files
% that are part of the teubner package documentation.
%
%    \begin{macrocode}
\providecommand*\GRencoding@name{LGR}
\DeclareTextAccent{\u}{\GRencoding@name}{"1E} % breve
\DeclareTextAccent{\=}{\GRencoding@name}{"1F} % macron

\DeclareTextAccent{\Dialytika}{\GRencoding@name}{"22} % dialytika
\DeclareTextAccent{\Oxia}{\GRencoding@name}{"27} %  oxia 
\DeclareTextAccent{\Varia}{\GRencoding@name}{"60} % varia
\DeclareTextAccent{\Perispomeni}{\GRencoding@name}{"7E} % perispomeni
\DeclareTextAccent{\Dasia}{\GRencoding@name}{"3C} % rough breath/spirit
\DeclareTextAccent{\Psili}{\GRencoding@name}{"3E} % smooth breath/spirit
\DeclareTextCommand{\<}{\GRencoding@name}{\Dasia} % alias coomand
\DeclareTextCommand{\>}{\GRencoding@name}{\Psili} % alias command
% 	           
\DeclareTextAccent{\DialytikaOxia}{\GRencoding@name}{"23}        % oxia+dialytika
\DeclareTextAccent{\DialytikaVaria}{\GRencoding@name}{"24}       % varia+dialytika
\DeclareTextAccent{\DialytikaPerispomeni}{\GRencoding@name}{"20} % perisp.+dial.

\DeclareTextAccent{\DasiaOxia}{\GRencoding@name}{"56}	      % oxia+rough
\DeclareTextAccent{\DasiaVaria}{\GRencoding@name}{"43}      % varia+rough
\DeclareTextAccent{\DasiaPerispomeni}{\GRencoding@name}{"40}% perisp.+rough

\DeclareTextAccent{\PsiliOxia}{\GRencoding@name}{"5E}	      % oxia+smooth
\DeclareTextAccent{\PsiliVaria}{\GRencoding@name}{"5F}	  % varia+smooth
\DeclareTextAccent{\PsiliPerispomeni}{\GRencoding@name}{"5C}% perisp/+smooth
% composite commands
\DeclareTextCompositeCommand{\"}{\GRencoding@name}{'}{\DialytikaOxia}
\DeclareTextCompositeCommand{\"}{\GRencoding@name}{\'}{\DialytikaOxia}
\DeclareTextCompositeCommand{\"}{\GRencoding@name}{`}{\DialytikaVaria}
\DeclareTextCompositeCommand{\"}{\GRencoding@name}{\`}{\DialytikaVaria}
\DeclareTextCompositeCommand{\"}{\GRencoding@name}{~}{\DialytikaPerispomeni}
\DeclareTextCompositeCommand{\"}{\GRencoding@name}{\~}{\DialytikaPerispomeni}

\DeclareTextCompositeCommand{\'}{\GRencoding@name}{"}{\DialytikaOxia}
\DeclareTextCompositeCommand{\'}{\GRencoding@name}{\"}{\DialytikaOxia}
\DeclareTextCompositeCommand{\'}{\GRencoding@name}{<}{\DasiaOxia}
\DeclareTextCompositeCommand{\'}{\GRencoding@name}{\<}{\DasiaOxia}
\DeclareTextCompositeCommand{\'}{\GRencoding@name}{>}{\PsiliOxia}
\DeclareTextCompositeCommand{\'}{\GRencoding@name}{\>}{\PsiliOxia}

\DeclareTextCompositeCommand{\`}{\GRencoding@name}{"}{\DialytikaVaria}
\DeclareTextCompositeCommand{\`}{\GRencoding@name}{\"}{\DialytikaVaria}
\DeclareTextCompositeCommand{\`}{\GRencoding@name}{<}{\DasiaVaria}
\DeclareTextCompositeCommand{\`}{\GRencoding@name}{\<}{\DasiaVaria}
\DeclareTextCompositeCommand{\`}{\GRencoding@name}{>}{\PsiliVaria}
\DeclareTextCompositeCommand{\`}{\GRencoding@name}{\>}{\PsiliVaria}

\DeclareTextCompositeCommand{\~}{\GRencoding@name}{"}{\DialytikaPerispomeni}
\DeclareTextCompositeCommand{\~}{\GRencoding@name}{\"}{\DialytikaPerispomeni}
\DeclareTextCompositeCommand{\~}{\GRencoding@name}{<}{\DasiaPerispomeni}
\DeclareTextCompositeCommand{\~}{\GRencoding@name}{\<}{\DasiaPerispomeni}
\DeclareTextCompositeCommand{\~}{\GRencoding@name}{>}{\PsiliPerispomeni}
\DeclareTextCompositeCommand{\~}{\GRencoding@name}{\>}{\PsiliPerispomeni}

\DeclareTextCompositeCommand{\Psili}{\GRencoding@name}{'}{\PsiliOxia}
\DeclareTextCompositeCommand{\Psili}{\GRencoding@name}{\'}{\PsiliOxia}
\DeclareTextCompositeCommand{\Psili}{\GRencoding@name}{`}{\PsiliVaria}
\DeclareTextCompositeCommand{\Psili}{\GRencoding@name}{\`}{\PsiliVaria}
\DeclareTextCompositeCommand{\Psili}{\GRencoding@name}{~}{\PsiliPerispomeni}
\DeclareTextCompositeCommand{\Psili}{\GRencoding@name}{\~}{\PsiliPerispomeni}

\DeclareTextCompositeCommand{\Dasia}{\GRencoding@name}{'}{\DasiaOxia}
\DeclareTextCompositeCommand{\Dasia}{\GRencoding@name}{\'}{\DasiaOxia}
\DeclareTextCompositeCommand{\Dasia}{\GRencoding@name}{`}{\DasiaVaria}
\DeclareTextCompositeCommand{\Dasia}{\GRencoding@name}{\`}{\DasiaVaria}
\DeclareTextCompositeCommand{\Dasia}{\GRencoding@name}{~}{\DasiaPerispomeni}
\DeclareTextCompositeCommand{\Dasia}{\GRencoding@name}{\~}{\DasiaPerispomeni}

%    \end{macrocode}


% \subsection{Second set of extended accent definitions}
% Now come another bunch of Milde's macros for composite glyphs; none of them
% involves glyphs containing the subscript or adscript iota; this symbol, in facts
% is postfixed to the previous glyph macro description, so its ligature takes place
% after the previous glyph macro has been expanded; remember also that with the
% ``high accents'' you can use both input strings, for example: |>'| and |\>'|;
% therefore you can use the simple ligature input and, if kerning is not working
% well with certain glyphs, you can just add a backslash in front of the ligature
% sequence and everything gets fixed with proper ligatures. So, if |a>'u| with
% certain fonts results in broken kerning, you just change it to |a\>'u| and the
% kerning gets fixed.
%    \begin{macrocode}
\DeclareTextComposite{\`}{\GRencoding@name}{a}{128}
\DeclareTextComposite{\Dasia}{\GRencoding@name}{a}{129}
\DeclareTextComposite{\Psili}{\GRencoding@name}{a}{130}
\DeclareTextComposite{\'}{\GRencoding@name}{a}{136}
\DeclareTextComposite{\~}{\GRencoding@name}{a}{144}
\DeclareTextComposite{\DasiaOxia}{\GRencoding@name}{a}{137}
\DeclareTextComposite{\DasiaPerispomeni}{\GRencoding@name}{a}{145}
\DeclareTextComposite{\DasiaVaria}{\GRencoding@name}{a}{131}
\DeclareTextComposite{\PsiliOxia}{\GRencoding@name}{a}{138}
\DeclareTextComposite{\PsiliPerispomeni}{\GRencoding@name}{a}{146}
\DeclareTextComposite{\PsiliVaria}{\GRencoding@name}{a}{139}
\DeclareTextComposite{\`}{\GRencoding@name}{h}{152}
\DeclareTextComposite{\Dasia}{\GRencoding@name}{h}{153}
\DeclareTextComposite{\Psili}{\GRencoding@name}{h}{154}
\DeclareTextComposite{\DasiaVaria}{\GRencoding@name}{h}{163}
\DeclareTextComposite{\'}{\GRencoding@name}{h}{160}
\DeclareTextComposite{\DasiaOxia}{\GRencoding@name}{h}{161}
\DeclareTextComposite{\PsiliOxia}{\GRencoding@name}{h}{162}
\DeclareTextComposite{\PsiliVaria}{\GRencoding@name}{h}{171}
\DeclareTextComposite{\~}{\GRencoding@name}{h}{168}
\DeclareTextComposite{\DasiaPerispomeni}{\GRencoding@name}{h}{169}
\DeclareTextComposite{\PsiliPerispomeni}{\GRencoding@name}{h}{170}
\DeclareTextComposite{\`}{\GRencoding@name}{w}{176}
\DeclareTextComposite{\Dasia}{\GRencoding@name}{w}{177}
\DeclareTextComposite{\Psili}{\GRencoding@name}{w}{178}
\DeclareTextComposite{\DasiaVaria}{\GRencoding@name}{w}{179}
\DeclareTextComposite{\'}{\GRencoding@name}{w}{184}
\DeclareTextComposite{\DasiaOxia}{\GRencoding@name}{w}{185}
\DeclareTextComposite{\PsiliOxia}{\GRencoding@name}{w}{186}
\DeclareTextComposite{\PsiliVaria}{\GRencoding@name}{w}{187}
\DeclareTextComposite{\~}{\GRencoding@name}{w}{192}
\DeclareTextComposite{\DasiaPerispomeni}{\GRencoding@name}{w}{193}
\DeclareTextComposite{\PsiliPerispomeni}{\GRencoding@name}{w}{194}
\DeclareTextComposite{\`}{\GRencoding@name}{i}{200}
\DeclareTextComposite{\Dasia}{\GRencoding@name}{i}{201}
\DeclareTextComposite{\Psili}{\GRencoding@name}{i}{202}
\DeclareTextComposite{\DasiaVaria}{\GRencoding@name}{i}{203}
\DeclareTextComposite{\'}{\GRencoding@name}{i}{208}
\DeclareTextComposite{\DasiaOxia}{\GRencoding@name}{i}{209}
\DeclareTextComposite{\PsiliOxia}{\GRencoding@name}{i}{210}
\DeclareTextComposite{\PsiliVaria}{\GRencoding@name}{i}{211}
\DeclareTextComposite{\~}{\GRencoding@name}{i}{216}
\DeclareTextComposite{\DasiaPerispomeni}{\GRencoding@name}{i}{217}
\DeclareTextComposite{\PsiliPerispomeni}{\GRencoding@name}{i}{218}
\DeclareTextComposite{\"}{\GRencoding@name}{i}{240}
\DeclareTextComposite{\DialytikaVaria}{\GRencoding@name}{i}{241}
\DeclareTextComposite{\DialytikaTonos}{\GRencoding@name}{i}{242}
\DeclareTextComposite{\DialytikaPerispomeni}{\GRencoding@name}{i}{243}
\DeclareTextComposite{\`}{\GRencoding@name}{u}{204}
\DeclareTextComposite{\Dasia}{\GRencoding@name}{u}{205}
\DeclareTextComposite{\Psili}{\GRencoding@name}{u}{206}
\DeclareTextComposite{\DasiaVaria}{\GRencoding@name}{u}{207}
\DeclareTextComposite{\'}{\GRencoding@name}{u}{212}
\DeclareTextComposite{\DasiaOxia}{\GRencoding@name}{u}{213}
\DeclareTextComposite{\PsiliOxia}{\GRencoding@name}{u}{214}
\DeclareTextComposite{\PsiliVaria}{\GRencoding@name}{u}{215}
\DeclareTextComposite{\~}{\GRencoding@name}{u}{220}
\DeclareTextComposite{\DasiaPerispomeni}{\GRencoding@name}{u}{221}
\DeclareTextComposite{\PsiliPerispomeni}{\GRencoding@name}{u}{222}
\DeclareTextComposite{\"}{\GRencoding@name}{u}{244}
\DeclareTextComposite{\DialytikaVaria}{\GRencoding@name}{u}{245}
\DeclareTextComposite{\DialytikaTonos}{\GRencoding@name}{u}{246}
\DeclareTextComposite{\DialytikaPerispomeni}{\GRencoding@name}{u}{247}
\DeclareTextComposite{\`}{\GRencoding@name}{e}{224}
\DeclareTextComposite{\Dasia}{\GRencoding@name}{e}{225}
\DeclareTextComposite{\Psili}{\GRencoding@name}{e}{226}
\DeclareTextComposite{\DasiaVaria}{\GRencoding@name}{e}{227}
\DeclareTextComposite{\'}{\GRencoding@name}{e}{232}
\DeclareTextComposite{\DasiaOxia}{\GRencoding@name}{e}{233}
\DeclareTextComposite{\PsiliOxia}{\GRencoding@name}{e}{234}
\DeclareTextComposite{\PsiliVaria}{\GRencoding@name}{e}{235}
\DeclareTextComposite{\Dasia}{\GRencoding@name}{o}{229}
\DeclareTextComposite{\`}{\GRencoding@name}{o}{228}
\DeclareTextComposite{\Psili}{\GRencoding@name}{o}{230}
\DeclareTextComposite{\DasiaVaria}{\GRencoding@name}{o}{231}
\DeclareTextComposite{\'}{\GRencoding@name}{o}{236}
\DeclareTextComposite{\DasiaOxia}{\GRencoding@name}{o}{237}
\DeclareTextComposite{\PsiliOxia}{\GRencoding@name}{o}{238}
\DeclareTextComposite{\PsiliVaria}{\GRencoding@name}{o}{239}
\DeclareTextComposite{\Dasia}{\GRencoding@name}{r}{251}
\DeclareTextComposite{\Psili}{\GRencoding@name}{r}{252}

%    \end{macrocode}
% With capital letters the dialytika (diaeresis) is maintained on top of the letters
% `I' and `U', while for the other capital letters the diacritics are typeset in
% front of them, not on top of them, as it is customary with Greek typesetting best
% practice; the Unicode capital accented glyphs do exist, but they should never be
% used; the CB fonts don't even contain them. There is no concern with kerning
% because the diacritics preceding the capital letters are not preceded by something
% else; what follows is kerned the usual way. With \"I and \"U specific kernings are
% provided, if the dialytika macro |\"| is used, while kerning dith the dialytika
% ligature temporarily work with kludges that should not be present in any font, but
% the CB fonts have because the |AU| and |A'U| kerning was terrible without them;
% now, with Milde's macros and or the pre-existing |\Id| and |\Ud| macros, should
% not be of any concern.
%    \begin{macrocode}
\DeclareTextComposite{\"}{\GRencoding@name}{I}{219}
\DeclareTextComposite{\"}{\GRencoding@name}{U}{223}

% Greek Extended
\DeclareTextCompositeCommand{\Psili}{\GRencoding@name}{A}{>A}
\DeclareTextCompositeCommand{\Dasia}{\GRencoding@name}{A}{<A}
\DeclareTextCompositeCommand{\Perispomeni}{\GRencoding@name}{A}{A}
\DeclareTextCompositeCommand{\Varia}{\GRencoding@name}{A}{A}
\DeclareTextCompositeCommand{\Oxia}{\GRencoding@name}{A}{A}
\DeclareTextCompositeCommand{\PsiliVaria}{\GRencoding@name}{A}{>`A}
\DeclareTextCompositeCommand{\DasiaVaria}{\GRencoding@name}{A}{<`A}
\DeclareTextCompositeCommand{\PsiliOxia}{\GRencoding@name}{A}{>'A}
\DeclareTextCompositeCommand{\DasiaOxia}{\GRencoding@name}{A}{<'A}
\DeclareTextCompositeCommand{\PsiliPerispomeni}{\GRencoding@name}{A}{>\char126A}
\DeclareTextCompositeCommand{\DasiaPerispomeni}{\GRencoding@name}{A}{<\char126A}
\DeclareTextCompositeCommand{\>}{\GRencoding@name}{A}{>A}
\DeclareTextCompositeCommand{\<}{\GRencoding@name}{A}{<A}

\DeclareTextCompositeCommand{\Psili}{\GRencoding@name}{E}{>E}
\DeclareTextCompositeCommand{\Dasia}{\GRencoding@name}{E}{<E}
\DeclareTextCompositeCommand{\Varia}{\GRencoding@name}{E}{E}
\DeclareTextCompositeCommand{\Oxia}{\GRencoding@name}{E}{E}
\DeclareTextCompositeCommand{\PsiliVaria}{\GRencoding@name}{E}{>`E}
\DeclareTextCompositeCommand{\DasiaVaria}{\GRencoding@name}{E}{<`E}
\DeclareTextCompositeCommand{\PsiliOxia}{\GRencoding@name}{E}{>'E}
\DeclareTextCompositeCommand{\DasiaOxia}{\GRencoding@name}{E}{<'E}
\DeclareTextCompositeCommand{\>}{\GRencoding@name}{E}{>E}
\DeclareTextCompositeCommand{\<}{\GRencoding@name}{E}{<E}

\DeclareTextCompositeCommand{\Psili}{\GRencoding@name}{H}{>H}
\DeclareTextCompositeCommand{\Dasia}{\GRencoding@name}{H}{<H}
\DeclareTextCompositeCommand{\Perispomeni}{\GRencoding@name}{H}{H}
\DeclareTextCompositeCommand{\Varia}{\GRencoding@name}{H}{H}
\DeclareTextCompositeCommand{\Oxia}{\GRencoding@name}{H}{H}
\DeclareTextCompositeCommand{\PsiliVaria}{\GRencoding@name}{H}{>`H}
\DeclareTextCompositeCommand{\DasiaVaria}{\GRencoding@name}{H}{<`H}
\DeclareTextCompositeCommand{\PsiliOxia}{\GRencoding@name}{H}{>'H}
\DeclareTextCompositeCommand{\DasiaOxia}{\GRencoding@name}{H}{<'H}
\DeclareTextCompositeCommand{\PsiliPerispomeni}{\GRencoding@name}{H}{>\char126H}
\DeclareTextCompositeCommand{\DasiaPerispomeni}{\GRencoding@name}{H}{<\char126H}
\DeclareTextCompositeCommand{\>}{\GRencoding@name}{H}{>H}
\DeclareTextCompositeCommand{\<}{\GRencoding@name}{H}{<H}

\DeclareTextCompositeCommand{\Psili}{\GRencoding@name}{I}{>I}
\DeclareTextCompositeCommand{\Dasia}{\GRencoding@name}{I}{<I}
\DeclareTextCompositeCommand{\Perispomeni}{\GRencoding@name}{I}{I}
\DeclareTextCompositeCommand{\Varia}{\GRencoding@name}{I}{I}
\DeclareTextCompositeCommand{\Oxia}{\GRencoding@name}{I}{I}
\DeclareTextCompositeCommand{\PsiliVaria}{\GRencoding@name}{I}{>`I}
\DeclareTextCompositeCommand{\DasiaVaria}{\GRencoding@name}{I}{<`I}
\DeclareTextCompositeCommand{\PsiliOxia}{\GRencoding@name}{I}{>'I}
\DeclareTextCompositeCommand{\DasiaOxia}{\GRencoding@name}{I}{<'I}
\DeclareTextCompositeCommand{\PsiliPerispomeni}{\GRencoding@name}{I}{>\char126I}
\DeclareTextCompositeCommand{\DasiaPerispomeni}{\GRencoding@name}{I}{<\char126I}
\DeclareTextCompositeCommand{\>}{\GRencoding@name}{I}{>I}
\DeclareTextCompositeCommand{\<}{\GRencoding@name}{I}{<I}

\DeclareTextCompositeCommand{\Psili}{\GRencoding@name}{O}{>O}
\DeclareTextCompositeCommand{\Dasia}{\GRencoding@name}{O}{<O}
\DeclareTextCompositeCommand{\Varia}{\GRencoding@name}{O}{O}
\DeclareTextCompositeCommand{\Oxia}{\GRencoding@name}{O}{O}
\DeclareTextCompositeCommand{\PsiliVaria}{\GRencoding@name}{O}{>`O}
\DeclareTextCompositeCommand{\DasiaVaria}{\GRencoding@name}{O}{<`O}
\DeclareTextCompositeCommand{\PsiliOxia}{\GRencoding@name}{O}{>'O}
\DeclareTextCompositeCommand{\DasiaOxia}{\GRencoding@name}{O}{<'O}
\DeclareTextCompositeCommand{\>}{\GRencoding@name}{O}{>O}
\DeclareTextCompositeCommand{\<}{\GRencoding@name}{O}{<O}

\DeclareTextCompositeCommand{\Dasia}{\GRencoding@name}{U}{<U}
\DeclareTextCompositeCommand{\DasiaVaria}{\GRencoding@name}{U}{<`U}
\DeclareTextCompositeCommand{\Perispomeni}{\GRencoding@name}{U}{U}
\DeclareTextCompositeCommand{\Varia}{\GRencoding@name}{U}{U}
\DeclareTextCompositeCommand{\Oxia}{\GRencoding@name}{U}{U}
\DeclareTextCompositeCommand{\DasiaOxia}{\GRencoding@name}{U}{<'U}
\DeclareTextCompositeCommand{\DasiaPerispomeni}{\GRencoding@name}{U}{<\char126U}
\DeclareTextCompositeCommand{\<}{\GRencoding@name}{U}{<U}

\DeclareTextCompositeCommand{\Psili}{\GRencoding@name}{W}{>W}
\DeclareTextCompositeCommand{\Dasia}{\GRencoding@name}{W}{<W}
\DeclareTextCompositeCommand{\Perispomeni}{\GRencoding@name}{W}{W}
\DeclareTextCompositeCommand{\Varia}{\GRencoding@name}{W}{W}
\DeclareTextCompositeCommand{\Oxia}{\GRencoding@name}{W}{W}
\DeclareTextCompositeCommand{\PsiliVaria}{\GRencoding@name}{W}{>`W}
\DeclareTextCompositeCommand{\DasiaVaria}{\GRencoding@name}{W}{<`W}
\DeclareTextCompositeCommand{\PsiliOxia}{\GRencoding@name}{W}{>'W}
\DeclareTextCompositeCommand{\DasiaOxia}{\GRencoding@name}{W}{<'W}
\DeclareTextCompositeCommand{\PsiliPerispomeni}{\GRencoding@name}{W}{>\char126W}
\DeclareTextCompositeCommand{\DasiaPerispomeni}{\GRencoding@name}{W}{<\char126W}
\DeclareTextCompositeCommand{\>}{\GRencoding@name}{W}{>W}
\DeclareTextCompositeCommand{\<}{\GRencoding@name}{W}{<W}
%</defs>
%    \end{macrocode}
% \Finale
\endinput
