summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/source
diff options
context:
space:
mode:
Diffstat (limited to 'Master/texmf-dist/source')
-rw-r--r--Master/texmf-dist/source/latex/teubner/teubner.dtx2732
-rw-r--r--Master/texmf-dist/source/latex/teubner/teubner.ins70
2 files changed, 2802 insertions, 0 deletions
diff --git a/Master/texmf-dist/source/latex/teubner/teubner.dtx b/Master/texmf-dist/source/latex/teubner/teubner.dtx
new file mode 100644
index 00000000000..1b589ce8849
--- /dev/null
+++ b/Master/texmf-dist/source/latex/teubner/teubner.dtx
@@ -0,0 +1,2732 @@
+% \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}
+%</dtx>
+%<package>\NeedsTeXFormat{LaTeX2e}
+%<package>\ProvidesPackage{teubner}
+%<driver>\ProvidesFile{teubner.dtx}
+ [2004/09/14 v.2.2b 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.beccari@polito.it}\\Politecnico di Torino}
+ \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}}}
+\begin{document}
+ \maketitle
+ \DocInput{teubner.dtx}
+\end{document}
+%</driver>
+% \fi
+%
+% \CheckSum{4005}
+%
+% \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 the \TeX-Live CD; 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 mark 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, while the metric symbols font is
+% included in this bundle; it does not need a formal font definition file, because
+% the necessary definitions are included in this package.
+%
+% 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.
+%
+% \DescribeEnv{versi}\DescribeMacro{\verso} The environment \texttt{versi}
+% is used to typeset verses
+% in line, without an 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} is similar to the
+% standard \LaTeX\ environment \texttt{verse}, except verses 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} 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.
+%
+% \StopEventually{}
+%
+% \section{Code}
+% 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 is necessary because apparently the
+% pfb math extensible 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 appears a little too fat and does not join exactly le left mark. Therefore we
+% define a new boolean\footnote{Thanks to Yuqing Deng who spotted an error somewhere else,
+% that followed from an improper definition of the state variable \texttt{\string\ifPDF} such
+% that the program performed correctly under \texttt{pdflatex} and crashed under \texttt{latex}.}:
+% \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{vowel}\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.
+% At the same time since all accent combinations are defined as ``text commands'', in \LaTeX\ jargon,
+% when their commands are followed by a vowel they define a ``text symbol'' that is directly the
+% glyph of the accented vowel; 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.
+% \begin{macrocode}
+\newif\ifor\orfalse % Compatibility with older versions
+\DeclareOption{or}{\relax}
+\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 substituted with the Lipsian ones; this simply requires to reenter the
+% shape definition commands used in the font description file with new commands
+% that refer to the Lipsian fonts; the font encoding is already known to the package
+% so that any encoding dependent name is correctly defined:
+% \begin{macrocode}
+\input{lgrcmr.fd}
+\expandafter\EC@family\expandafter{\GRencoding@name}{cmr}{m}{it} {grml}
+\expandafter\EC@family\expandafter{\GRencoding@name}{cmr}{bx}{it} {grxl}
+% \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}
+\DeclareFontShape{U}{mtr}{m}{it}{<->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}
+%\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:
+% \begin{macrocode}
+\AtBeginDocument{%
+ \edef\previouslanguage{\languagename}%
+ \edef\previousencoding{\f@encoding}%
+}
+% \end{macrocode}
+% Nevertheless 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 o resets font definitions,
+% in particular if font encoding is defined; 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\dots, well, unless you are going to write
+% all your document in Greek; in this case the only switching you need is between
+% Didot characters and Lipsian characters (which is simply done by means of |\upshape|
+% and |\itshape|); in any case specify the polytonic spelling.
+%\end{macro}
+%\end{macro}
+%
+%\begin{macro}{\Lipsiakostext} |\Lipsiakostext| is a 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\Lipsiakostext{\edef\previouslanguage{\languagename}%
+ \edef\previousencoding{\f@encoding}%
+ \expandafter\select@language\expandafter{\GreekName}%
+ \let\~\GRcirc\let~\greek@tilde\itshape}
+% \end{macrocode}
+%\end{macro}
+%\begin{macro}{\NoLipsiakostext} |\NoLipsiakostext| is the opposite declaration
+% that undoes everything that was done with |\Lipsiakostext|.
+% \begin{macrocode}
+\DeclareRobustCommand\NoLipsiakostext{%
+ \expandafter\select@language\expandafter{\previouslanguage}%
+ \expandafter\fontencoding\expandafter{\previousencoding}\upshape
+ \edef\previouslanguage{\languagename}%
+ \edef\previousencoding{\f@encoding}\bbl@activate{~}%
+}
+% \end{macrocode}
+%\end{macro}
+%\begin{macro}{\textLipsias} |\textLipsias| is a command that typesets its argument
+% with the |\Lipsiakostext| declaration in force; actually the external font encoding
+% and language are not memorized, because the pertinent Greek commands are just local.
+% \begin{macrocode}
+\DeclareRobustCommand\textLipsias[1]{{%
+ \expandafter\select@language\expandafter{\GreekName}%
+ \expandafter\fontencoding\expandafter{\GRencoding@name}%
+ \itshape\let\~\GRcirc\let~\greek@tilde#1}%
+}
+% \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}%
+ \expandafter\fontencoding\expandafter{\GRencoding@name}%
+ \upshape\let\~\GRcirc\let~\greek@tilde#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.
+% \begin{macrocode}
+\DeclareRobustCommand\textlatin[1]{\edef\externalencoding{\f@encoding}{%
+ \expandafter\select@language\expandafter{\previouslanguage}%
+ \expandafter\fontencoding\expandafter{\previousencoding}%
+ \bbl@activate{~}\upshape#1}%
+ \expandafter\fontencoding\expandafter{\externalencoding}\selectfont}
+% \end{macrocode}
+%\end{macro}
+%
+% Now we start the specific additions introduced with this package.
+%
+% \begin{macro}{\numero}
+% We define a short macro |\numero| used to strip off the pt part of a dimension value
+% as displayed by \TeX\ itself; this service macro is going to be used quite a lot for
+% getting the font slant per point parameter so as to be able to put in their correct
+% position various signs over or under other signs.
+% \begin{macrocode}
+{%
+\catcode`p=12\catcode`t=12\gdef\numero#1pt{#1}%
+}
+% \end{macrocode}
+% \end{macro}
+%
+% 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.
+% \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@{\expandafter\numero\the\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@{\expandafter\numero\the\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@{\expandafter\numero\the\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@{\expandafter\numero\the\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 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 other encodings.
+% \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@ .6\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 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@{\expandafter\numero\the\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@ .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 % mette un tie sotto l'argomento
+{\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}
+% All these accent like and cedilla like macros will be extensively used in the following
+% definitions.
+% \begin{macrocode}
+% grave
+\DeclareTextCommand{\`}{\GRencoding@name}[1]{\lift@accent{96}{#1}}
+% acute
+\DeclareTextCommand{\'}{\GRencoding@name}[1]{\lift@accent{39}{#1}}
+% circumflex
+\DeclareTextCommand{\GRcirc}{\GRencoding@name}[1]{\lift@accent{126}{#1}}
+\DeclareTextCommand{\~}{\GRencoding@name}[1]{\lift@accent{126}{#1}}
+% \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 ``big 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|; 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. 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}
+%
+% \begin{macro}{\greekquoteleft}
+%\begin{macro}{\greekquoteleft}
+%\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 letter, 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 happen all the time!).
+% \begin{macrocode}
+\DeclareTextSymbol{\greekquoteleft}{\GRencoding@name}{123}
+\DeclareTextSymbol{\greekquoteright}{\GRencoding@name}{125}
+\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}
+%
+%\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
+% \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}
+%
+% Now come the 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.
+% \begin{macrocode}
+\DeclareTextSymbol{\ag}{\GRencoding@name}{128}
+\DeclareTextComposite{\`}{\GRencoding@name}{a}{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}
+\DeclareTextComposite{\'}{\GRencoding@name}{a}{136}
+\DeclareTextSymbol{\ac}{\GRencoding@name}{144}
+\DeclareTextComposite{\~}{\GRencoding@name}{a}{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}
+\DeclareTextComposite{\`}{\GRencoding@name}{h}{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}
+\DeclareTextComposite{\'}{\GRencoding@name}{h}{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}
+\DeclareTextComposite{\~}{\GRencoding@name}{h}{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}
+\DeclareTextComposite{\`}{\GRencoding@name}{w}{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}
+\DeclareTextComposite{\'}{\GRencoding@name}{w}{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}
+\DeclareTextComposite{\~}{\GRencoding@name}{w}{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}
+\DeclareTextComposite{\`}{\GRencoding@name}{i}{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}
+\DeclareTextComposite{\'}{\GRencoding@name}{i}{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}
+\DeclareTextComposite{\~}{\GRencoding@name}{i}{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}
+\DeclareTextComposite{\"}{\GRencoding@name}{i}{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}
+\DeclareTextComposite{\`}{\GRencoding@name}{u}{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}
+\DeclareTextComposite{\'}{\GRencoding@name}{u}{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}
+\DeclareTextComposite{\~}{\GRencoding@name}{u}{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}
+\DeclareTextComposite{\"}{\GRencoding@name}{u}{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}
+\DeclareTextComposite{\`}{\GRencoding@name}{e}{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}
+\DeclareTextComposite{\'}{\GRencoding@name}{e}{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}
+\DeclareTextComposite{\`}{\GRencoding@name}{o}{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}
+\DeclareTextComposite{\'}{\GRencoding@name}{o}{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}
+\DeclareTextComposite{\"}{\GRencoding@name}{I}{219}
+\DeclareTextSymbol{\Ud}{\GRencoding@name}{223}
+\DeclareTextComposite{\"}{\GRencoding@name}{U}{223}
+%
+% \end{macrocode}
+%
+% 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.
+% \begin{macrocode}
+\DeclareTextSymbol{\f}{\GRencoding@name}{147}
+\@ifpackageloaded{amssymb}{\let\AMSdigamma\digamma\def\digamma{\textormath{\f}{\AMSdigamma}}}{\let\digamma\f}
+\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 if 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 fare 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<}%subst. \hskip with \kern
+ {\!\!#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}
+%
+%\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
+% remains 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}
+%
+% \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 is changed behind the scenes without any intervention by the
+% typesetter.
+% \begin{macrocode}
+\DeclareTextSymbol{\sva}{\GRencoding@name}{26}
+\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@{\expandafter\numero\the\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 other kernings
+% are 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 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; but as mentioned before we
+% introduce a correction in case we are typesetting with pdf\LaTeX, because the
+% pfb extensible math fonts, from wich the curved extremities are taken from, apparently
+% do not have the actual dimension declared in the tmf files.
+% \begin{macrocode}
+\def\upfill{$\m@th \scriptstyle\setbox\z@\hbox{$\scriptstyle\bracelu$}%
+ \kern.16ex\bracelu\ifPDF\kern-.15ex\fi
+ \leaders\vrule \@height\ifPDF.85\fi\ht\z@ \@depth\z@\hfill
+ \braceru\kern.16ex$}
+% \end{macrocode}
+%\end{macro}
+%\begin{macro}{\downfill} The down fill arc is totally similar to the up fill one, except
+% for its terminating elements that change the shape of the arc from ``up'' to ``down''; we
+% introduce the same correction as in |\upfill| for the same reasons.
+% \begin{macrocode}
+\def\downfill{$\m@th\scriptstyle\setbox\z@\hbox{$\scriptstyle\braceld$}%
+ \kern.16ex\braceld\ifPDF\kern-.15ex\fi
+ \leaders\vrule \@height\ifPDF.85\fi\ht\z@ \@depth\z@\hfill
+ \bracerd\kern.16ex$}
+% \end{macrocode}
+%\end{macro}
+% With both macros we could have edited the pfb files, but this would have required
+% to distribute the corrected |cmex10.pfb| file together with the bundle, causing possible users
+% to mess up their map of PostScript fonts. Of course the chosen solution has the
+% opposite draw back: when and if the corrected pfb files will be distributed with each
+% more or less complete \TeX\ bundle, then this file will require to be corrected again. But
+% this is simple because it suffices to eliminate the whole |\ifPFB| business.
+%
+%\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{\expandafter\numero\the\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.
+% \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{\expandafter\numero\the\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{\expandafter\numero\the\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}The same line of reasoning leads us to define two different
+% commands for marking nexus relationships; since such commands are not synonymous
+% we had to use the Latin and (arbitrarily) the Italian name to distinguish them.
+% The difference is that |\nesso| covers the nexus with a leader made of ``Latin''
+% circumflex signs (hats), while |\nexus| covers the nexus with a stretchable trapeze.
+% \begin{macrocode}
+\newcommand*{\nexus}[1]{{\setbox\tw@\hbox{#1}%
+ \edef\slant@{\expandafter\numero\the\fontdimen1\font}%
+ \@tempdima=\slant@\ht\tw@\advance\@tempdima.45ex
+ \setbox4\hbox to\wd\tw@{\hss\nexusfill\hss}
+ \vbox{\ialign{##\crcr%
+ \kern\@tempdima\box4
+ \crcr
+ \noalign{\kern.15ex\nointerlineskip}%
+ \hfil{#1}\hfil\crcr}}}}
+\newcommand*\nesso[1]{{\setbox\tw@\hbox{#1}%
+ \edef\slant@{\expandafter\numero\the\fontdimen1\font}%
+ \@tempdima=\slant@\ht\tw@\advance\@tempdima.9ex
+ \ifdim\wd\tw@<1ex
+ \setbox4\hbox{\metricsfont\kern-.5ex\Hat}%
+ \else
+ \setbox4\hbox to\wd\tw@{\hss\nexfill\hss}%
+ \fi
+ \vbox{\ialign{##\crcr%
+ \kern\@tempdima\box4
+ \crcr
+ \noalign{\kern.15ex\nointerlineskip}%
+ \hfil\box\tw@\hfil\crcr}}}}
+% \end{macrocode}
+%\end{macro}
+%\end{macro}
+%\begin{macro}{\nexfill}
+%\begin {macro}{\nexusfill}|\nexfill| is a leader made up of ``Latin'' circumflex
+% signs; since the sign has a special meaning in mathematics, the definition
+% of |\nexfill| requires the temporary change of the circumflex catcode. The
+% command |\nexus|, on the opposite, requires another leader definition that
+% contains the oblique sides of the trapeze. The latter were defined as glyphs
+% in the Greek fonts. |\nexus| is supposed to be used \emph{only} while
+% typesetting Greek text or poetry.
+% \begin{macrocode}
+{\catcode`\^=12\relax\global\chardef\Hat`\^
+\gdef\nexfill{{\metricsfont\leaders\hbox{^}\hfill}}}
+%
+\newdimen\Uunit
+\def\nexusfill{\setbox\z@\hbox{\char16}%
+ \Uunit=0.83333\p@
+ \kern.16ex\char16\kern-.08ex
+ \leaders\vrule\@height\z@\@depth\Uunit\hfill
+ \kern.08ex\char17\kern.16ex}
+% \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 ere 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}
+%
+%\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) represent
+% the unit symbols of some coins of ancient Greece, as they were found on many
+% ``ostraka'' in many 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}
+%
+%\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 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@{\expandafter\numero\the\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@{\expandafter\numero\the\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@{\expandafter\numero\the\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|. We do not remember why we defined a whole command, instead
+% of just |\let|ting the new control sequence be a synonym for the existing
+% one.
+% \begin{macrocode}
+\newcommand*{\OSN}[1]{\oldstylenums{#1}}
+% \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@{\expandafter\numero\the\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@{\expandafter\numero\the\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@{\expandafter\numero\the\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}
+
+%
+%\begin {macro}{\verso}
+%\begin{environment}{versi} Here we start with verse environments; we already explained
+% we defined three new verse environments that typeset verses 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}
+%%%%%%%%%%%%%%%%%%%%%%%%%% verse environments
+\newcounter{verso}\setcounter{verso}{0}
+\newcommand{\smallvert}{\vrule\@height1ex}
+% \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}%
+ \ensuremath{\mathop{\smallvert}\limits^{\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}
+\list{}{\settowidth\labelwidth{#1}\leftmargin\labelwidth
+ \advance\leftmargin\labelsep}%
+}{%
+\endlist
+}
+% \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}
+% 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.
+%\end{macro}
+%\end{macro}
+% \begin{macrocode}
+ \def\writ@verso{%
+ \count255=\value{verso}\divide\count255by5\relax
+ \multiply\count255by5\relax
+ \advance\count255-\value{verso}%
+ \ifnum\count255=\z@
+ {\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
+}
+% \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 keep 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
+ {\small\expandafter\oldstylenums\expandafter{\the\c@verso}}%
+ \else
+ \empty
+ \fi}%
+ \NoSubVerso
+ \def\writ@subverso{%
+ \ifSubVerso
+ {\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
+}
+% \end{macrocode}
+%\end{environment}
+%
+% Now we start defining many things 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
+% changes 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 wile writing down complicated metric sequences.
+% Macro|\X| may be considered, thanks to its shape, a 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\"{\i}f 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\"{\i}f user then can 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}
+%
+%\begin{macro}{\TRON}
+%\begin{macro}{\GTRON}
+%\begin{macro}{\TROF}
+%\begin{macro}{\GTROF} 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 the
+% file gets very large.
+% \begin{macrocode}
+\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}
+%
+% 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 of converting 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}} % keep the 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 end 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
+% the 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 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 the 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}
+% \begin{macrocode}
+%</package>
+% \end{macrocode}
+%
+% \Finale
+\endinput
diff --git a/Master/texmf-dist/source/latex/teubner/teubner.ins b/Master/texmf-dist/source/latex/teubner/teubner.ins
new file mode 100644
index 00000000000..e603e76d863
--- /dev/null
+++ b/Master/texmf-dist/source/latex/teubner/teubner.ins
@@ -0,0 +1,70 @@
+%%
+%% This file generates file teubner.sty from file teubner.dtx by means
+%% of the LaTeX program docstrip. This program eliminates almost all
+%% commented lines thus speeding up the loading of the code. Documentation
+%% may be obtained by running LaTeX on the source file teubner.dtx.
+%%
+%%
+%% ----------------------------------------
+%%
+%% This system is distributed in the hope that it will be useful,
+%% but WITHOUT ANY WARRANTY; without even the implied warranty of
+%% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+%%
+%% IMPORTANT NOTICE:
+%%
+%% Copyright 2001-2003 Claudio Beccari
+%% All rights reserved.
+%%
+%% Permission is granted to distribute verbatim copies of this file
+%% together with teubner.dtx.
+%%
+%% No other permissions to copy or distribute this file in any form
+%% are granted and in particular no permission to modify its contents.
+%%
+%% --------------- start of docstrip commands ------------------
+%%
+\def\batchfile{teubner.ins}
+\input docstrip.tex
+\preamble
+
+Copyright 2001--2004 Claudio Beccari All rights reserved.
+
+ This system is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+
+
+IMPORTANT NOTICE:
+
+You are not allowed to change this file.
+
+You are allowed to distribute this file under the condition that it is
+specified in the source file teubner.dtx.
+
+If you receive only some of these files from someone, complain!
+
+You are NOT ALLOWED to distribute this file alone. You are NOT
+ALLOWED to take money for the distribution or use of either this
+file or a changed version, except for a nominal charge for copying
+etc.
+\endpreamble
+\def\batchfile{teubner.dst} % ignored in distribution
+\input docstrip.tex % ignored in distribution
+
+\keepsilent
+
+\Msg{*** Generating the extension package teubner.sty ***}
+
+\generateFile{teubner.sty}{t}{\from{teubner.dtx}{package}}
+
+\ifToplevel{
+\Msg{***********************************************************}
+\Msg{*}
+\Msg{* Now move teubner.sty where LaTeX can find it }
+\Msg{*}
+\Msg{* Happy TeXing!}
+\Msg{***********************************************************}
+}
+
+\endinput