% \iffalse meta-comment
%
% metre.dtx
% Copyright 2000 2001 Gianfranco Boggio-Togna
% 
% This program may be distributed and/or modified under the
% conditions of the LaTeX Project Public License, either version~1.2
% of this license or (at your option) any later version.
% The latest version of this license is in
% http://www.latex-project.org/lppl.txt
% and version 1.2 or later is part of all distributions of LaTeX  
% version 1999/12/01 or later.
%
% This program consists of the files metre.dtx and metre.ins
%
%<*driver>
\documentclass[11pt]{ltxdoc}
\setlength{\parindent}{0pt}
\setlength{\parskip}{\medskipamount}
\usepackage{metre}
\MakeShortVerb{|}
\def\M@yields{ yields\kern .15em\relax}
%\EnableCrossrefs
%\CodelineIndex
\DisableCrossrefs
% To get the documented source of the package, comment out
% the next line and uncomment the following one.
\OnlyDescription
%\AlsoImplementation
\begin{document}
  \renewcommand{\IndexMin}{100ex}
  \setcounter{IndexColumns}{2}
  \renewcommand{\usage}[1]{#1}
  \IndexPrologue{\section{Index of commands} The index does not include %
   the commands listed on pp. \pageref{metsym} and \pageref{accsym}}
  \DocInput{metre.dtx}
  \PrintIndex
\end{document}
%</driver>
%
% \fi
%
% \CheckSum{5562}
%
% \title{{\LARGE\tt metre.sty}\\
%         A \LaTeX{} package for classicists\\
%         {\small Version 1.0\ \ (2001/12/05)}\\}
% \author{Gianfranco Boggio\,--Togna
%         \thanks{Author's address: C.P. 14021, I-20140 Milano}\\
%         \textsl{gbt\kern .08em @\kern .1em acm.org}}
% \date{}
% \maketitle
% \vspace{-2ex}
% \begin{center}
% \begin{minipage}{.7\linewidth}
% \small\it
% \begin{center}
% Questo piccolo lavoro \`e dedicato ai\\
% miei insegnanti di greco e latino del\\
% Liceo Ginnasio `Girolamo Rossi' di Ventimiglia.
% \end{center}
% \end{minipage}
% \end{center}
% \vspace{2ex}
% \section*{License}
% \noindent \copyright\ Copyright 2000 2001 Gianfranco Boggio\,--Togna.\par
% This program may be distributed and/or modified under the
% conditions of the \LaTeX{} Project Public License, either version~1.2
% of this license or (at your option) any later version.
% The latest version of this license is in
% \texttt{http://www.latex-project.org/lppl.txt}
% and version 1.2 or later is part of all distributions of \LaTeX{} 
% version 1999/12/01 or later.\par
% This program consists of the files \texttt{metre.dtx} and 
% \texttt{metre.ins}.
% \section*{Acknowledgement}
% The author wishes to thank Dr.~Rainer Thiel of
% Philipps--Universit\"at, Marburg, for providing him with
% much material and expert advice on the \textit{arcana}
% of classical philology.  Without Dr.~Thiel's
% assistance, the package would never have seen
% the light of day.
%
% \newpage
%
% \section*{Introduction}
%
% The package provides classicists with some of the tools that are needed
% for typesetting scholarly publications dealing with Greek and Latin
% texts, with special emphasis on Greek verse.
%
% As the name suggests, the core of the package is a comprehensive set of
% commands for generating metrical schemes and for placing prosodical marks
% on text set in the Latin or the Greek alphabet.
%
% The rest of the package provides a miscellany of commands for symbols
% (most of them not directly related to metre) that are often used
% in critical editions of classical texts.
%
% The package does not require any special font: all symbols are taken
% from the Computer Modern OT1 fonts (included in all distributions of
% \TeX) or are generated by means of \TeX{} primitives.
%
% \section*{Notation}
%
% The notation used for quantities that can appear as command arguments
% is that of \textit{The \TeX{}book}:
% \begin{tabbing}
% mmmm\=mmmmmmm\=\kill
% \>\meta{dimen}\>a legitimate \TeX{} dimension.\\ 
% \>\meta{number}\>a (signed) integer.\\
% \>\meta{factor}\>a (signed) decimal constant.\\
% \end{tabbing}
%
% Many commands accept an \meta{optional argument} that can be used 
% to modify the effect of the command. The \meta{optional argument}
% is specified according to the usual \LaTeX{} conventions: within
% square brackets, after the command name.
% \newpage
% \tableofcontents
%
% \newpage
%
% \section{Package option\label{option}}
% 
% The package has one option, which can be specified in the usual way
% within square brackets (e.g.~|\usepackage[en]{metre}|). The option
% determines the vertical placement of the metrical symbols generated
% by |\metra|.
% 
% The default style is the one that is commonly used in Germany
% (and universally in Italy). The base of the metrical symbols is aligned
% with the baseline of the surrounding text and composite symbols are
% built upwards from the baseline: \metra{\m\b\bm\mb\bbm}.
% 
% The |en|\footnote{%
% |En| selects the same style as |en| with one difference:
% the \textit{macron} in \metra{\bbmb} is placed on the horizontal axis 
% \metra[\ms{En}]{\m\bbmb\m}\,, while the |[en]| option puts the  
% \textit{breve} on the axis \metra[\ms{en}]{\m\bbmb\m}\,.}
% option selects an alternative style which is usual in  English typography
% (for instance, in books published by Oxford University Press).
% The horizontal axis of the metrical symbols is aligned with the axis of
% characters such as |=| in the surrounding text and symbols, whether
% simple or composite, are roughly symmetrical with respect to the
% axis: \metra[\ms{en}]{\m\b\bm\mb\bbm}.
% 
% You can change the style \label{style} at any time with the  
% |\MetraStyle| command (see sect.~\ref{metrastyle}).
%
% \newpage
%
% \section{Metrical notation}
%
% \subsection{The \texttt{\protect\bslash metra} command}
%
% \subsubsection{Metrical symbols\label{metra}}
%
% The |\metra| \DescribeMacro{\metra} command takes one argument and
% generates the metrical scheme defined by the commands given within the
% argument.
%
% The list of metrical symbols and corresponding commands is on page
% \pageref{metsym}; it includes all the symbols (marked [\textit{W}] in
% the table) used by M.\,L.~West in \textit{Greek Metre} (Oxford, 1982).
% The commands for metrical symbols are defined only within the argument
% of |\metra| and are not available outside it.  The text typeset by
% |\metra| is never split across lines; if it does not fit within the line,
% \TeX{} gives an |Overfull box| message.
%
% The |\r|, |\R|, |\t| and |\T| commands take an \meta{optional argument},
% a \meta{factor} which is multiplied by the |ex| value for the font in use
% for the metrical symbols; the result is the amount by which the symbol
% is raised (\meta{factor} $> 0$) or lowered (\meta{factor} $< 0$).
% 
% The metrical symbols are separated by a short space, whose size may be set
% with the |\InterSigna| command (see sect. \ref{intersigna}). To generate a
% larger space (typically between feet) use the |\s| \DescribeMacro{\s}
% command; you can modify the size of the space generated by |\s| with the
% |\InterPedes| command (see sect.~\ref{interpedes}). You can also use the
% standard \TeX{} and \LaTeX{} commands  for horizontal spacing.
%
% The |\v| \DescribeMacro{\v} command inserts a comma.
%
% \subsubsection{Placing marks on symbols}
% 
% The |\'| \DescribeMacro{\'} and |\`| commands place an accent (respectively
% acute or grave) over the metrical symbol which follows: |\'\m|\M@yields 
% \metra{\'\m}\,, |\`\m| \DescribeMacro{\`}\M@yields \metra{\`\m}\,.
% Both commands accept an \meta{optional argument}, a \meta{factor} which
% specifies the displacement of the accent to the right, as a fraction of
% the width of the symbol. The default value (.5) places the accent over the
% midpoint of the symbol: |\'[.25]\bb|\M@yields \metra{\'[.25]\bb}, 
% |\'\bb|\M@yields \metra{\'\bb}, |\'[.75]\bb|\M@yields \metra{\'[.75]\bb}.
% For convenience, a set of commands (see page \pageref{accsym}) is provided
% for generating the most common combinations of accents and symbols.
% 
% The |\k| \DescribeMacro{\k} command places the symbol for \textit{catalexis}
% under the symbol which follows: |\k\m|\M@yields \metra{\k\m}\,,
% |\k\bm|\M@yields \metra{\k\bm}\,.  The |\K| \DescribeMacro{\K} command
% generates a slightly larger symbol:  |\K\m|\M@yields \metra{\K\m}\,,
% |\K\bm|\M@yields \metra{\K\bm}\,.
% 
% The |\q| \DescribeMacro{\q} command encloses the argument in some kind of
% \textit{``quotation marks''}; the type of mark used is selected by
% the character that follows the command.
% The |\Q| \DescribeMacro{\Q} command generates slightly larger marks.\par
% \vspace{2ex}
% \tabskip 4em plus 4em minus 2em%
% \halign to \hsize{%
% \hfill#\hfill\tabskip 1em plus 1em&\hfill#\hfill
%   \tabskip 4em plus 4em minus 2em\cr
% \it Type&\it to get\cr
% \noalign{\smallskip}
% |\q(\bbm|&\metra{\q(\bbm}\cr
% |\Q(\bbm|&\metra{\Q(\bbm}\cr
% |\q'\bbm|&\metra{\q'\bbm}\cr
% |\Q'\bbm|&\metra{\Q'\bbm}\cr
% |\q"\bbm|&\metra{\q"\bbm}\cr
% |\Q"\bbm|&\metra{\Q"\bbm}\cr
% |\q!\bbm|&\metra{\q!\bbm}\cr
% |\Q!\bbm|&\metra{\Q!\bbm}\cr
% |\q<\bbm|&\metra{\q<\bbm}\cr
% |\Q<\bbm|&\metra{\Q<\bbm}\cr
% }
% 
% The |\d| \DescribeMacro{\d} command places the symbol for \textit{caesura}
% at the middle point of the symbol which follows: |\d\mbb|\M@yields
% \metra{\d\mbb}\,,  |\d\bbm|\M@yields \metra{\d\bbm}\,.
% 
% The |\S| \DescribeMacro{\S} command has one argument: a sequence of
% characters, which is raised from the baseline by 1.25 times
% the \texttt{ex} value for the font in use for the metrical symbols
% and set in a smaller size: |\C\S{H}|\M@yields \metra{\C\S{H}}. You can
% change the amount by which the argument is raised by specifying an
% \meta{optional argument}. The argument is a \meta{factor} which is
% multiplied by the \texttt{ex} value for the font in use for the metrical
% symbols; the result is added to the default value. |\S[-.3]?\mb| \M@yields
% \metra{\S[-.3]?\mb}, |\bm\S[-.3]?| \M@yields \metra{\bm\S[-.3]?}.
% 
% \subsubsection{Placing annotations on symbols}\label{annot}
% 
% The |\n| \DescribeMacro{\n} command has two arguments: the first is the
% text to be placed over a symbol; the second is the command for the symbol.
% The |\ni| \DescribeMacro{\ni} command places the text \textit{under}
% the symbol. |\n1\m|\M@yields \metra{\n1\m}\,, 
% |\ni1\m|\M@yields \metra{\ni1\m}\,.
%
% The |\N| \DescribeMacro{\N} command has three arguments: the first is
% the text to be placed over a symbol; the second is the command for the
% symbol itself; the third is the text to be placed \textit{under} the symbol.
% The |\mbbx| and |\bbmx| commands are meant to be used in conjunction
% with |\N|: |\N{25}\mbbx{36}|\M@yields \metra{\N{25}\mbbx{36}}\,,
% |\N{25}\bbmx{36}|\M@yields \metra{\N{25}\bbmx{36}}\,.
% 
% In some circumstances (for instance, if the metrical symbol is
% surrounded by taller symbols) it may be necessary to increase the
% spacing between the symbol and the text above or under it.  This can
% be achieved by specifying an \meta{optional argument}, a \meta{factor}
% which is multiplied by the value of the default spacing.  For the |\N|
% command, the new spacing applies to both sides.
% 
% In metrical schemes, |\n| and |\N| can be used to give a reference to
% one or more line numbers within the text. It is advisable to restrict
% such references to one or two numbers. For more than two
% numbers (and whenever the numbers placed over different symbols
% overlap) it is usually better to place a single mark over
% the symbol. The corresponding list of line numbers can be given in a
% separate note, which may be generated with the |\numeri|
% \DescribeMacro{\numeri}command: the argument is a sequence of
% characters that \textit{must} contain a colon: the text preceding the
% colon is set in italics (it is assumed that the same text, also set in
% italics, appears over the symbol).
%
% It is also possible to stack the numbers up vertically by using the
% |\structa| command (see page \pageref{structa}):
%
% |\n{\structa{20}{36}}\mb| \M@yields \metra{\n{\structa{20}{36}}\mb}
% 
% |\n{\structa{31}{\structa{54}{108}}}\mb| \M@yields
% \metra{\n{\structa{31}{\structa{54}{108}}}\mb}
% 
% |\n{\structa[.1]{31;54}{108}}\mb|\ \ yields \kern .5em\relax
% \metra{\n{\structa[.1]{31;54}{108}}\mb}
% \newpage
% \centerline{\Large  METRICAL SYMBOLS}\par
% \label{metsym}
% \vspace {1ex}
% \begin{tabbing}
% mmmmmmm\=mmmmmmmmm\=mmmmmmmmmm\=\kill
% |\m|\>\metra{\m}\>long [\textit{W}]\\
% |\b|\>\metra{\b}\>short [\textit{W}]\\
% |\a|\>\metra{\a}\>anceps [\textit{W}]\\
% |\ma|\>\metra{\ma}\>long syllable in anceps position [\textit{W}]\\
% |\bba|\>\metra{\bba}\>`teilbares Anceps'\\
% |\bm|\>\metra{\bm}\>usually long [\textit{W}]\\
% |\mb|\>\metra{\mb}\>usually short [\textit{W}]\\
% |\bbmb|\>\metra{\bbmb}\>short replaceable by resolvable long\\
% |\bbm|\>\metra{\bbm}\>resolvable long [\textit{W}]\\
% |\bbmx|\>\metra{\bbmx}\>\textsl{see sect.~\ref{annot} %
%   (page \pageref{annot})}\\
% |\bb|\>\metra{\bb}\>resolved long [\textit{W}]\\
% |\bbb|\>\metra{\bbb}\>`teilbares Breve'\\
% |\mbb|\>\metra{\mbb}\>contractible biceps [\textit{W}]\\
% |\mbbx|\>\metra{\mbbx}\>\textsl{see sect.~\ref{annot} %
%   (page \pageref{annot})}\\
% |\pm|\>\metra{\pm}\>\\
% |\ppm|\>\metra{\ppm}\>contracted biceps [\textit{W}]\\
% |\vppm|\>\metra{\vppm}\\
% |\vpppm|\>\metra{\vpppm}\\
% |\tsmb|\>\metra{\tsmb}\>triseme (equivalent to \metra{\m\b}) [\textit{W}]\\
% |\tsbm|\>\metra{\tsbm}\>triseme (equivalent to \metra{\b\m}) [\textit{W}]\\
% |\tsmm|\>\metra{\tsmm}\>tetraseme (equivalent to \metra{\m\m}) [\textit{W}]\\
% |\ps|\>\metra{\ps}\>pentaseme\\
% |\oo|\>\metra{\oo}\>two positions of which one at least
% must be long [\textit{W}]\\
% |\C|\>\metra{\C}\>word-end  [\textit{W}]\\
% |\Ppp|\>\metra{\Ppp}\>often word end [\textit{W}]\\
% |\Pp|\>\metra{\Pp}\>less often word end [\textit{W}]\\
% |\Pxp|\>\metra{\Pxp}\\
% |\Pppp|\>\metra{\Pppp}\>\\
% |\Ppppp|\>\metra{\Ppppp}\>\\
% |\Cc|\>\metra{\Cc}\>period-end (or beginning) [\textit{W}]\\
% |\Ccc|\>\metra{\Ccc}\>strophe-end (or beginning) [\textit{W}]\\
% |\c|\>\metra{\c}\>({\it caesura}) same as \verb/\C/ but with wider spacing\\
% |\cc|\>\metra{\cc}\>same as \verb/\Cc/ but with wider spacing\\
% |\ccc|\>\metra{\ccc}\>same as \verb/\Ccc/ but with wider spacing\\
% |\ppp|\>\metra{\ppp}\>same as \verb/\Ppp/ but with wider spacing\\
% |\pp|\>\metra{\pp}\>same as \verb/\Pp/ but with wider spacing\\
% |\pxp|\>\metra{\pxp}\>same as \verb/\Pxp/ but with wider spacing\\
% |\pppp|\>\metra{\pppp}\>same as \verb/\Pppp/ but with wider spacing\\
% |\ppppp|\>\metra{\ppppp}\>same as \verb/\Ppppp/ but with wider spacing\\
% |\p|\>\metra{\p}\>syncopation \\
% |\r|\ |\R|\>\metra{\r\s\R}\>in responsion with [\textit{W}]\\
% |\t|\ |\T|\>\metra{\t\s\T}\>beginning or end of composition [\textit{W}]\\
% |\x|\>\metra{\x}\>change of speaker [\textit{W}]\\
% \end{tabbing}
% \vspace{8ex}
% \hrule height .6pt
% \vspace{8ex}
% \begin{center}
% {\Large SYMBOLS WITH ACCENT}\par
% \end{center}
% \label{accsym}
% \vspace {1ex}
% \tabskip 4em plus 4em minus 2em%
% \halign to \hsize{%
% #\hfill\tabskip 1em plus 1em&\hfill#\hfill
%   \tabskip 3em plus 3em minus 2em
% &#\hfill\tabskip 1em plus 1em&\hfill#\hfill
%   \tabskip 4em plus 4em minus 2em \cr
% |\M|&\metra{\M}&|\gM|&\metra{\gM}\cr
% |\B|&\metra{\B}&|\gB|&\metra{\gB}\cr
% |\Bm|&\metra{\Bm}&|\gBm|&\metra{\gBm}\cr
% |\Mb|&\metra{\Mb}&|\gMb|&\metra{\gMb}\cr
% |\Mbb|&\metra{\Mbb}&|\gMbb|&\metra{\gMbb}\cr
% |\mBb|&\metra{\mBb}&|\gmBb|&\metra{\gmBb}\cr
% |\mbB|&\metra{\mbB}&|\gmbB|&\metra{\gmbB}\cr
% |\BBm|&\metra{\BBm}&|\gBBm|&\metra{\gBBm}\cr
% |\Bbm|&\metra{\Bbm}&|\gBbm|&\metra{\gBbm}\cr
% |\bBm|&\metra{\bBm}&|\gbBm|&\metra{\gbBm}\cr
% |\BB|&\metra{\BB}&|\gBB|&\metra{\gBB}\cr
% |\Bb|&\metra{\Bb}&|\gBb|&\metra{\gBb}\cr
% |\bB|&\metra{\bB}&|\gbB|&\metra{\gbB}\cr
% }
% \newpage
%
% \subsubsection{Changing the appearance of the symbols}
%
% You can change the appearance of the metrical symbols with these
% commands:
% 
% \begin{list}{}{\leftmargin 0pt}
% 
% \item |\MetraStyle|\DescribeMacro{\MetraStyle}\label{metrastyle}
% changes the style (see sect.~\ref{option}) for the metrical symbols.
% The argument is either |en| (or |En|) for the `English' style or
% |st| for the standard, default style.
%
% \item |\InterSigna| \DescribeMacro{\InterSigna} \label{intersigna} sets
% the size of the space between adjacent metrical symbols. The argument is a 
% \meta{factor} which is multiplied by the width of a \textit{macron}
% (default:~.2).
% 
% \item |\InterPedes| \DescribeMacro{\InterPedes}\label{interpedes} sets
% the size of the space generated by the |\s| command. The argument is a
% \meta{factor} which is multiplied by the width of a \textit{macron}
% (default:~.67).
% 
% \item |\SubSigna| \DescribeMacro{\SubSigna} modifies the distance between
% the horizontal axis of the metrical symbols and the baseline of the
% surrounding text. The parameter is a \meta{factor} which is multiplied
% by the \texttt{ex} value for the font in use immediately before the
% |\metra| command; the result is added to the default displacement
% of the axis from the baseline.
% 
% \item |\Intervallum| \DescribeMacro{\Intervallum} sets the spacing between
% the components of composite symbols such as |\bm| or |\mb|. It may be
% necessary to increase the spacing if the output is to be printed on a
% low-resolution device. The parameter is a \meta{factor} which is multiplied
% by the \texttt{ex} value for the font in use for the metrical symbols
% (default:~.08).
% 
% \item |\Magnitudo| \DescribeMacro{\Magnitudo} modifies the size of the
% metrical symbols. The parameter is a \meta{number}: a positive value
% increases the size, a negative value decreases it. |\Magnitudo{+1}|
% selects the next higher font size in the \LaTeX{} font hierarchy extending
% from |\tiny| to |\Huge|; |\Magnitudo{-1}| the next lower.
% 
% \end{list}
% 
% The effect of these commands, unless they occur inside a \TeX{}
% \textit{group}, applies to the rest of the document from the point of
% use forwards. You can confine the effect to the argument of a single
% |\metra| command by placing the command(s) inside an \meta{optional argument}.
% For convenience, an abbreviated form of the command names is provided 
% for use (only) within the optional argument: |\ms|, |\is|, |\ip|, |\ss|, 
% |\i|, |\m|, with the obvious meaning. |\en| and |\st| may be used as
% shorthand for |\ms{en}| and |\ms{st}|.
%
% \subsection{The environments}
% 
% The two environments, \texttt{metrica} and \texttt{metrike}, allow you
% to place prosodical marks over text set in, respectively, the Latin
% and the Greek alphabet.
% 
% To place a \textit{macron} over a letter, put |\=| \DescribeMacro{\=}
% in front of the letter; to place a \textit{breve}, put |\-| \DescribeMacro{\-}
% in front of the letter (the standard \TeX{} control sequence |\u| may also
% be used). |\begin{metrica} \=a\-e \end{metrica}|\M@yields
% \begin{metrica} \=a\-e \end{metrica}.
%
% To place a \textit{macron} or \textit{breve} over a diphthong, enclose
% the diphthong in braces: |{\metrica \={ae}}|\M@yields{\metrica \={ae}}.
% 
% The environments appear to be compatible with most \LaTeX{}
% environments.  They are \textbf{not} compatible with the \LaTeX{}
% \texttt{tabbing} environment, which redefines some critical
% control sequences.
% 
% By default, the \textit{macron} and \textit{breve}  are placed at the
% natural height for an accent. In some cases, this may make the metrical
% structure difficult to grasp at a glance. The |\Elevatio| 
% \DescribeMacro{\Elevatio} command causes the prosodical marks to be placed
% at a constant distance from the baseline; the command argument is the
% distance, a \meta{factor} of the \texttt{ex} value for the font in use.
% Note that the distance may be negative, in which case the metrical symbol
% is placed \textit{under} the letter. |\Elevatio{0}| restores the default.
%
% The effect of the |\Elevatio| command, unless it occurs inside a \TeX{}
% \textit{group}, applies to the rest of the document from the point of
% use forwards. To modify the vertical spacing for a single instance of
% the environment, give the command inside the environment.
% 
% The |\Translatio| \DescribeMacro{\Translatio} command is analogous to
% |\Elevatio| and controls the horizontal position of the prosodical marks.
% The argument is a \meta{factor} of the \texttt{em} value for the font
% in use; prosodical marks are shifted to the right by this amount.  A value
% around .1 is generally satisfactory for text set in italics.
% \newpage
% Within the environments, the following commands are defined:
%
% |\c|, |\cc|, |\ccc|, |\C|, |\Cc|, |\Ccc|, 
% |\p|, |\pp|, |\ppp|, |\pppp|, |\ppppp|, |\Pp|, |\Ppp|, |\Pppp|, |\Ppppp|,
% |\pxp|, |\Pxp| with the meaning they have within the argument of |\metra|. 
%
% |\pos|, |\Pos|, |\!|, as  abbreviations for |\positio|, |\Positio|, |\dubia|. 
% (see sect.~\ref{diacr})
% \SpecialUsageIndex{\pos}
% \SpecialUsageIndex{\Pos}
% \SpecialUsageIndex{\!}
%
% |\e| and |\t| as  abbreviations for |\Elevatio| and |\Translatio|.
% \SpecialUsageIndex{\e}
% \SpecialUsageIndex{\t}
%
% In case of conflicts, definition of these commands may be suppressed
% by specifying an \meta{optional parameter} for the environment,
% with the value |n| or |N| (e.g. |\begin{metrike}[n]|, 
% |\begin{metrica}[N]|).
%
% \subsubsection{The \texttt{metrica} environment}
% 
% \DescribeEnv{metrica}To place an accent over a letter carrying a
% prosodical mark, put the accent before the letter: |\=`a|\M@yields
% {\metrica\=`a}\,, |\-'a|\M@yields {\metrica\-'a}\,,
% |\='{ae}|\M@yields {\metrica\='{ae}}\,.
% 
% \subsubsection{The \texttt{metrike}  environment}
% 
% \DescribeEnv{metrike} If a letter carries diacritical marks, the letter
% and \textbf{all} its marks (including the character for \textit{iota}
% subscript) must be enclosed in braces to form a single argument for
% |\=| and |\-|.
%
% If either \texttt{ibycus4} or \texttt{Babel} (with the
% \texttt{polutonikogreek} option) is loaded, it is used automatically; if
% both are present, \texttt{ibycus4} is selected.
% If you use another package for Greek fonts, you must issue the
% |\MetrikeFont|\DescribeMacro{\MetrikeFont}\ command before the first
% use of the environment. The  argument of |\MetrikeFont| is the sequence
% of commands that selects the Greek fonts. The command also accepts two
% single-letter symbolic parameters: |i| or |I| to select the
% \texttt{ibycus4} fonts, |b| or |B| to select the \texttt{Babel} fonts.
% 
% The effect of the |\MetrikeFont| command, unless the command occurs inside
% a \TeX{} \textit{group}, applies to the rest of the document from the
% point of use forwards. 
% \newpage
%
% \subsection{The \texttt{\protect\bslash sigla} command}
%
% The command |\sigla| \DescribeMacro{\sigla} generates abbreviations for
% the names of metres (but it may also be used to generate other types of
% abbreviations).  Within the argument of |\sigla| some characters and
% control sequences have a special meaning: 
% \begin{tabbing}
% \hskip 3em{\it T}\={\it ype}\ \ \ \ {\it to }\={\it get}
% \hskip 7em{\it T}\={\it ype}\ \ \ \ {\it to }\={\it get}\\
% \>|l_|\>\sigla{l_}\>|_l|\>\sigla{_l}\\
% \>|l/|\>\sigla{l/}\>|/l|\>\sigla{/l}\\
% \>|l:|\>\sigla{l:}\>|:l|\>\sigla{:l}\\
% \>|l\+|\>\sigla{l\+}\>|\+l|\>\sigla{\+l}\\
% \>|\d|\>\sigla{\d}\ \ {\small(isolated)}
% \>|\D|\>\sigla{\D}\ \ {\small(next to a letter)}\\
% \>|\s|\>\sigla{\s}\\
% \end{tabbing}
% \SpecialUsageIndex{\d}
% The |\charcolon| and |\charslash| commands yield `:' and `/'.
% The |\S| command is available with the meaning it has within the
% argument of |\metra|.
% \SpecialUsageIndex{\charcolon}
% \SpecialUsageIndex{\charslash}
% \SpecialUsageIndex{\S}
%
% The following commands are also defined,
% with the meaning they have within the argument of |\metra|:  
% |\r|, |\x|, |\c|, |\cc|, |\ccc|, |\C|, |\Cc|, |\Ccc|, |\p|, |\pp|,
% |\ppp|, |\pppp|, |\ppppp|, |\Pp|, |\Ppp|, |\Pppp|, |\Ppppp|, |\pxp|,
% |\Pxp|.
% Definition of these commands may be suppressed by specifying an
% \meta{optional parameter} for the |\sigla| command, with the value
% |n| or |N| (e.g. |\sigla[n]|).
%
% For complicated abbreviations, some explicit adjustment of spacing may be
% necessary; this can be achieved by using the characters `|>|' and `|<|'.
% `|>|' inserts a space of approximately $1/18$th of |1em|; `|<|' inserts a
% \textit{negative} space of the same length.
% 
% For example, the following command:\par
% \vskip 1ex
% {\parindent 0pt \parskip 0pt
% |\sigla{gl>\S[.4]{\metra{\bb}}\c \S{\metra{\bb}}<<cr|\par
% |ia_ /3io k>\D{} \d{} D\S3 E>\S2 ph<\S{3d} tl<:|\par
% \vskip 2ex 
% yields: \sigla{gl>\S[.4]{\metra{\bb}}\c\S{\metra{\bb}}<<cr\ \ %
% <<<ia_ /3io%
%  k>\D{} \d{} D\S3 E>\S2 ph<\S{3d} tl<:}
% }
% \vskip 1ex
% By default abbreviations are set in italics. You can change the style
% with the |\FaciesSiglorum |\DescribeMacro{\FaciesSiglorum} command:
% the argument is the sequence of \LaTeX{} or \TeX{} commands to be used
% for setting the text. The effect of the command, unless it occurs inside
% a \TeX{} \textit{group}, applies to the rest of the document from the
% point of use forwards.
%
% \newpage
%
% \section{Other signs}
%
% \subsection{Brackets}
%
% Each command yields the symbol on the right:
% \vspace{1.5ex}
% \tabskip 4em plus 4em minus 2em%
% \halign to \hsize{%
% #\hfill\tabskip 1em plus 1em&\hfill#\hfill
%   \tabskip 4em plus 4em minus 2em
% &#\hfill\tabskip 1em plus 1em
% &\hfill#\hfill
%   \tabskip 4em plus 4em minus 2em 
% &#\hfill\cr
% |\angus|&\angus&|\Angus|&\Angus&\textit{(uncus angulatus)}\cr
% |\angud|&\angud&|\Angud|&\Angud\cr
% |\quadras|&\quadras&|\Quadras|&\Quadras&\textit{(uncus quadratus)}\cr
% |\quadrad|&\quadrad&|\Quadrad|&\Quadrad\cr
% |\alas|&\alas&|\Alas|&\Alas&\textit{(uncus alatus)}\cr
% |\alad|&\alad&|\alad|&\alad\cr
% |\semi[|&\semi[&|\semi]|&\semi]\cr
% |\crux|&\crux&|\Crux|&\Crux\cr
% }
% \SpecialUsageIndex{\angus}
% \SpecialUsageIndex{\Angus}
% \SpecialUsageIndex{\angud}
% \SpecialUsageIndex{\Angud}
% \SpecialUsageIndex{\quadras}
% \SpecialUsageIndex{\Quadras}
% \SpecialUsageIndex{\quadrad}
% \SpecialUsageIndex{\Quadrad}
% \SpecialUsageIndex{\alas}
% \SpecialUsageIndex{\Alas}
% \SpecialUsageIndex{\alad}
% \SpecialUsageIndex{\Alad}
% \SpecialUsageIndex{\semi[}
% \SpecialUsageIndex{\semi]}
% \SpecialUsageIndex{\crux}
% \SpecialUsageIndex{\Crux}
%
% \subsection{Special symbols}
%
% Each command yields the symbol on the right:
% \vspace{1.5ex}
% \tabskip 4em plus 4em minus 2em%
% \halign to \hsize{%
% #\hfill\tabskip 1em plus 1em&\hfill#\hfill
%   \tabskip 4em plus 4em minus 2em
% &#\hfill\tabskip 1em plus 1em&\hfill#\hfill
%   \tabskip 4em plus 4em minus 2em \cr
% |\anaclasis|&\anaclasis&|\Anaclasis|&\Anaclasis\cr
% |\antisigma|&\antisigma&|\Antisigma|&\Antisigma\cr
% |\asteriscus|&\asteriscus&|\Asteriscus|&\Asteriscus\cr
% |\catalexis|&\catalexis&|\Catalexis|&\Catalexis\cr
% |\diple|&\diple&|\Diple|&\Diple\cr
% |\diple*|&\diple*&|\Diple*|&\Diple*\cr
% |\antidiple|&\antidiple&|\Antidiple|&\Antidiple\cr
% |\antidiple*|&\antidiple*&|\Antidiple*|&\Antidiple*\cr
% |\obelus|&\obelus&|\Obelus|&\Obelus\cr
% |\obelus*|&\obelus*&|\Obelus*|&\Obelus*\cr
% |\respondens|&\respondens&|\Respondens|&\Respondens\cr
% |\terminus|&\terminus&|\Terminus|&\Terminus\cr
% |\terminus*|&\terminus*&|\Terminus*|&\Terminus*\cr
% }
% \SpecialUsageIndex{\anaclasis}
% \SpecialUsageIndex{\Anaclasis}
% \SpecialUsageIndex{\antisigma}
% \SpecialUsageIndex{\Antisigma}
% \SpecialUsageIndex{\asteriscus}
% \SpecialUsageIndex{\Asteriscus}
% \SpecialUsageIndex{\catalexis}
% \SpecialUsageIndex{\Catalexis}
% \SpecialUsageIndex{\diple}
% \SpecialUsageIndex{\antidiple}
% \SpecialUsageIndex{\Diple}
% \SpecialUsageIndex{\Antidiple}
% \SpecialUsageIndex{\diple*}
% \SpecialUsageIndex{\antidiple*}
% \SpecialUsageIndex{\Diple*}
% \SpecialUsageIndex{\Antidiple*}
% \SpecialUsageIndex{\obelus}
% \SpecialUsageIndex{\Obelus}
% \SpecialUsageIndex{\obelus*}
% \SpecialUsageIndex{\Obelus*}
% \SpecialUsageIndex{\respondens}
% \SpecialUsageIndex{\Respondens}
% \SpecialUsageIndex{\terminus}
% \SpecialUsageIndex{\Terminus}
% \SpecialUsageIndex{\terminus*}
% \SpecialUsageIndex{\Terminus*}
%
% All the commands for special symbols take an \meta{optional argument},
% a \meta{factor} which is multiplied by the |ex| value for the font in use;
% the result is the amount by which the symbol is raised (\meta{factor} $> 0$)
% or lowered (\meta{factor} $< 0$).
%
% Some of the characters (e.g.~|\diple|, |\obelus|, |\antisigma|) are usually
% placed in front of a line of text, in the left margin. The |\margini|
% command \DescribeMacro{\margini} puts the text given in the argument in
% the left margin of the page; |\margini*| \DescribeMacro{\margini*} puts
% the text in the right margin. The argument is implicitly considered to
% form a \TeX{} \textit{group}, as if it were enclosed by an additional set
% of braces. An \meta{optional argument} can specify a \meta{dimen} which
% is added to the default displacement from the margin of the main text
% (a positive value moves the argument further away from the center of
% the page).
%
% \subsection{Diacritics}\label{diacr}
%
% Each of the following commands places the corresponding mark over the
% letter given as argument:\par\vspace \medskipamount
% {\parskip 0pt
% \DescribeMacro{\macron}%
% \kern 7em \hbox to 9em{|\macron e| \hfill \macron e}\par
% \DescribeMacro{\breve}%
% \kern 7em \hbox to 9em{|\breve e| \hfill \breve e}\par
% \DescribeMacro{\acutus}%
% \kern 7em \hbox to 9em{|\acutus e| \hfill \acutus e}\par
% \DescribeMacro{\gravis}%
% \kern 7em \hbox to 9em{|\gravis e| \hfill \gravis e}\par
% \DescribeMacro{\circumflexus}%
% \kern 7em \hbox to 9em{|\circumflexus e| \hfill \circumflexus e}\par
% \DescribeMacro{\diaeresis}%
% \kern 7em \hbox to 9em{|\diaeresis e| \hfill \diaeresis e}\par
% }
% The commands take an \meta{optional argument}, a \meta{factor} which
% is multiplied by the |ex| value for the font in use; the result is the
% amount by which the mark is raised (\meta{factor} $> 0$) or lowered
% (\meta{factor} $< 0$).
% \textit{\large Note}: the \TeX{} mathematical accent normally associated
% with |\breve| may be generated with the command |\Breve|. 
%
% The |\cons| \DescribeMacro{\cons} command places a semicircle under the
% letter that follows, to indicate \textit{consonantization} of a vowel:
% |\cons{u}|\M@yields \cons{u}\,.
%
% The argument of the |\dubia| \DescribeMacro{\dubia} command is a letter,
% under which the command places a small dot to show that the letter is
% only partially preserved in a manuscript or epigraphical text.
% If the letter carries diacritical marks, these must all be included in
% the argument.
%
% The |\dubiae| \DescribeMacro{\dubiae} command has one parameter, a string
% of letters, and places a small dot under each of the letters. If a letter
% within the string carries diacritical marks, it must be enclosed, together
% with all the marks, within braces.
%
% The \texttt{*}-forms \DescribeMacro{\dubia*} are meant to be used in
% conjunction  with fonts, like those of |ibycus4|, \DescribeMacro{\dubiae*}
% that have ligatures for all combinations of a letter and the dot.  The
% use of ligatures allows a more precise positioning of the dot, taking the
% shape of the letter into account.   
% 
% The |\erasa| command \DescribeMacro{\erasa} \M@yields \erasa.
%
% The |\positio| \DescribeMacro{\positio} command yields the symbol \positio\,,
% which is used between a mute and a liquid to show that the combination
% \textit{makes position\/}, i.e.~closes and thereby lengthens the preceding
% syllable. |\Positio| \DescribeMacro{\Positio} generates a slightly
% larger symbol \Positio\,.
%
% The |\punctum| \DescribeMacro{\punctum} command places a small dot under
% a space, to show that a letter is missing.
% |\Punctum| \DescribeMacro{\Punctum} yields a dot enclosed within parentheses.
% Both commands take an \meta{optional argument}, a \meta{number} that is
% interpreted as a repetition count.
% \textit{\large Caution}: sometimes the dot is immediately followed,
% in the text, by a left square bracket; if you write |\punctum[|\ \,\TeX{}
% will interpret the bracket as the start of the optional
% argument and give an error message.  Use either |\punctum{}[|
% or |\punctum\lbrack|.
%
% \subsection{Ties}\label{tie}
%
% The commands described in this section allow you to place \textit{tie}
% symbols above a sequence of up to three adjacent characters or under it.
% All combinations are allowed, including some that are not particularly
% sensible or useful. 
% 
% |\tie| \DescribeMacro{\tie} places $\frown$ above the characters.
%
% |\itie| \DescribeMacro{\itie} places $\smile$ below the characters.
%
% |\tie*| \DescribeMacro{\tie*} places $\frown$ below the characters.
%
% |\itie*| \DescribeMacro{\itie*} places $\smile$ above the characters.
% 
% The size of the symbol is chosen so that it embraces all the text. In
% some cases, you may wish to use a smaller or larger size. An
% \meta{optional argument} can specify a \meta{factor} which 
% is multiplied by the width of the text: the size of the symbol is then
% chosen as if the text had that width. Keep in mind, however, that only
% a limited range of symbol sizes is available in the Computer Modern fonts.
% 
% When any of the \textit{tie} commands is used within the argument
% of |\metra|, a \meta{factor} of .6 is applied automatically and 
% an explicit \meta{factor}, if specified, applies to the width
% as modified by the automatic factor. While |\tie{a e}|\M@yields
% \tie{a e}, |\metra{\tie{\m\s\m}}|\M@yields \metra{\tie{\m\s\m}} 
% 
% Examples:\par
% \begin{tabbing}
% \hskip 2.5em\=xtie{abc}\hskip 5em\=abc%
% \hskip 4em\=xtie{abc}\hskip 5em\=abc\kill
% \>|\tie{ae}|\>\tie{ae}\>|\itie{ae}|\>\itie{ae}\\
% \>|\tie{uae}|\>\tie{uae}\>|\itie{uae}|\>\itie{uae}\\
% \>|\tie{a e}|\>\tie{a e}\>|\itie{a e}|\>\itie{a e}\\
% \>|a\tie{ }e|\>a\tie{ }e\>|a\itie{ }e|\>a\itie{ }e\\
% \>|\tie[.6]{a e}|\>\tie[.6]{a e}\>|\itie[.6]{a e}|\>\itie[.6]{a e}\\
% \>|\tie[.8]{a e}|\>\tie[.8]{a e}\>|\itie[.8]{a e}|\>\itie[.8]{a e}\\
% \end{tabbing}
% \begin{verse}
% |Oceanum\itie{ }interea surgens Aurora reliquit.|\\
% |It portis iubar\itie[.6]{e e}xorto delecta iuventus.|\par
% Oceanum\itie{ }interea surgens Aurora reliquit.\\
% It portis iubar\itie[.6]{e e}xorto delecta iuventus.\par
%  \end{verse}
%
% \subsection{Interlinear signs}
%
% The signs generated by the commands described in this section are those
% commonly used for marking strophic divisions in Greek lyrical poetry. 
% The symbols are inserted between lines or placed at the end of the text.
%
% The commands must be used inside a \LaTeX{} environment (such as |verse|)
% in which each line is terminated by |\\|, or else within the scope of
% the \TeX{} |\obeylines| command.  The normal form of the commands is
% used within \LaTeX{} environments, while the \texttt{*}-form
% must be used within the scope of |\obeylines|.
%
% The commands must appear at the end of a line and, if used within a \LaTeX{}
% environment, must \textit{not} be followed by |\\|.  The symbol is inserted
% after the line on which the command occurs and the distance between this line
% and the line that follows (which may be empty for symbols that are 
% placed after the last line of the text) is increased by 15\%.
%
% The automatic increment of the interline spacing may be modified by an
% \meta{optional argument}, a \meta{factor} which is multiplied by the
% current value of |\baselineskip|; the result is added to the default
% increment.
%
% The basic command is |\linea| \DescribeMacro{\linea} which generates
% a short line \,\imago*{\linea}\, extending to the left of the
% margin of the surrounding text by half its length.
% There are two variants of |\linea|, both available in two sizes:\par
% \noindent\kern 1em\imago*{\bifida}\kern 2em |\lineabifida| or 
% |\bifida| \DescribeMacro{\bifida}\par
% \SpecialUsageIndex{\lineabifida}
% \noindent\kern 1em\imago*{\Bifida}\kern 2em  |\Lineabifida| or 
% |\Bifida| \DescribeMacro{\Bifida}\par
% \SpecialUsageIndex{\Lineabifida}
% \noindent\kern 1em\imago*{\lunata}\kern 2em |\linealunata| or 
% |\lunata| \DescribeMacro{\lunata}\par
% \SpecialUsageIndex{\linealunata}
% \noindent\kern 1em\imago*{\Lunata}\kern 2em |\Linealunata| or 
% |\Lunata| \DescribeMacro{\Lunata}
% \SpecialUsageIndex{\Linealunata}
%
% The |\geminata| \DescribeMacro{\geminata} command yields a pair of lines,
% each identical to the line generated by |\linea|:\ \imago[-.3]{\geminata}\,.
%
%
% You can place some text (for instance, parentheses or a question mark)
% on either side of the symbols generated by the commands listed above
% by means of the |\antelineam|\DescribeMacro{\antelineam}\ and |\postlineam|
% commands.  The commands must appear \DescribeMacro{\postlineam} at the
% beginning of the line which follows the symbol.  Each command takes one
% argument: the text to be placed before or after the symbol. 
% The text is implicitly considered to form a \TeX{} \textit{group}, as if it
% were enclosed by an additional set of braces. Within the argument, any command
% selecting the font to be used for the text must \textit{not} appear within
% a \textit{group}; if, for  instance, you wish to use parentheses taken from
% the smallest font available to \LaTeX{}  you should write:
% |\antelineam{\tiny(}| and |\postlineam{\tiny)}| and \textbf{not}
% |\antelineam{{\tiny(}}| or |\postlineam{{\tiny)}}|.
%
% The |\coronis| \DescribeMacro{\coronis} command generates a stylized
% representation of the symbol sometimes found in manuscripts. 
% Because of its peculiar shape, the symbol \margini{\imago*{\coronis}} 
% is not placed between lines but to the left of the text.
%
% \subsubsection*{Generating the signs within the text}
%
% To generate one of the signs described in this section within ordinary
% text, use the |\imago| \DescribeMacro{\imago} command. The argument is
% the name of the command yielding the sign:  |\imago{\bifida}|
% \M@yields\imago{\bifida}.
% The sign is generated at its natural distance from the baseline.
% The distance may be modified by an \meta{optional argument}; the argument,
% a \meta{factor}, is multiplied by the current value of
% |\baselineskip| and the result is added to the default distance.
% |\imago[-.6]{\bifida}|\M@yields\imago[-.6]{\bifida}. 
%
% The \texttt{*}-form of the command \DescribeMacro{\imago*} automatically
% aligns the sign with the surrounding text: |\imago*{\bifida}|%
% \M@yields \imago*{\bifida}.
%
% \subsubsection*{Defining new signs}
%
% The |\novalinea| \DescribeMacro{\novalinea} command defines
% a new command that yields a line placed at the same height as the line
% generated by |\linea| but having a different length and/or indentation
% from the text margin.  The command has four parameters:
% \begin{list}{}{\parsep 0pt\itemsep 0pt\labelsep 1.5em \topsep 0pt}
% \item[\textit{1}] the name of the new command;
% \item[\textit{2}] the indentation, relative to the left margin of the
% text, of the line;
% \item[\textit{3}] the length of the line;
% \item[\textit{4}] the amount by which the interline spacing should be
% increased, given as a \meta{factor} that is to be multiplied by the value of
% |\baselineskip|. 
% \end{list}{}{}
% For instance, the command |\novalinea{\Linea}{-.5em}{2em}{.2}| defines
% |\Linea| as a command that yields a line of length \texttt{2em}, indented
% to the left of the text margin by $1/4$ of its length; the interline
% spacing is increased by 20\%.
%
% The |\novageminata| \DescribeMacro{\novageminata} command, with the
% same parameters as |\novalinea|, defines a new command that yields
% a pair of lines similar to those generated by |\geminata|. 
%
% Definitions made with these two commands are valid within the
% \TeX{} \textit{group} within which they occur.  It is  therefore possible
% to restrict their effect to a section of the  document by enclosing the
% section within braces and placing the definitions after the opening brace.
%
% Note that it is possible to change the definition of |\linea| by
% saying |\novalinea{\linea}|\texttt{\ldots}\ Changing the definition
% of |\linea| automatically changes the appearance of |\geminata|,
% |\bifida|, |\Bifida|, |\lunata| and |\Lunata|.
%
% If you prefer a typographical style that puts the interlinear signs
% into the margin, away from the text, you need only change the definition
% of |\linea| (setting the appropriate value for indentation) in the preamble
% and all the document will be typeset in this style.
%
% \subsection{\textit{Miscellanea}}
%
% The |\lineola| \DescribeMacro{\lineola} command generates, at the point
% where it is used, a horizontal line having the length given in the 
% command argument.  The line is placed at the same height, relative to
% the baseline of the text, as the line generated by |\linea|. You can
% change the height by specifying an \meta{optional argument}: a \meta{factor}
% which is multiplied by the value of |\baselineskip|; the result
% is added to the default displacement from the baseline.
%
% The |\Lineola| \DescribeMacro{\Lineola} command generates a horizontal
% line over the text given in the command argument.  The command accepts an
% \meta{optional argument}, with the same meaning as the corresponding
% argument of |\lineola|. |\Lineola[-.25]{mrs}| \M@yields \Lineola[-.25]{mrs}.
% \newpage
% The |\structa| \DescribeMacro{\structa} command \label{structa} takes two
% arguments and places the text given in the second argument over the text
% given in the first argument. Both arguments are implicitly considered
% to form \TeX{} \textit{groups}, as if each argument were enclosed by
% an additional set of braces.
% The command takes an \meta{optional argument}, a \meta{factor} which is
% multiplied by the |ex| value for the font in use; the result is
% the amount by which the text in the second argument is raised
% (\meta{factor} $> 0$) or lowered (\meta{factor} $< 0$).
% |w\structa{xy}{\tiny ab}z| \M@yields w\structa{xy}{\tiny ab}z.
%
% \vspace{5ex} 
% \begingroup
% \Large
% Happy
% \begin{metrica}
% T\kern -.1667em \lower .5ex \hbox{\-E}\kern-.125em Xing\,!%
% \end{metrica}
% \endgroup
% \newpage
% \PrintIndex
% \StopEventually{}
% \parindent 0pt
% \newpage
% \setlength{\parskip}{.3ex}
%
% \section{The package code} \label{sec:code}
%
% \subsection{Preliminaries} 
%
%    \begin{macrocode}
\NeedsTeXFormat{LaTeX2e}[1999/12/01]
\ProvidesPackage{metre}%
  [2001/12/05 v. 1.0 A package for classicists]
%    \end{macrocode}
%
% Set the style for |\metra|:
%    \begin{macrocode}
\DeclareOption{st}{\def\M@opt@style{0}}
\DeclareOption{en}{\def\M@opt@style{1}}
\DeclareOption{En}{\def\M@opt@style{2}}
\ExecuteOptions{st}
\ProcessOptions
%    \end{macrocode}
%
%    \begin{macrocode}
\RequirePackage{relsize}
%    \end{macrocode}
%
% Suppress all |relsize| warnings which would needlessly
% alarm the user. 
%
%    \begin{macrocode}
\renewcommand{\rs@size@warning}[2]{\relax}
%    \end{macrocode}
%
% \subsection{Variables} 
%
% Set to 1 if |ibycus| is loaded.
%    \begin{macrocode}
\newcount\M@ibycus
%    \end{macrocode}
%
% Set to 1 while we are within the parameter of |\metra|.
%    \begin{macrocode}
\newcount\M@metra
%    \end{macrocode}
%
% The font number (as defined by |relsize|) for the font used in |\metra|.
%
%    \begin{macrocode}
\newcount\M@metra@font
%    \end{macrocode}
%
% |True| if we must generate a grave accent.
%
%    \begin{macrocode}
\newif\ifM@gravis
%    \end{macrocode}
%
% |True| if we must generate the \textit{inter signa} space.
%
%    \begin{macrocode}
\newif\ifM@inter
%    \end{macrocode}
%
% |True| if the symbol just generated is some sort of vertical bar.
%
%    \begin{macrocode}
\newif\ifM@vert@bar
%    \end{macrocode}
%
% |True| if we must generate a stand-alone interlinear sign.
%
%    \begin{macrocode}
\newif\ifM@imago
%    \end{macrocode}
%
% |True| if we just want to set the |\dimen| registers for |\linea|.
%
%    \begin{macrocode}
\newif\ifM@linea@dimen
%    \end{macrocode}
%
% |True| if we have the *-form of a command.
%
%    \begin{macrocode}
\newif\ifM@starred
%    \end{macrocode}
%
% |True| if we must generate a character at a larger size.
%
%    \begin{macrocode}
\newif\ifM@big
%    \end{macrocode}
%
% Boxes for the basic symbols:
%
%    \begin{macrocode}
\newbox\M@box@m%        macron 
\newbox\M@box@b%        breve 
\newbox\M@box@tsmb%     triseme (macron + breve)
\newbox\M@box@tsbm%     triseme (breve + macron)
\newbox\M@box@tsmm%     tetraseme (macron + macron)
\newbox\M@box@ps%       pentaseme (macron + macron)
\newbox\M@box@a%        anceps 
\newbox\M@box@o%        one half of `eolic base'
\newbox\M@box@k%        catalexis 
\newbox\M@box@K%        catalexis (large)
\newbox\M@box@p%        dot 
\newbox\M@box@A%        acute accent
\newbox\M@box@G%        grave accent
%    \end{macrocode}
%
% Registers for some important dimensions:
%
%    \begin{macrocode}
\newdimen\M@dim@m%      width of macron box 
\newdimen\M@dim@b%      width of breve box
\newdimen\M@dim@p%      width of dot box
\newdimen\M@dim@s%      size of space
%    \end{macrocode}
%
% The amount by which the breve is lowered in the |[en]| style.
%
%    \begin{macrocode}
\newdimen\M@dim@bsink
%    \end{macrocode}
%
% The amount by which a symbol has actually sunk.
%
%    \begin{macrocode}
\newdimen\M@dim@sunk
%    \end{macrocode}
%
% |ex| value for the font being used for the metrical symbols.
%
%    \begin{macrocode}
\newdimen\M@metra@ex   
%    \end{macrocode}
%
% |ex| value for the font in use before |\metra|.
%
%    \begin{macrocode}
\newdimen\M@text@ex
%    \end{macrocode}
%
% Space before and after a \textit{caesura}. 
%
%    \begin{macrocode}
\newdimen\M@dim@c@ext
%    \end{macrocode}
%
% Space inside a double or triple \textit{caesura}.
%
%    \begin{macrocode}
\newdimen\M@dim@c@int
%    \end{macrocode}
%
% Space before and after a \textit{caesura}. 
%
%    \begin{macrocode}
\newdimen\M@dim@c@Ext
%    \end{macrocode}
%
% Indentation, height and length of |\linea|. 
%
%    \begin{macrocode}
\newdimen\M@linea@indent
\newdimen\M@linea@height
\newdimen\M@linea@length
%    \end{macrocode}
%
% \subsection{Inizialization} 
%
%    \begin{macrocode}
\AtBeginDocument{%
  \@ifpackageloaded{ibycus4}{\M@ibycus\@ne}{\M@ibycus\z@}%
  \let\M@prevsize=\relax
  \def\M@before@linea{\relax}%
%    \end{macrocode}
%
% The metrical symbols are taken from the font at |\relsize{+2}|:
%
%    \begin{macrocode}
  \let\M@step@up=\tw@
}
%    \end{macrocode}
%
% \subsection{Global commands} 
%
%    \begin{macrocode}
\newcommand{\InterSigna}[1]{\def\M@interS{#1}}
\newcommand{\InterPedes}[1]{\def\M@interP{#1}}
\newcommand{\SubSigna}[1]{\def\M@subS{#1}}
\newcommand{\Magnitudo}[1]{\def\M@magnitudo{#1}}
\newcommand{\Elevatio}[1]{\def\M@elevatio{#1}}
\newcommand{\Translatio}[1]{\def\M@translatio{#1}}
\newcommand{\Intervallum}[1]{\def\M@intervallum{#1}}
\newcommand{\FaciesSiglorum}[1]{\def\M@facies{#1}}
%    \end{macrocode}
%
%    \begin{macrocode}
\newcommand{\MetraStyle}[1]{\M@MetraStyle#1}
\def\M@MetraStyle#1#2{%
  \let\M@opt=\relax
  \ifx e#1\relax
    \ifx n#2\relax
      \let\M@opt=1\relax 
    \fi
  \fi
  \ifx E#1\relax
    \ifx n#2\relax
      \let\M@opt=2\relax   
    \fi
  \fi
  \ifx s#1\relax 
    \ifx t#2\relax
      \let\M@opt=0\relax  
    \fi
  \fi
  \ifx \M@opt\relax
    \PackageError{metre}%
        {Illegal option for \protect\MetraStyle}%
        {Valid options are `en', `En', `st'.}%
  \else
    \edef\M@opt@style{\M@opt}%
  \fi
}
%    \end{macrocode}
%
%    \begin{macrocode}
\newcommand{\MetrikeFont}[1]{\def\M@MetrikeFont{#1}}
%    \end{macrocode}
%
% Set the default values. 
%
%    \begin{macrocode}
\InterSigna{.2}%
\InterPedes{.67}%
\SubSigna{0}%
\Magnitudo{0}%
\Elevatio{0}%
\Translatio{0}%
\Intervallum{.08}%
\FaciesSiglorum{\it}%
%    \end{macrocode}
%
% \subsection{The \texttt{\protect\bslash metra} command} 
%
%    \begin{macrocode}
\newcommand{\metra}[2][\relax]{%
%    \end{macrocode}
%
% Check for a recursive call and set a flag to show
% we are within |\metra|.
%
%    \begin{macrocode}
  \ifnum \M@metra=\@ne
    \PackageError{metre}{Recursive use of \protect\metra}%
      {You cannot use \protect\metra within%
       the argument \MessageBreak
       of another \protect\metra command}%
  \fi
  \M@metra=\@ne
%    \end{macrocode}
%
% Save the information about the current font size and make sure we are
% in horizontal mode.
%
%    \begin{macrocode}
  \let\M@text@fontsize=\@currsize
  \M@text@ex=\fontdimen5\the\font
  \leavevmode
%    \end{macrocode}
% \newpage
% Start a group so that all command definitions stay local.
%
%    \begin{macrocode}
  \begingroup
%    \end{macrocode}
% Initial setup, including execution of commands in the optional argument.
%    \begin{macrocode}
  \M@metra@setup{#1}%
%    \end{macrocode}
% 
% The text is set as a single |\hbox| so that it can be moved
% up and down as necessary.  This also has the advantage of
% preventing the metrical scheme from being split across lines.
% 
%    \begin{macrocode}
  \dimen0=\if 0\M@opt@style 0\else .5\fi \M@text@ex
  \advance \dimen0 by \M@subS \M@text@ex
  \raise \dimen0 \hbox{\hss\M@interfalse #2\hss}%
  \endgroup
  \M@metra=\z@
  \relax
}
%    \end{macrocode}
%
% \subsubsection{\texttt{\protect\bslash metra} set up} 
%
%    \begin{macrocode}
\def\M@metra@setup#1{%
%    \end{macrocode}
%
% Execute the commands (if any) in the optional argument.
%
%    \begin{macrocode}
  \let\is=\InterSigna
  \let\i=\Intervallum
  \let\ip=\InterPedes
  \let\ss=\SubSigna
  \let\m=\Magnitudo
  \let\ms=\MetraStyle
  \def\en{\MetraStyle{en}}%
  \def\En{\MetraStyle{En}}%
  \def\st{\MetraStyle{st}}%
  #1\relax
%    \end{macrocode}
%
% Switch to the CMR font that will be used for all symbols.
%
%    \begin{macrocode}
  \M@cmr
%    \end{macrocode}
% 
% Select the font size.
% 
%    \begin{macrocode}
  \count255=\M@magnitudo
  \advance \count255 by \M@step@up
  \relsize{\count255}%
  \let\M@metra@fontsize=\@currsize
  \M@metra@ex=1ex
%    \end{macrocode}
%
% Avoid rebuilding the boxes if the font size has not changed from
% the previous use of |\metra|.
%
%    \begin{macrocode}
  \ifx \@currsize \M@prevsize
    \relax
  \else
    \M@makeboxes
    \global\let\M@prevsize=\@currsize
  \fi
%    \end{macrocode}
%
% Set a few dimensional registers that may be affected by commands 
% in the optional argument.
%
%    \begin{macrocode}
  \M@dim@c@ext=\M@interP\M@dim@m
  \M@dim@c@int=\M@interS\M@dim@m
  \M@dim@c@ext=1.33\M@dim@c@ext
  \M@dim@c@Ext=\M@dim@c@int
  \M@dim@s=\M@interP\M@dim@m
%    \end{macrocode}
%
% Now make all the macros available:
%
%    \begin{macrocode}
  \let\a    \M@a
  \let\b    \M@b    \let\B    \M@B
                    \let\gB   \M@gB
  \let\bb   \M@bb   \let\BB   \M@BB  
                    \let\gBB  \M@gBB 
                    \let\Bb   \M@Bb  
                    \let\gBb  \M@gBb 
                    \let\bB   \M@bB
                    \let\gbB  \M@gbB
  \let\bm   \M@bm   \let\Bm   \M@Bm 
                    \let\gBm   \M@gBm
  \let\bba  \M@bba
  \let\bbb  \M@bbb
  \let\bbm  \M@bbm  \let\BBm  \M@BBm  
                    \let\gBBm \M@gBBm 
                    \let\Bbm  \M@Bbm   
                    \let\gBbm \M@gBbm  
                    \let\bBm  \M@bBm
                    \let\gbBm \M@gbBm
  \let\bbmx \M@bbmx
  \let\bbmb \M@bbmb
  \let\m    \M@m    \let\M    \M@M   
                    \let\gM   \M@gM
  \let\ma   \M@ma
  \let\mb   \M@mb   \let\Mb   \M@Mb
                    \let\gMb  \M@gMb
  \let\mbb  \M@mbb  \let\Mbb  \M@Mbb     
                    \let\gMbb \M@gMbb    
                    \let\mBb  \M@mBb   
                    \let\gmBb \M@gmBb  
                    \let\mbB  \M@mbB
                    \let\gmbB \M@gmbB
  \let\mbbx \M@mbbx 
  \let\c    \M@c    \let\cc   \M@cc    \let\ccc   \M@ccc
  \let\C    \M@C    \let\Cc   \M@Cc    \let\Ccc   \M@Ccc
  \let\d    \M@d
  \let\k    \M@k    \let\K    \M@K
  \let\n    \M@n    \let\ni   \M@ni    \let\N     \M@N   
  \let\o    \M@o    \let\oo   \M@oo  
  \let\p    \M@p    \let\pp   \M@pp    \let\Pp    \M@Pp 
                    \let\pxp  \M@pxp   \let\Pxp   \M@Pxp
  \let\pm   \M@pm   \let\ppm  \M@ppm   \let\pppm  \M@pppm  
                    \let\vppm \M@vppm  \let\vpppm \M@vpppm
  \let\ppp  \M@ppp  \let\pppp \M@pppp  \let\ppppp \M@ppppp 
  \let\Ppp  \M@Ppp  \let\Pppp \M@Pppp  \let\Ppppp \M@Ppppp 
  \let\q    \M@q    \let\Q    \M@Q
  \let\r    \M@r    \let\R    \M@R 
  \let\s    \M@s  
  \let\S    \M@super@metra
  \let\t    \M@t    \let\T    \M@T
  \let\tsbm \M@tsbm 
  \let\tsmb \M@tsmb  
  \let\tsmm \M@tsmm  
  \let\ps   \M@ps
  \let\v    \M@v    
  \let\x    \M@x   
  \let\'\M@acutus   \let\`\M@gravis
}
%    \end{macrocode}
%
% \subsubsection{Manufacturing the basic boxes} 
%
% \textit{``The horror! The horror!''}. Here is the package's heart of darkness.
% For each basic metrical symbol we build a box that encloses, as 
% precisely as possible, the `inked' part of the character box.
% A few of the magic numbers that are sprinkled throughout this truly messy
% code have been derived from the Metafont source but most have been arrived
% at \textit{provando e riprovando}.  A cleaner solution would have
% been to extract the information from the GF files with a program;
% but writing the program would have been hardly less boring and would
% have taken up much more time.
%
%    \begin{macrocode}
\def\M@makeboxes{%
  \M@metra@font=%
  \ifx \@currsize \Large 6 \else
  \ifx \@currsize \large 5 \else
  \ifx \@currsize \normalsize 4 \else
  \ifx \@currsize \small 3 \else
  \ifx \@currsize \footnotesize 2 \else
  \ifx \@currsize \scriptsize 1 \else
  \ifx \@currsize \LARGE 7 \else
  \ifx \@currsize \huge 8 \else
  \ifx \@currsize \Huge 9 \else
  \ifx \@currsize \tiny 0 
  \fi\fi\fi\fi\fi\fi\fi\fi\fi\fi
%    \end{macrocode}
%
% Macron and breve
%
%    \begin{macrocode}
  \setbox0=\hbox{\char22}%
  \global\M@dim@m=.73\wd0 
  \global\M@dim@b=.59\wd0 
  \ifnum 2>\M@metra@font \global\M@dim@b=.58\wd0 
  \else
    \ifnum 4=\M@metra@font \global\M@dim@b=.575\wd0 
    \else
      \ifnum 5=\M@metra@font \global\M@dim@b=.575\wd0 
      \else
        \ifnum 6=\M@metra@font \global\M@dim@b=.5775\wd0 
        \else
          \ifnum 7=\M@metra@font \global\M@dim@b=.595\wd0 
          \fi
        \fi
      \fi
    \fi
   \fi
  \global\M@dim@p=.25\wd0 
  \global\setbox\M@box@m=\hbox to \M@dim@m{%
    \hss
    \dimen0=1.235\M@metra@ex
    \ifcase \@ptsize
      \ifnum 1=\M@metra@font \dimen0=1.2\M@metra@ex
      \else
        \ifnum 9=\M@metra@font \dimen0=1.25\M@metra@ex
        \fi
      \fi
    \or
      \ifnum 0=\M@metra@font \dimen0=1.25\M@metra@ex
      \else
        \ifnum 9=\M@metra@font \dimen0=1.25\M@metra@ex
        \fi
      \fi
    \or
      \ifnum 0=\M@metra@font \dimen0=1.25\M@metra@ex
      \else
        \ifnum 7<\M@metra@font \dimen0=1.25\M@metra@ex
        \fi
      \fi
    \fi
    \lower\dimen0\hbox{\char22}%
    \hss
  }%
  \dimen0=.089\M@metra@ex
  \ifcase \@ptsize
    \ifnum 4>\M@metra@font
      \dimen0=.08\M@metra@ex
    \else
      \ifnum 6<\M@metra@font
        \dimen0=.05\M@metra@ex
      \fi
    \fi
  \or
     \dimen0=.08\M@metra@ex
  \or
     \dimen0=.08\M@metra@ex
  \fi
  \global\ht\M@box@m=\dimen0 
  \global\dp\M@box@m=\z@
%    \end{macrocode}
%
%    \begin{macrocode}
  \global\setbox\M@box@b=\hbox to \M@dim@b{%
    \hss
    \lower 1.142\M@metra@ex\hbox{\char21}%
    \hss}%
  \global\ht\M@box@b=.495\M@metra@ex
  \global\dp\M@box@b=\z@
  \global\M@dim@bsink=.4\ht\M@box@b
%    \end{macrocode}
%
% Dot
%
%    \begin{macrocode}
  \global\setbox\M@box@p=\hbox to \M@dim@p{%
    \hss
    \lower 1.3\M@metra@ex\hbox{\char95}%
    \hss}%
  \global\ht\M@box@p=.15\M@metra@ex
  \global\dp\M@box@p=\z@
%    \end{macrocode}
%
%  Triseme (equivalent to \metra{\m\b})
%
%    \begin{macrocode}
  \global\setbox\M@box@tsmb=\hbox{%
    \vrule height .4\M@metra@ex width \ht\M@box@m
    \hbox to 1.667\M@dim@m{%
      \leaders\hrule height \ht\M@box@m\hfill}}%
  \dimen0=1.667\M@dim@m
  \advance \dimen0 by \ht\M@box@m
  \global\wd\M@box@tsmb=\dimen0 
  \global\ht\M@box@tsmb=.2\M@metra@ex
  \global\dp\M@box@tsmb=\z@
%    \end{macrocode}
%
% Triseme (equivalent to \metra{\b\m})
%
%    \begin{macrocode}
  \global\setbox\M@box@tsbm=\hbox{%
    \hbox to 1.667\M@dim@m{%
      \leaders\hrule height \ht\M@box@m\hfill}%
    \vrule height .4\M@metra@ex width \ht\M@box@m}%
  \dimen0=1.667\M@dim@m
  \advance \dimen0 by \ht\M@box@m
  \global\wd\M@box@tsbm=\dimen0 
  \global\ht\M@box@tsbm=.2\M@metra@ex
  \global\dp\M@box@tsbm=\z@
%    \end{macrocode}
%
%  Tetraseme
%
%    \begin{macrocode}
  \global\setbox\M@box@tsmm=\hbox{%
     \vrule height .4\M@metra@ex width \ht\M@box@m%
     \hbox to 1.667\M@dim@m{%
       \leaders\hrule height \ht\M@box@m\hfill}%
     \vrule height .4\M@metra@ex width \ht\M@box@m%
       \kern \ht\M@box@m}%
  \dimen0=1.667\M@dim@m
  \advance \dimen0 by 2\ht\M@box@m
  \global\wd\M@box@tsmm=\dimen0 
  \global\ht\M@box@tsmm=.2\M@metra@ex
  \global\dp\M@box@tsmm=\z@
%    \end{macrocode}
%
%  Pentaseme
%
%    \begin{macrocode}
  \global\setbox\M@box@ps=\hbox{%
     \vrule height .4\M@metra@ex width \ht\M@box@m%
     \hbox to .82\M@dim@m{%
       \leaders\hrule height \ht\M@box@m\hfill}%
     \vrule height .4\M@metra@ex width \ht\M@box@m%
     \hbox to .825\M@dim@m{%
       \leaders\hrule height \ht\M@box@m\hfill}%
     \vrule height .4\M@metra@ex width \ht\M@box@m%
       \kern \ht\M@box@m}%
  \dimen0=1.667\M@dim@m
  \advance \dimen0 by 3\ht\M@box@m
  \global\wd\M@box@ps=\dimen0 
  \global\ht\M@box@ps=.2\M@metra@ex
  \global\dp\M@box@ps=\z@
%    \end{macrocode}
% 
% Acute accent
%
%    \begin{macrocode}
  \global\setbox\M@box@A=\hbox{%
    \hss
    \lower 1.1\M@metra@ex\hbox{\char19}%
    \hss}%
  \global\ht\M@box@A=.175\M@metra@ex
  \global\dp\M@box@A=\z@
%    \end{macrocode}
%
% Grave accent
%
%    \begin{macrocode}
  \global\setbox\M@box@G=\hbox{%
    \hss
    \lower 1.1\M@metra@ex\hbox{\char18}%
    \hss}%
  \global\ht\M@box@G=.2\M@metra@ex
  \global\dp\M@box@G=\z@
%    \end{macrocode}
%
% The symbols that follow are all taken from the math font.
%
%    \begin{macrocode}
  \begingroup
%    \end{macrocode}
% 
% Catalexis (large)
% 
%    \begin{macrocode}
  \begingroup$\textstyle
    \global\setbox\M@box@K=\hbox{%
      \lower 1.25ex \hbox{\hss\symbol{"5E}\hss}}%
  $\endgroup
%    \end{macrocode}
% 
%    \begin{macrocode}
  \relsize{-3}%
%    \end{macrocode}
% 
% Catalexis (small)
% 
%    \begin{macrocode}
  \begingroup$\scriptscriptstyle
    \global\setbox\M@box@k=\hbox{%
      \lower 1.25ex \hbox{\hss\symbol{"5E}\hss}}%
  $\endgroup
%    \end{macrocode}
%
%    \begin{macrocode}
  \dimen0=\f@baselineskip
  \fontencoding{OMS}\fontfamily{cmsy}\fontseries{m}%
  \fontshape{n}%
  \fontsize{\f@size}{\dimen0}%
  \selectfont
%    \end{macrocode}
% \newpage
% Anceps
% 
%    \begin{macrocode}
  \begingroup
  \relsize{-2}%
  \global\setbox0=\hbox{\symbol{"02}}%
  \global\setbox\M@box@a=%
    \hbox to .675\wd0{\hss\symbol{"02}\hss}%
  \endgroup
  \global\ht\M@box@a=.82\ht0 
  \global\dp\M@box@a=\z@
%    \end{macrocode}
% 
% Circle
% 
%    \begin{macrocode}
  \dimen0=\f@baselineskip
  \begingroup
  \relsize{+1}%
  \fontsize{\f@size}{\dimen0}%
  \selectfont
  \setbox0=\hbox{\symbol{"0E}}%
  \global\setbox\M@box@o=\hbox to .733\wd0{\hss%
    \lower .08\M@metra@ex\hbox{\symbol{"0E}}\hss}%
  \endgroup
  \global\ht\M@box@o=.8\ht0 
  \global\dp\M@box@o=\z@
  \endgroup
}
%    \end{macrocode}
%
% \subsubsection{Generating the symbols} 
%
% All the dirty work done in |\M@makeboxes| pays off now.  Putting
% the symbols together is child's play, like stacking
% LEGO{\kern .1em \raise 1ex \hbox{\tiny \textregistered}} 
% pieces.
%
% The general scheme is that, for each user command |\|\textit{x},
% there is a macro |\M@@|\textit{x} that sets the symbol and a macro
% |\M@|\textit{x} which calls |\M@@|\textit{x} and takes care of 
% \textit{inter signa} spacing.
%
%    \begin{macrocode}
\def\M@s{\kern \M@dim@s \nobreak}
%    \end{macrocode}
%
%    \begin{macrocode}
\def\M@@m{\copy\M@box@m}
\def\M@m{\M@head \M@@m \M@tail}
\def\M@M{\M@head \M@acutus \M@@m \M@tail}
\def\M@gM{\M@head \M@gravis \M@@m \M@tail}
%    \end{macrocode}
%
%    \begin{macrocode}
\def\M@@lm{\M@@m \kern -\wd\M@box@m \kern \wd\M@box@b \M@@m}
\def\M@lm{\M@head \M@@lm \M@tail}
%    \end{macrocode}
%
%    \begin{macrocode}
\def\M@@b{\hbox{\M@en@check{\M@dim@bsink}\copy \M@box@b}}
\def\M@b{\M@head \M@@b \M@tail}
\def\M@B{\M@head \M@acutus \M@@b \M@tail}
\def\M@gB{\M@head \M@gravis \M@@b \M@tail}
%    \end{macrocode}
%
%    \begin{macrocode}
\def\M@a{%
    \M@head \M@en@check{.4\ht\M@box@a}\copy\M@box@a
    \M@dirty@trick\M@box@a \M@tail}
\def\M@@ma{%
  \M@en@check{.4\ht\M@box@a}\M@stack{\M@box@m}{\M@box@a}}
\def\M@ma{\M@head   \M@@ma \M@tail}
\def\M@Ma{\M@head \M@acutus \M@@ma \M@tail}
\def\M@gMa{\M@head \M@gravis \M@@ma \M@tail}
%    \end{macrocode}
%
%    \begin{macrocode}
\def\M@o{%
  \M@head \M@en@check{.4\ht\M@box@o}\copy \M@box@o \M@tail}
\def\M@oo{\M@o \M@o}
%    \end{macrocode}
%
%    \begin{macrocode}
\def\M@@bb{\M@@b\M@@b}
\def\M@bb{\M@head \M@@bb \M@tail}
\def\M@Bb{\M@head \M@A{.5}\M@@b \M@@b \M@tail}
\def\M@gBb{\M@gravistrue \M@Bb \M@gravisfalse}
\def\M@bB{\M@head \M@@b \M@A{.5}\M@@b \M@tail}
\def\M@gbB{\M@gravistrue \M@bB \M@gravisfalse}
\def\M@BB{\M@head \M@acutus \M@@bb \M@tail}
\def\M@gBB{\M@head \M@gravis \M@bb \M@tail}
%    \end{macrocode}
%
%    \begin{macrocode}
\def\M@@bm{%
  \setbox0=\M@stack{\M@box@b}{\M@box@m}%
  \dimen0=\M@dim@bsink
  \advance \dimen0 by \M@intervallum\M@metra@ex
  \advance \dimen0 by \ht\M@box@m
  \M@en@check{\dimen0}\box0\relax 
}
\def\M@bm{\M@head \M@@bm \M@tail}
\def\M@Bm{\M@head \M@acutus \M@@bm \M@tail}
\def\M@gBm{\M@head \M@gravis \M@bm \M@tail}
%    \end{macrocode}
%
%    \begin{macrocode}
\def\M@@mb{%
 \setbox0=\M@stack{\M@box@m}{\M@box@b}%
 \M@en@check{\M@dim@bsink}\box0\relax
}
\def\M@mb{\M@head \M@@mb \M@tail}
\def\M@Mb{\M@head \M@acutus \M@@mb \M@tail}
\def\M@gMb{\M@head \M@gravis \M@mb \M@tail}
%    \end{macrocode}
%
%    \begin{macrocode}
\def\M@@mbb{\M@@mb \kern -\wd\M@box@m \kern \wd\M@box@b \M@@mb}
\def\M@mbb{\M@head \M@@mbb \M@tail}
\def\M@Mbb{\M@head \M@acutus \M@@mbb \M@tail}
\def\M@mBb{\M@head \M@acutus[.25]\M@@mbb \M@tail}
\def\M@mbB{\M@head \M@acutus[.75]\M@@mbb \M@tail}
\def\M@gMbb{\M@head \M@gravis \M@@mbb \M@tail}
\def\M@gmBb{\M@head \M@gravis[.25]\M@@mbb \M@tail}
\def\M@gmbB{\M@head \M@gravis[.75]\M@@mbb \M@tail}
%    \end{macrocode}
%
%    \begin{macrocode}
\def\M@@bbm{\M@@bm \kern -\wd\M@box@m \kern \wd\M@box@b \M@@bm}
\def\M@bbm{\M@head \M@@bbm \M@tail}
\def\M@BBm{\M@head \M@acutus \M@@bbm \M@tail}
\def\M@Bbm{\M@head \M@acutus[.25]\M@@bbm \M@tail}
\def\M@bBm{\M@head \M@acutus[.75]\M@@bbm \M@tail}
\def\M@gBBm{\M@head \M@gravis \M@@bbm \M@tail}
\def\M@gBbm{\M@head \M@gravis[.25]\M@@bbm \M@tail}
\def\M@gbBm{\M@head \M@gravis[.75]\M@@bbm \M@tail}
%    \end{macrocode}
%
%    \begin{macrocode}
\def\M@@bba{%
 \edef\M@opt@save{\M@opt@style}%
 \def\M@opt@style{0}%
 \setbox0=\hbox{\M@@bb}%
 \edef\M@opt@style{\M@opt@save}%
 \setbox0=\hbox to \wd0{\hss\M@stack{0}{\M@box@a}\hss}%
 \M@en@check{.5\ht\M@box@a}\box0\relax
}
\def\M@bba{\M@head \M@@bba \M@tail}
%    \end{macrocode}
%
%    \begin{macrocode}
\def\M@@bbb{%
 \edef\M@opt@save{\M@opt@style}%
 \def\M@opt@style{0}%
 \setbox0=\hbox{\M@@bb}%
 \edef\M@opt@style{\M@opt@save}%
 \setbox0=\hbox to \wd0{\hss\M@stack{0}{\M@box@b}\hss}%
 \M@en@check{\M@dim@bsink}\box0\relax
}
\def\M@bbb{\M@head \M@@bbb \M@tail}
%    \end{macrocode}
%
% This strange symbol needs some extra work.
%
%    \begin{macrocode}
\def\M@bbmb{%
  \M@head
  \dimen0=\M@intervallum\M@metra@ex 
  \if 2\M@opt@style %                the [En] option
    \edef\M@opt@save{\M@opt@style}%
    \def\M@opt@style{0}%
    \setbox0=\hbox{\M@@lm}% 
    \copy0 
    \kern -\wd0 
    \dimen1=\dimen0 
    \advance \dimen1 by \ht\M@box@b
    \lower \dimen1 \hbox to \wd0{\hss\M@@b\hss}%
    \global\M@dim@sunk=\dimen1
    \kern -\wd0 
    \dimen1=\dimen0 
    \advance \dimen1 by \ht\M@box@m
    \raise \dimen1 \hbox to \wd0{\hss\M@@bb\hss}%
    \edef\M@opt@style{\M@opt@save}%
  \else
    \edef\M@opt@save{\M@opt@style}%
    \def\M@opt@style{0}%
    \setbox0=\hbox{\M@@bbm}% 
    \edef\M@opt@style{\M@opt@save}%
    \global\M@dim@sunk=\z@
    \hbox to \wd0{\hss\M@@b\hss}%
    \kern -\wd0 
    \advance \dimen0 by \ht\M@box@b
    \advance \dimen0 by -\M@dim@sunk
    \raise \dimen0 \box0 
  \fi
  \M@tail
}
%    \end{macrocode}
%
%    \begin{macrocode}
\def\M@p{%
  \M@head
  \if 0\M@opt@style
    \relax
  \else
    \lower .5\ht\M@box@p
  \fi
  \copy\M@box@p
  \M@tail
}
%    \end{macrocode}
%
%    \begin{macrocode}
\def\M@@pm{%
  \setbox0=\hbox{\hss\copy\M@box@p\hss}%
  \M@stack{0}{\M@box@m}%
}
\def\M@pm{\M@head   \M@@pm \M@tail}
%    \end{macrocode}
%
%    \begin{macrocode}
\def\M@@ppm{%
  \setbox0=\hbox{\copy\M@box@p\kern .33\wd\M@box@p\copy\M@box@p}%
  \M@stack{0}{\M@box@m}%
}
\def\M@ppm{\M@head \M@@ppm \M@tail}
%    \end{macrocode}
%
%    \begin{macrocode}
\def\M@pppm{%
  \M@head
  \setbox0=\hbox{\M@@ppm}%
  \ht0=1.2\ht0 
  \M@stack{\M@box@p}{0}%
  \M@tail
}
%    \end{macrocode}
%
%    \begin{macrocode}
\def\M@@pp{%
  \setbox0=\vbox{\copy\M@box@p
                 \nointerlineskip\kern 2\M@dim@bsink
                 \copy\M@box@p
  }%
  \M@en@caesura{.25\M@dim@bsink}%
}
\def\M@pp{\kern \M@dim@c@ext \M@@pp \kern \M@dim@c@ext
          \M@interfalse}
\def\M@Pp{\kern \M@dim@c@Ext \M@@pp \kern \M@dim@c@Ext
          \M@interfalse}
%    \end{macrocode}
%
%    \begin{macrocode}
\def\M@@pxp{%
  \setbox0=\vbox{\vskip 1.125\M@dim@bsink
                 \nointerlineskip \vskip .5\ht\M@box@p
                 \copy\M@box@p
                 \nointerlineskip \vskip 2.25\M@dim@bsink
                 \copy\M@box@p
                 \nointerlineskip \vskip 1.125\M@dim@bsink
                 \nointerlineskip \vskip .5\ht\M@box@p
  }%
  \M@en@caesura{1\M@dim@bsink}%
}
\def\M@pxp{\kern \M@dim@c@ext \M@@pxp \kern \M@dim@c@ext
          \M@interfalse}
\def\M@Pxp{\kern \M@dim@c@Ext \M@@pxp \kern \M@dim@c@Ext
          \M@interfalse}
%    \end{macrocode}
%
%    \begin{macrocode}
\def\M@@ppp{%
  \setbox0=\vbox{\copy\M@box@p
                 \nointerlineskip\vskip 2.25\M@dim@bsink
                 \copy\M@box@p
                 \nointerlineskip\vskip 2.25\M@dim@bsink
                 \copy\M@box@p
  }%
  \M@en@caesura{1\M@dim@bsink}%
}
\def\M@ppp{\kern \M@dim@c@ext \M@@ppp \kern \M@dim@c@ext
           \M@interfalse}
\def\M@Ppp{\kern \M@dim@c@Ext \M@@ppp \kern \M@dim@c@Ext
           \M@interfalse}
%    \end{macrocode}
%
%    \begin{macrocode}
\def\M@@pppp{%
  \setbox0=\vbox{\copy\M@box@p
                 \nointerlineskip\vskip 1.26\M@dim@bsink
                 \copy\M@box@p
                 \nointerlineskip\vskip 1.26\M@dim@bsink
                 \copy\M@box@p
                 \nointerlineskip\vskip 1.26\M@dim@bsink
                 \copy\M@box@p
  }%
  \M@en@caesura{1\M@dim@bsink}%
}
\def\M@pppp{\kern \M@dim@c@ext \M@@pppp \kern \M@dim@c@ext
            \M@interfalse}
\def\M@Pppp{\kern \M@dim@c@Ext \M@@pppp \kern \M@dim@c@Ext
            \M@interfalse}
%    \end{macrocode}
%
%    \begin{macrocode}
\def\M@@ppppp{%
  \setbox0=\vbox{\copy\M@box@p
                 \nointerlineskip\vskip .775\M@dim@bsink
                 \copy\M@box@p
                 \nointerlineskip\vskip .775\M@dim@bsink
                 \copy\M@box@p
                 \nointerlineskip\vskip .775\M@dim@bsink
                 \copy\M@box@p
                 \nointerlineskip\vskip .775\M@dim@bsink
                 \copy\M@box@p
  }%
  \M@en@caesura{\M@dim@bsink}%
}
\def\M@ppppp{\kern \M@dim@c@ext \M@@ppppp \kern \M@dim@c@ext
             \M@interfalse}
\def\M@Ppppp{\kern \M@dim@c@Ext \M@@ppppp \kern \M@dim@c@Ext
             \M@interfalse}
%    \end{macrocode}
%
%    \begin{macrocode}
\def\M@@vppm{%
  \setbox0=\hbox{\M@@pm}%
  \ht0=1.3\ht0 
  \M@stack{\M@box@p}{0}%
}
\def\M@vppm{\M@head \M@@vppm \M@tail}
%    \end{macrocode}
%
%    \begin{macrocode}
\def\M@@vpppm{%
  \setbox0=\hbox{\M@@vppm}%
  \ht0=1.15\ht0 
  \M@stack{\M@box@p}{0}%
}
\def\M@vpppm{\M@head \M@@vpppm \M@tail}
%    \end{macrocode}
%
%    \begin{macrocode}
\def\M@caesura{%
  \setbox0=\hbox{%
             \vrule width .03em depth .21\M@metra@ex
             height 1.25\M@metra@ex
  }%
  \M@en@caesura{\z@}%
}
%    \end{macrocode}
%
%    \begin{macrocode}
\def\M@C{\kern \M@dim@c@Ext \M@caesura \kern \M@dim@c@Ext
         \M@interfalse}
\def\M@c{\kern \M@dim@c@ext \M@caesura \kern \M@dim@c@ext
         \M@interfalse}
%    \end{macrocode}
%
%    \begin{macrocode}
\def\M@cc{\kern \M@dim@c@ext \M@caesura \kern \M@dim@c@int
                             \M@caesura \kern \M@dim@c@ext
                             \M@interfalse}
\def\M@Cc{\kern \M@dim@c@Ext \M@caesura \kern \M@dim@c@int
                             \M@caesura \kern \M@dim@c@Ext
                             \M@interfalse}
%    \end{macrocode}
%
%    \begin{macrocode}
\def\M@ccc{\kern \M@dim@c@ext \M@caesura \kern \M@dim@c@int
                              \M@caesura \kern \M@dim@c@int
                              \M@caesura \kern \M@dim@c@ext
                              \M@interfalse}
\def\M@Ccc{\kern \M@dim@c@Ext \M@caesura \kern \M@dim@c@int
                              \M@caesura \kern \M@dim@c@int
                              \M@caesura \kern \M@dim@c@Ext
                              \M@interfalse}
%    \end{macrocode}
%
%    \begin{macrocode}
\def\M@v{%
  \begingroup
  \M@text@fontsize
  \setbox0=\hbox{,},\kern -\wd0 \kern \M@dim@s
  \endgroup
}
%    \end{macrocode}
%
%    \begin{macrocode}
\def\M@r{\M@bigfalse\M@@r}
\def\M@R{\M@bigtrue\M@@r}
\newcommand{\M@@r}[1][0]{\leavevmode
  \M@head
  \setbox0=\hbox{%
    $\ifM@big \scriptstyle 
      \else \scriptscriptstyle \fi \sim$\unskip}%
  \dimen0=\ifM@big -.05\else .1\fi\M@metra@ex
  \advance \dimen0 by #1\M@metra@ex
  \if 0\M@opt@style
    \relax
  \else
    \advance \dimen0 by -\M@dim@bsink
  \fi
  \raisebox {\dimen0}[\z@][\z@]{\copy0}%
  \M@dirty@trick 0\relax 
  \M@tail
}
%    \end{macrocode}
%
%    \begin{macrocode}
\def\M@t{\M@bigfalse\M@@t}
\def\M@T{\M@bigtrue\M@@t}
\newcommand{\M@@t}[1][0]{\leavevmode
  \M@head
  \setbox0=\hbox{%
    $\ifM@big \scriptstyle \else
              \scriptscriptstyle \fi \otimes$\unskip}%
  \dimen0=\ifM@big -.05 \else .1 \fi \M@metra@ex
  \advance \dimen0 by #1\M@metra@ex
  \if 0\M@opt@style
    \relax
  \else
    \advance \dimen0 by -\M@dim@bsink
  \fi
  \raisebox {\dimen0}[\z@][\z@]{\copy0}%
  \M@dirty@trick 0\relax 
  \M@tail
}
%    \end{macrocode}
%
%    \begin{macrocode}
\def\M@x{%
  \M@head
  \setbox0=\vbox{\copy\M@box@p
                 \nointerlineskip\kern 2\M@dim@bsink
                 \copy\M@box@p
  }%
  \setbox0=\hbox{\copy0\kern \wd\M@box@p \copy0}%
  \M@en@check{.5\ht0}%
  \copy0 
  \M@tail
}
%    \end{macrocode}
%
%    \begin{macrocode}
\def\M@tsmb{\M@head \copy\M@box@tsmb \M@tail}
\def\M@tsbm{\M@head \copy\M@box@tsbm \M@tail}
\def\M@tsmm{\M@head \copy\M@box@tsmm \M@tail}
\def\M@ps{\M@head \copy\M@box@ps \M@tail}
%    \end{macrocode}
%
% \subsubsection{Service macros} 
%
% Switch to CMR OT1.
%
%    \begin{macrocode}
\def\M@cmr{\fontencoding{OT1}\fontfamily{cmr}\fontseries{m}%
  \fontshape{n}\selectfont
}
%    \end{macrocode}
%
% Generate \textit{inter signa} spacing.
%
%    \begin{macrocode}
\def\M@head{\leavevmode
  \ifM@inter
    \expandafter\hskip\M@interS\M@dim@m\relax
  \fi
  \M@interfalse
  \M@vert@barfalse
}
\def\M@tail{\M@intertrue}
%    \end{macrocode}
%
% Stack one box on top of another, keeping them centered
% around the vertical axis.
%
%    \begin{macrocode}
\def\M@stack#1#2{%
  \hbox{%
    \dimen0=\wd#1\relax
    \ifdim \dimen0<\wd#2\relax 
      \dimen0=\wd#2\relax
    \fi
    \dimen1=\ht#2\relax
    \advance \dimen1 by \M@intervallum\M@metra@ex
    \hbox to \dimen0{\hss\copy#2\hss}%
    \kern -\dimen0 
    \raise \dimen1 \hbox to \dimen0{\hss\copy#1\hss}%
  }%
}
%    \end{macrocode}
%  
% This macro (used by |\tie| and |\n|) stacks |\box1| over
% (|\dimen2|\textgreater0) or under (|\dimen2|\textless0) |\box0|.
% |\dimen2| holds the amount by which to raise/lower; |\dimen3| the
% (possible) correction for \textit{inter signa} space.
%
% |\box0| is actually set only if the parameter is 0.
%  
%    \begin{macrocode}
\def\M@Stack#1{%
  \ifnum #1=\z@
    \copy0 
  \fi
  \dimen0=\wd0 
  \advance \dimen0 by -\dimen3  
  \advance \dimen0 by \wd1 
  \kern -.5\dimen0 
  \raisebox {\dimen2}[\z@][\z@]{\copy1}%
  \dimen0=\wd0 
  \advance \dimen0 by -\wd1 
  \advance \dimen0 by -\dimen3 
  \dimen0=.5\dimen0 
  \kern \dimen0\relax 
}
%    \end{macrocode}
%
% If using the English style, lower the box and remember the amount
% by which it has been lowered.
%
%    \begin{macrocode}
\def\M@en@check#1{%
  \if 0\M@opt@style
    \relax
  \else
    \global\M@dim@sunk=#1\relax
    \lower #1\relax
  \fi
}
%    \end{macrocode}
%
% If using the English style, lower the \textit{caesura} symbols so
% that they come out in the same position as in the standard style.
%
%    \begin{macrocode}
\def\M@en@caesura#1{%
   \dimen0=\if 0\M@opt@style 0\else .5\fi\M@text@ex
   \advance \dimen0 by \M@subS\M@text@ex
   \advance \dimen0 by #1\relax 
   \lower \dimen0 \copy0 
   \M@vert@bartrue
}
%    \end{macrocode}
%
% \subsubsection{Placing marks on symbols} 
%
% Put an accent over a symbol.
%
%    \begin{macrocode}
\newcommand{\M@acutus}[2][.5]{%
  \M@head \M@A{#1}{#2}\M@tail}
\newcommand{\M@gravis}[2][.5]{%
  \M@gravistrue \M@A{#1}{#2}\M@gravisfalse}
%    \end{macrocode}
%
%    \begin{macrocode}
\def\M@A#1#2{%
  \setbox1=\hbox{#2}%
  \dimen1=\ht1 
  \dimen2=\ht\M@box@b
  \if 0\M@opt@style
     \relax
  \else
     \advance \dimen2 by -\M@dim@sunk 
  \fi
  \ifdim \dimen1<\dimen2 
    \dimen1=\dimen2 
  \fi
  \copy1\relax
  \dimen0=#1\wd1 
  \advance \dimen0 by -1.5\wd1 
  \kern \dimen0 
  \raise \dimen1 
    \hbox to \wd1{%
      \hss
      \ifM@gravis
        \ifdim \wd1>\M@dim@m 
          \kern -.1\wd\M@box@G
        \fi
        \copy\M@box@G
      \else 
        \ifdim \wd1>\M@dim@m
          \kern .1\wd\M@box@A
        \fi
        \copy\M@box@A
      \fi
      \hss
    }%
  \dimen0=#1\wd1 
  \advance \dimen0 by -.5\wd1 
  \kern -\dimen0\relax 
}
%    \end{macrocode}
%
% Put the mark for \textit{catalexis} under a symbol.
%
%    \begin{macrocode}
\def\M@k#1{\M@head  \M@@Kk{#1}{\M@box@k}\relax \M@tail}
\def\M@K#1{\M@head  \M@@Kk{#1}{\M@box@K}\relax \M@tail}
%    \end{macrocode}
%
%    \begin{macrocode}
\def\M@@Kk#1#2{%
  \global\M@dim@sunk=\z@
  \setbox1=\hbox{#1}%
  \dimen1=.667\ht\M@box@b
  \ifx #2\M@box@K
    \dimen1=1.33\dimen1 
  \fi
  \advance \dimen1 by \M@dim@sunk
  #1\relax
  \kern -\wd1 
  \raisebox {-\dimen1}[\z@][\z@]%
    {\hbox to \wd1{\hss\copy#2\hss}}%
}
%    \end{macrocode}
%
% Put some kind of quotation marks around the argument .
%
%    \begin{macrocode}
\def\M@q#1#2{\M@head \M@@q{#1}{0}{#2}\relax \M@tail}
\def\M@Q#1#2{\M@head \M@@q{#1}{1}{#2}\relax \M@tail}
%    \end{macrocode}
%
%    \begin{macrocode}
\def\M@@q#1#2#3{%
  \dimen0=\z@
  \if 0\M@opt@style
    \relax
  \else
    \advance \dimen0 by -\M@dim@bsink
  \fi
  \dimen1=\z@
  \def\M@q@size{4}% 
  \def\M@Q@size{2}% 
  \ifx !#1\relax
    \def\M@q@ante{\M@cmr\texttt{\char"0D}}%
    \def\M@q@post{\M@cmr\texttt{\char"0D}}%
    \dimen1=-.075em
  \else \ifx '#1\relax
    \def\M@q@ante{\M@cmr\char"60}%
    \def\M@q@post{\M@cmr\char"27}%
  \else \ifx (#1\relax
    \def\M@q@ante{%
      \fontencoding{OML}\fontfamily{cmm}\fontseries{m}%
      \fontshape{it}\selectfont\symbol{"2C}}%
    \def\M@q@post{%
      \fontencoding{OML}\fontfamily{cmm}\fontseries{m}%
      \fontshape{it}\selectfont\symbol{"2D}}%
    \def\M@q@size{6}% 
    \def\M@Q@size{5}% 
    \advance \dimen0 by .33ex
    \dimen1=.05em
  \else \ifx "#1\relax
    \def\M@q@ante{\M@cmr\char"5C}%
    \def\M@q@post{\M@cmr\char"22}%
    \dimen1=.05em
  \else \ifx <#1\relax
    \def\M@q@ante{%
      \fontencoding{U}\fontfamily{lasy}%
      \fontseries{b}\fontshape{n}%
      \selectfont\symbol{"28}%
      \kern -.2em\symbol{"28}\kern .1em\relax}%
    \def\M@q@post{%
      \fontencoding{U}\fontfamily{lasy}%
      \fontseries{b}\fontshape{n}%
      \selectfont\kern .1em\symbol{"29}%
      \kern -.2em\symbol{"29}}%
    \def\M@q@size{5}% 
    \def\M@Q@size{3}% 
    \dimen1=-.05em
    \advance \dimen0 by .33ex
  \else
      \PackageError{metre}%
        {Invalid character after %
         \protect\q \space or \protect\Q}%
        {Valid characters are:  \protect( %
         \protect' \protect" %
         \protect! \protect<}%
  \fi\fi\fi\fi\fi
  \raise \dimen0 \hbox{%
    \begingroup
    \relsize{-\if 1#2\M@Q@size\else \M@q@size\fi}%
    \setbox0=\hbox{\M@q@ante}%
    \copy0 
    \endgroup
  }%
  \M@dirty@trick 0\relax 
  \leavevmode \kern \dimen1
  {\M@interfalse#3}% 
  \leavevmode \kern \dimen1
  \raise \dimen0 \hbox{%
    \begingroup
    \relsize{-\if 1#2\M@Q@size\else \M@q@size\fi}%
    \setbox0=\hbox{\M@q@post}%
    \copy0 
    \endgroup
  }%
  \M@dirty@trick 0\relax
}
%    \end{macrocode}
%
% Put a \textit{caesura} in the middle of a symbol.
%
%    \begin{macrocode}
\def\M@d#1{\M@head  \M@@d#1\relax \M@tail}
\def\M@@d#1{%
  \setbox1=\hbox{#1}%
  #1\relax \kern -\wd1 
  \hbox to \wd1{\hfill \M@caesura \hfill}%
}
%    \end{macrocode}
%
% Raise text to superscript.
%
%    \begin{macrocode}
\newcommand{\M@super@metra}[2][0]{%
  \begingroup
  \tiny
  \setbox0=\hbox{#2}%
  \dimen0=1.25\M@metra@ex
  \advance \dimen0 by
    \if 0\M@opt@style 
      \z@
    \else
      \ifM@vert@bar -.5\M@text@ex \else -\M@dim@bsink \fi
    \fi
  \advance \dimen0 by \M@subS\M@text@ex
  \advance \dimen0 by -\ht0 
  \advance \dimen0 by #1\M@metra@ex 
  \raise \dimen0 \hbox{\kern .05\wd0#2}%
  \endgroup
  \M@vert@barfalse
}
%    \end{macrocode}
%
% \subsubsection{A very dirty trick} 
%
% This seemingly absurd piece of code solves a very annoying and 
% mysterious problem that occurs after symbols taken from the math font.
% The problem can be seen by turning the macro into a no-op and
% compiling this text:\par
% \quad\quad |\metra{\a\bbm}\par\metra{\a\bbm}|\par
% Depending on the DVI driver and the font in use, you may see nothing amiss;
% but, more likely, you will find that in one of the metrical schemes 
% (usually the second) a very thin space has crept under the first
% \textit{macron}.  The problem seems to arise from the change of
% |\baselineskip| due to the font switch and, from some experiments
% I have done, I got the impression that it occurs within the DVI
% driver itself (I could see nothing in the DVI file that would account for
% the thin space).  In any case, this cannot be considered a bug,
% as Knuth obviously had no reason to envisage the unorthodox use to which
% math symbols are put in |metre|.
% 
% After spending an inordinate amount of time hunting for a solution,
% I finally hit upon the idea behind this dirty trick.
% The question mark, being raised by 1 metre (actually 1 metre plus
% a whisker), buffers the shock of the font switch and then vanishes
% harmlessly into empty space.
%
% The macro parameter is the identifier of the box containing the math symbol.
%    \begin{macrocode}
\def\M@dirty@trick#1{%
  \kern -\wd#1\relax
  \raisebox {100cm}[\z@][\z@]{\hbox to \wd#1{\hss?\hss}}%
}
%    \end{macrocode}
%
% \subsubsection{Placing annotations on symbols}
%
%    \begin{macrocode}
\newcommand{\M@n}[3][1]{\M@@n{\hss#2\hss}{#3}{0}{#1}{0}}
\newcommand{\M@ni}[3][1]{\M@@n{\hss#2\hss}{#3}{1}{#1}{0}}
%    \end{macrocode}
%
%    \begin{macrocode}
\def\M@@n#1#2#3#4#5{%
%    \end{macrocode}
%  All the work is done by |\M@@n|:
%
%  |#1| is the text to be set above or below |#2| depending on the value
%  of |#3| (0~= above, 1 = below) at a distance that may be modified
%  by |#4|.
%
%  The box containing |#2| is generated only if |#5| = 0
%
%    \begin{macrocode}
  \M@head
  \global\M@dim@sunk=\z@
  \ifM@inter
    \dimen3=\M@interS\M@dim@m
  \else
    \dimen3=\z@
  \fi
  \setbox0=\hbox{#2}%
  \begingroup
  \tiny \global\setbox1=\hbox{#1}%
  \endgroup
  \dimen2=\M@intervallum\M@metra@ex
  \dimen2=1.5\dimen2 
  \ifnum #3=\z@
    \advance \dimen2 by \dp1 
    \advance \dimen2 by \ht0 
  \else
    \dimen2=-\dimen2 
    \advance \dimen2 by -\ht1 
    \advance \dimen2 by -\M@dim@sunk
  \fi
  \dimen2=#4\dimen2 
  \M@Stack#5\relax 
  \M@tail
}
%    \end{macrocode}
%
%    \begin{macrocode}
\newcommand{\M@N}[4][1]{%
  \M@@n{%
    \ifx #3\mbbx
      \hfil #2\relax \hfil \kern \M@dim@b
    \else
      \ifx #3\bbmx
        \kern \M@dim@b \hfil #2\relax \hfil
      \else
        \hfil #2\relax \hfil
      \fi
    \fi
  }{#3}{0}{#1}{0}%
  \M@interfalse
  \M@@n{%
    \ifx #3\mbbx
      \kern \M@dim@b \hfil #4\relax \hfil
    \else
      \ifx #3\bbmx
        \hfil #4\relax \hfil \kern \M@dim@b
      \else
        \hfil #4\relax \hfil
      \fi
    \fi
  }{#3}{1}{#1}{1}%
}
%    \end{macrocode}
%
% These two odd symbols are defined here because
% they do not make much sense except as arguments of |\N|.
%
%    \begin{macrocode}
\def\M@mbbx{%
  \M@head
  \setbox0=\hbox{\M@@mbb}%
  \if 0\M@opt@style
    \dimen0=\M@intervallum\M@metra@ex
    \setbox1=\hbox{\m}%
    \advance \dimen0 by \ht1 
    \raise \dimen0 
  \fi
  \copy0 \kern -\M@dim@m
  \M@interfalse \M@@bbm
  \M@tail
}
%    \end{macrocode}
%
%    \begin{macrocode}
\def\M@bbmx{%
  \M@head
  \setbox0=\hbox{\M@@bbm}%
  \copy0 
  \dimen2=\M@dim@sunk
  \kern -\M@dim@m \M@interfalse
  \if 0\M@opt@style
    \dimen0=\M@intervallum\M@metra@ex
    \setbox1=\hbox{\m}%
    \advance \dimen0 by \ht1 
    \raise \dimen0 
  \fi
  \hbox{\M@@mbb}%
  \global\M@dim@sunk=\dimen2 
  \M@tail
}
%    \end{macrocode}
%
%    \begin{macrocode}
\newcommand{\numeri}[1]{\M@numeri#1\end}
\def\M@numeri#1:#2\end{\bgroup\tiny{\it #1}:%
  \kern .2em#2\egroup}
%    \end{macrocode}
%
% \subsection{The \texttt{metrica} environment}
%
% Define abbreviations for common commands
%
%    \begin{macrocode}
\def\M@abbrev{%
  \def\c{\metra{\c}}%
  \def\C{\metra{\C}}%
  \def\cc{\metra{\cc}}%
  \def\Cc{\metra{\Cc}}%
  \def\ccc{\metra{\ccc}}%
  \def\Ccc{\metra{\Ccc}}%
  \def\p{\metra{\p}}%
  \def\pp{\metra{\pp}}%
  \def\Pp{\metra{\Pp}}%
  \def\ppp{\metra{\ppp}}%
  \def\Ppp{\metra{\Ppp}}%
  \def\pppp{\metra{\pppp}}%
  \def\Pppp{\metra{\Pppp}}%
  \def\ppppp{\metra{\ppppp}}%
  \def\Ppppp{\metra{\Ppppp}}%
  \def\pxp{\metra{\pxp}}%
  \def\Pxp{\metra{\Pxp}}%
  \def\pos{\positio}%
  \def\Pos{\Positio}%
  \def\!{\dubia}%
  \let\e=\Elevatio
  \let\t=\Translatio
}
%    \end{macrocode}
% 
%    \begin{macrocode}
\newenvironment{metrica}[1][\relax]{\leavevmode
  \ifx n#1\relax
  \else
    \ifx N#1\relax
    \else
      \ifx \relax#1\relax
        \M@abbrev
      \else
        \PackageError{metre}{%
          Invalid optional parameter for %
            the metrica environment}%
          {The optional parameter must be either `n' or `N'}%
      \fi
    \fi
  \fi
%    \end{macrocode}
%
% Define the commands for prosodical marks.
%
%    \begin{macrocode}
  \def\={\M@tempus{2}}%
  \def\-{\M@tempus{1}}%
  \let\u=\-%
  \ignorespaces
  }{}%                     
%    \end{macrocode}
%
% Place a macron (|#1| = 2) or a breve (|#1| = 1) over |#2|.
%
%    \begin{macrocode}
\def\M@tempus#1#2{\leavevmode
  \def\M@accent{\relax}%
  \if '#2\relax
    \def\M@accent{19}%
  \else
    \if `#2\relax
      \def\M@accent{18}%
    \fi
  \fi
  \let\next=\relax  
  \if \M@accent\relax
    \def\M@char{#2}%
    \let\next=\M@@tempus%        no accent    
  \else
    \let\next=\M@@@tempus%       accent
  \fi
  \next{#1}%
}
\def\M@@@tempus#1#2{%
    \def\M@char{#2}%
    \M@@tempus#1\relax   
}
\def\M@ij#1#2\end{%
  \ifx i#1\relax
    \def\M@char{\i}%
  \else
    \ifx j#1\relax
      \def\M@char{\j}%
    \else
      \def\M@char{#1}%
    \fi
  \fi
  \ifx i#2\relax
    \edef\M@char{\M@char\i}%
  \else
    \ifx j#2\relax
      \edef\M@char{\M@char\j}%
    \else
      \edef\M@char{\M@char#2}%
    \fi
  \fi
}
%    \end{macrocode}
%
%    \begin{macrocode}
\def\M@@tempus#1{%
  \dimen0=1ex
  \dimen0=\M@elevatio\dimen0 
  \ifdim \dimen0=\z@
    \expandafter\M@ij\M@char\end
  \fi
  \dimen3=1em
  \dimen3=\M@translatio\dimen3 
  \setbox0=\hbox{\M@char}%
  \dimen1=\wd0 
  \dimen2=\dimen0  
  \ifdim \dimen0=\z@
    \ifdim \wd0=\z@  
      \dimen2=1ex
    \else
      \dimen2=\ht0 
    \fi
  \fi
  \setbox0=\hbox{%
    \M@char
    \kern -\dimen1 
    \kern \dimen3
    \raise \dimen2 \hbox to \dimen1{%
      \begingroup
      \M@cmr
      \hss
      \raisebox {-1ex}[\z@][\z@]{\hbox{\char2#1}}%
      \hss
      \endgroup
    }%
    \kern -\dimen3
  }%
%    \end{macrocode}
%
% Adjust the height to account for the accent.
%
%    \begin{macrocode}
  \ht0=1.3\ht0 
%    \end{macrocode}
%
% Check for an accent. 
%
%    \begin{macrocode}
  \if \M@accent\relax
%    \end{macrocode}
%
% If no accent, just set the box.
%
%    \begin{macrocode}
    \copy0 
  \else
%    \end{macrocode}
%
% otherwise put the accent on top of the macron or breve.
%
%    \begin{macrocode}
    \ifdim \dimen0=\z@
      \dimen0=1.05\ht0 
    \else
      \ifdim \dimen0<\z@
        \dimen0=.8\dimen0 
      \else
        \dimen0=1.2\dimen0 
      \fi
    \fi
    \copy0
    \kern -\wd0 
    \kern \dimen3
    \raise \dimen0 \hbox to \wd0{%
      \begingroup
      \M@cmr
      \hss
      \lower 1ex \hbox{\expandafter\char\M@accent}%
      \hss
      \endgroup
    }%
    \kern -\dimen3
  \fi
}
%    \end{macrocode}
%
% \subsection{The \texttt{metrike} environment}
%
% This is much the same as the |metrica| environment.
% Accents and other diacritical marks are taken care of by |ibycus4| or
% |Babel|.
%
%    \begin{macrocode}
\newenvironment{metrike}[1][\relax]{\leavevmode
  \ifx n#1\relax
  \else
    \ifx N#1\relax
    \else
      \ifx \relax#1\relax
        \M@abbrev
      \else
        \PackageError{metre}{%
          Invalid optional parameter for %
            the metrike environment}%
          {The optional parameter must be either `n' or `N'}%
      \fi
    \fi
  \fi
  \def\={\M@gtempus{2}}%
  \def\-{\M@gtempus{1}}%
  \let\u=\-%
  \ifx \M@MetrikeFont \@undefined
    \ifnum \M@ibycus=\@ne
      \def\M@@MF{\fontencoding{OT1}\greek}%
    \else
      \ifx \l@greek \@undefined
        \PackageError{metre}{No font available for Greek text}%
          {You must use the \protect\MetrikeFont command}%
      \else
        \def\M@@MF{\selectlanguage{polutonikogreek}}%
      \fi
    \fi
  \else
    \if i\M@MetrikeFont
      \def\M@@MF{\fontencoding{OT1}\greek}%
    \else
      \if I\M@MetrikeFont
        \def\M@@MF{\fontencoding{OT1}\greek}%
      \else
        \if b\M@MetrikeFont
          \def\M@@MF{\selectlanguage{polutonikogreek}}%
        \else
          \if B\M@MetrikeFont
            \def\M@@MF{\selectlanguage{polutonikogreek}}%
          \else
            \def\M@@MF{\M@MetrikeFont}%
          \fi
        \fi
      \fi
    \fi
  \fi
  \M@@MF
  \ignorespaces
  }{}%
%    \end{macrocode}
%
% Place a macron (|#1| = 2) or a breve (|#1| = 1) over |#2|.
%
%    \begin{macrocode}
\def\M@gtempus#1#2{\leavevmode
  \setbox0=\hbox{#2}%
  \dimen0=1ex
  \dimen0=\M@elevatio\dimen0 
  \ifdim \dimen0=\z@ 
    \dimen0=\ht0 
  \fi
  \dimen3=1em
  \dimen3=\M@translatio\dimen3 
  \copy0
  \kern -\wd0 
  \dimen1=\wd0  
  \setbox1=\hbox{\M@bare #2\end}%
  \advance \dimen1 by -\wd1 
  \kern \dimen1
  \kern \dimen3
  \raise \dimen0 \hbox to \wd1{%
    \begingroup
    \hss
    \M@cmr
    \raisebox {-1ex}[\z@][\z@]{\hbox{\char2#1}}%
    \hss
    \endgroup
  }%
  \kern -\dimen3\relax
}
%    \end{macrocode}
% \newpage
% Compute the width of the bare letter, without diacritics.
%    \begin{macrocode}
\def\M@bare#1{%
  \let\next=\M@bare
  \ifnum \M@ibycus=\@ne
    \ifx #1\end
      \let\next=\relax
    \else \ifx '#1\relax
    \else \ifx `#1\relax
    \else \ifx (#1\relax
    \else \ifx )#1\relax
    \else \ifx =#1\relax
    \else \ifx |#1\relax
    \else
      #1\relax
    \fi\fi\fi\fi\fi\fi\fi
  \else
    \ifx #1\end
      \let\next=\relax
    \else \ifx '#1\relax
    \else \ifx `#1\relax
    \else \ifx <#1\relax
    \else \ifx >#1\relax
    \else \ifx ~#1\relax
    \else \ifx |#1\relax
    \else
      #1\relax
    \fi\fi\fi\fi\fi\fi\fi
  \fi
  \next
}
%    \end{macrocode}
%
% \subsection{The \texttt{\protect\bslash sigla} command}
%
% The |\sigla| command uses a few active characters.
%    \begin{macrocode}
\begingroup
\catcode`\:=\active
\catcode`\/=\active
\catcode`\_=\active
\catcode`<=\active
\catcode`>=\active
\gdef\sigla{%
  \begingroup%      \endgroup in \M@sigla
  \dimen1=.056em
  \catcode`\:=\active
  \catcode`\/=\active
  \catcode`\_=\active
  \catcode`<=\active
  \catcode`>=\active
  \def/{\raisebox{.667ex}{\anaclasis}\kern -.1em\relax}%
  \def_{%
    \raisebox{-.5ex}[\z@][\z@]{$\scriptscriptstyle\wedge$}%
  }%
  \def:{%
    \raisebox{-.02ex}{%
      \begingroup
      \M@cmr
      \kern .1em \char95 \kern -.1em \char95 
      \endgroup
    }%
  }%
  \def\D{$\delta$\kern -\dimen1\relax}%
  \def\d{$\delta$}%
  \def\s{$\int$}%
  \def\+{%
    \kern .056em
    \raisebox{.667ex}[\z@][\z@]{$\scriptscriptstyle+$}%
  }%
  \def<{\kern -\dimen1\relax}%
  \def>{\kern \dimen1\relax}%
%    \end{macrocode}
%
% |\S| has a slightly different definition from that of |\metra|.
%    \begin{macrocode}
  \def\S{\M@super@sigla}%
  \def\charcolon{\char"3A}%
  \def\charslash{\char"2F}%
%    \end{macrocode}
%
% We chain to another macro so that the active characters within the
% argument will be interpreted according to the definitions just given.
%    \begin{macrocode}
  \M@sigla
}
\endgroup
%    \end{macrocode}
%
%    \begin{macrocode}
\newcommand{\M@sigla}[2][\relax]{%
  \ifx n#1\relax
  \else
    \ifx N#1\relax
    \else
      \ifx \relax#1\relax
        \def\c{\metra{\c}}%
        \def\C{\metra{\C}}%
        \def\cc{\metra{\cc}}%
        \def\Cc{\metra{\Cc}}%
        \def\ccc{\metra{\ccc}}%
        \def\Ccc{\metra{\Ccc}}%
        \def\p{\metra{\p}}%
        \def\pp{\metra{\pp}}%
        \def\Pp{\metra{\Pp}}%
        \def\ppp{\metra{\ppp}}%
        \def\Ppp{\metra{\Ppp}}%
        \def\pppp{\metra{\pppp}}%
        \def\Pppp{\metra{\Pppp}}%
        \def\ppppp{\metra{\ppppp}}%
        \def\Ppppp{\metra{\Ppppp}}%
        \def\pxp{\metra{\pxp}}%
        \def\Pxp{\metra{\Pxp}}%
        \def\x{\metra{\x}\kern 3\dimen1\relax}%
        \let\r=\respondens
        \M@dim@c@ext=.36em
        \M@dim@c@int=.12em
        \M@dim@c@Ext=.5\M@dim@c@int
      \else
        \PackageError{metre}{%
          Invalid optional parameter for \protect\sigla}%
        {The optional parameter must be either `n' or `N'}%
      \fi
    \fi
  \fi
  \bgroup \leavevmode \M@facies #2\/\egroup \endgroup}
%    \end{macrocode}
%
%    \begin{macrocode}
\newcommand{\M@super@sigla}[2][0]{%
  \begingroup
  \dimen0 =.75ex
  \advance \dimen0 by #1ex 
  \dimen1 = 1em
  \relsize{-4}%
  \expandafter\M@super@sigla@check@it\f@shape\end
  \raise \dimen0 \hbox{#2}%
  \endgroup
}
%    \end{macrocode}
%
% Check whether the parameter is to be set in italics.
%
%    \begin{macrocode}
\def\M@super@sigla@check@it#1#2\end{%
  \kern .05\dimen1 
  \if i#1\relax
    \if t#2\relax
      \kern .05\dimen1\relax 
    \fi
  \fi
}
%    \end{macrocode}
%
% \subsection{Other signs} 
%
% \subsubsection{Brackets} 
%
%    \begin{macrocode}
\newcommand{\quadras}{\leavevmode \raise .16ex
  \hbox{$\scriptstyle\lbrack\mskip-\thinmuskip\lbrack$}}
\newcommand{\Quadras}{\leavevmode
  $\textstyle\lbrack\mskip-\thinmuskip\lbrack$}
\newcommand{\quadrad}{\leavevmode \raise .16ex
  \hbox{$\scriptstyle\rbrack\mskip-\thinmuskip\rbrack$}}
\newcommand{\Quadrad}{\leavevmode
  $\textstyle\rbrack\mskip-\thinmuskip\rbrack$}
\newcommand{\angus}{\leavevmode
  \raise .16ex\hbox{$\scriptstyle\langle$}}
\newcommand{\Angus}{\leavevmode $\textstyle\langle$}
\newcommand{\angud}{\leavevmode
   \raise .16ex\hbox{$\scriptstyle\rangle$}}
\newcommand{\Angud}{\leavevmode $\textstyle\rangle$}
\newcommand{\crux}{\leavevmode
  \bgroup\M@cmr\textdagger\egroup}
\newcommand{\Crux}{\leavevmode
  \bgroup\M@cmr\relsize{1}\textdagger\egroup}
\newcommand{\alas}{\leavevmode \bgroup\M@cmr\{\egroup}
\newcommand{\Alas}{\leavevmode
  \bgroup\M@cmr\relsize{1}\{\egroup}
\newcommand{\alad}{\leavevmode \bgroup\M@cmr\}\egroup}
\newcommand{\Alad}{\leavevmode
  \bgroup\M@cmr\relsize{1}\}\egroup}
%    \end{macrocode}
%
%    \begin{macrocode}
\newcommand{\semi}[1]{%
  \ifx [#1\relax \M@semi@lb 
  \else
    \ifx ]#1\relax \M@semi@rb
    \else
      \PackageError{metre}{Invalid argument for \protect\semi}%
      {\protect\semi must be followed by \lbrack or \rbrack}%
    \fi
  \fi
}
%    \end{macrocode}
%
%    \begin{macrocode}
\def\M@semi@lb{\leavevmode
  \setbox0=\hbox{o}%
  \setbox0=\hbox to .67\wd0{%
    \hss
    \vrule height .5ex width .5pt depth .5ex 
    \lower .5ex \hbox to .6ex{%
       \leaders\hrule height .4pt\hfill}%
  }%
  \box0\relax 
}
%    \end{macrocode}
%
%    \begin{macrocode}
\def\M@semi@rb{\leavevmode
  \setbox0=\hbox{o}%
  \setbox0=\hbox to .67\wd0{%
    \lower .5ex \hbox to .6ex{%
      \leaders\hrule height .4pt\hfill}%
    \vrule height .5ex width .5pt depth .5ex
    \hss
  }%
  \box0\relax 
}
%    \end{macrocode}
%
% \subsubsection{Special symbols} 
%
% \paragraph{anaclasis}
%
%    \begin{macrocode}
\newcommand{\anaclasis}[1][0]{\M@anaclasis0{#1}}
\newcommand{\Anaclasis}[1][0]{\M@anaclasis1{#1}}
%    \end{macrocode}
%
%    \begin{macrocode}
\def\M@anaclasis#1#2{\leavevmode
  \setbox0=\hbox{$\ifnum #1=\z@
                    \scriptscriptstyle
                  \else
                    \scriptstyle
                  \fi
                  \div$}%
  \dimen0=\ifnum #1=\z@ .215\else .105\fi ex
  \advance \dimen0  by #2ex
  \raisebox {\dimen0}[\z@][\z@]{\box0}%
}
%    \end{macrocode}
%
% \paragraph{antisigma}
%
%    \begin{macrocode}
\newcommand{\antisigma}[1][0]{\M@antisigma0{#1}}
\newcommand{\Antisigma}[1][0]{\M@antisigma1{#1}}
%    \end{macrocode}
%
%    \begin{macrocode}
\def\M@antisigma#1#2{\leavevmode
  \setbox0=\hbox{$\ifnum #1=\z@
                    \scriptscriptstyle
                  \else
                    \scriptstyle
                  \fi
                  \supset$}%
  \dimen0=\ifnum #1=\z@ .19\else .105\fi ex
  \advance \dimen0 by #2ex
  \raisebox {\dimen0}[\z@][\z@]{\box0}%
}
%    \end{macrocode}
%
% \paragraph{asteriscus}
%
%    \begin{macrocode}
\newcommand{\asteriscus}[1][0]{\M@aster0{#1}}
\let\asteriskos=\asteriscus
\newcommand{\Asteriscus}[1][0]{\M@aster1{#1}}
\let\Asteriskos=\Asteriscus
%    \end{macrocode}
%
%    \begin{macrocode}
\def\M@aster#1#2{\leavevmode
  \dimen1=1ex
  \begingroup
  \relsize {\ifnum #1=\z@ 1\else 2\fi}%
  \setbox0=\hbox{$\times$}%
  \setbox1=\hbox{$\cdot$}%
  \ht0=.82\ht0 
  \setbox2=\hbox to .675\wd0{%
    \hss
    \copy0 
    \kern -\wd0  
    \rlap{\kern .1\wd0   \raise 0\ht0    \copy1}%
    \rlap{\kern .32\wd0 \raise .35\ht0  \copy1}%
    \rlap{\kern \ifnum #1=\z@ .55 \else .525\fi \wd0
          \raise 0\ht0 \copy1}%
    \rlap{\kern .32\wd0 \raise -.35\ht0 \copy1}%
    \kern \wd0
    \hss
  }%
  \dimen0=-\ifnum #1=\z@ .1\else .2\fi\dimen1
  \advance \dimen0 by #2\dimen1
  \raisebox {\dimen0}[\z@][\z@]{\box2}%
  \endgroup
}
%    \end{macrocode}
%
% \paragraph{catalexis}
%
%    \begin{macrocode}
\newcommand{\catalexis}[1][0]{\M@catalexis 0{#1}}
\newcommand{\Catalexis}[1][0]{\M@catalexis 1{#1}}
%    \end{macrocode}
%
%    \begin{macrocode}
\def\M@catalexis#1#2{\leavevmode
  \setbox0=\hbox{$\ifnum #1=\z@
                    \scriptscriptstyle
                  \else
                    \scriptstyle
                  \fi
                  \wedge$}%
  \kern -.05\wd0
  \dimen0=-\ifnum #1=\z@ .22\else .45\fi ex
  \advance \dimen0 by #2ex
  \raisebox {\dimen0}[\z@][\z@]{\box0}%
  \kern .05\wd0\relax  
}
%    \end{macrocode}
% \paragraph{diple}
%
%    \begin{macrocode}
\newcommand{\diple}{%
  \@ifstar{\M@starredtrue\M@bigfalse\M@diple}%
          {\M@starredfalse\M@bigfalse\M@diple}}
\newcommand{\Diple}{%
  \@ifstar{\M@starredtrue\M@bigtrue\M@diple}%
          {\M@starredfalse\M@bigtrue\M@diple}}
%    \end{macrocode}
%
%    \begin{macrocode}
\newcommand{\M@diple}[1][0]{\leavevmode 
  \setbox0=\hbox{%
    $\ifM@big \textstyle \else \scriptstyle \fi>$}%
  \dimen0=\ifM@big -.05 \else .1 \fi ex
  \dimen1=#1ex
  \advance \dimen1 by \dimen0
  \raisebox {\dimen1}[\z@][\z@]{\copy0}%
  \ifM@starred   
    \ifM@big 
      \kern -.25\wd0 \dimen0=.55\ht0
    \else
      \kern -.2\wd0  \dimen0=.45\ht0
    \fi
    \advance \dimen0 by \dimen1
    \raisebox {\dimen0}[\z@][\z@]%
      {\hbox to 0pt{\hss $\scriptstyle\cdot$}}%
    \dimen0=\ifM@big -.275 \else -.475 \fi \ht0
    \advance \dimen0 by \dimen1
    \raisebox {\dimen0}[\z@][\z@]%
      {\hbox to 0pt{\hss $\scriptstyle\cdot$}}%
    \kern \ifM@big .25 \else .2 \fi \wd0
  \fi
}
%    \end{macrocode}
%
% \paragraph{antidiple}
%
%    \begin{macrocode}
\newcommand{\antidiple}{%
  \@ifstar{\M@starredtrue\M@bigfalse\M@antidiple}%
          {\M@starredfalse\M@bigfalse\M@antidiple}}
\newcommand{\Antidiple}{%
  \@ifstar{\M@starredtrue\M@bigtrue\M@antidiple}%
          {\M@starredfalse\M@bigtrue\M@antidiple}}
%    \end{macrocode}
%
%    \begin{macrocode}
\newcommand{\M@antidiple}[1][0]{\leavevmode 
  \setbox0=\hbox{%
    $\ifM@big \textstyle \else \scriptstyle \fi<$}%
  \dimen0=\ifM@big -.05 \else .1 \fi ex
  \dimen1=#1ex
  \advance \dimen1 by \dimen0
  \raisebox {\dimen1}[\z@][\z@]{\copy0}%
  \ifM@starred   
    \ifM@big 
      \kern -.5\wd0
      \dimen0=.55\ht0
    \else
      \kern -.45\wd0
      \dimen0=.45\ht0
    \fi
    \advance \dimen0 by \dimen1
    \raisebox {\dimen0}[\z@][\z@]%
      {\hbox to 0pt{\hss $\scriptstyle\cdot$}}%
    \dimen0=\ifM@big -.325 \else -.5 \fi \ht0
    \advance \dimen0 by \dimen1
    \raisebox {\dimen0}[\z@][\z@]%
      {\hbox to 0pt{\hss $\scriptstyle\cdot$}}%
    \kern \ifM@big .5 \else .45 \fi \wd0
  \fi
}
%    \end{macrocode}
%
% \paragraph{obelus}
%
%    \begin{macrocode}
\newcommand{\obelus}{%
  \@ifstar{\M@starredtrue\M@bigfalse\M@obelus}%
          {\M@starredfalse\M@bigfalse\M@obelus}}
\let\obelos=\obelus
\newcommand{\Obelus}{%
  \@ifstar{\M@starredtrue\M@bigtrue\M@obelus}%
          {\M@starredfalse\M@bigtrue\M@obelus}}
\let\Obelos=\Obelus
%    \end{macrocode}
%
%    \begin{macrocode}
\newcommand{\M@obelus}[1][0]{\leavevmode 
    \setbox0=\hbox to 
      \ifM@big
        \ifM@starred 1 \else 1.5 \fi
      \else
        \ifM@starred .89 \else 1.33 \fi
      \fi em
      {\leaders \hrule height .33pt\hfill}%
    \setbox1=\hbox{$\cdot$}%
    \ifM@starred
       \setbox0=\hbox{%
         \copy0 
         \dimen0=\wd0
         \advance \dimen0 by \wd1
         \divide \dimen0 by 2
         \kern -\dimen0
         \rlap{\lower .1ex \copy1}%
         \rlap{\lower 1ex \copy1}%
         \kern \dimen0
       }%
    \fi
    \dimen0=.48ex
    \advance \dimen0 by #1ex
    \raisebox {\dimen0}[\z@][\z@]{\box0}%
}
%    \end{macrocode}
%
% \paragraph{respondens}
%
%    \begin{macrocode}
\newcommand{\respondens}{\M@bigfalse\M@respondens}
\newcommand{\Respondens}{\M@bigtrue\M@respondens}
%    \end{macrocode}
%
%    \begin{macrocode}
\newcommand{\M@respondens}[1][0]{\leavevmode
  \setbox0=\hbox{%
    $\ifM@big \textstyle \else \scriptstyle \fi \sim$}%
  \dimen0=\ifM@big -.05 \else .1 \fi ex
  \advance \dimen0 by #1ex
  \kern .067em
  \raisebox {\dimen0}[\z@][\z@]{\box0}%
}
%    \end{macrocode}
%
% \paragraph{terminus}
%
%    \begin{macrocode}
\newcommand{\terminus}{%
  \@ifstar{\M@starredtrue\M@bigfalse\M@terminus}%
          {\M@starredfalse\M@bigfalse\M@terminus}}
\newcommand{\Terminus}{%
  \@ifstar{\M@starredtrue\M@bigtrue\M@terminus}%
          {\M@starredfalse\M@bigtrue\M@terminus}}
%    \end{macrocode}
%
%    \begin{macrocode}
\newcommand{\M@terminus}[1][0]{\leavevmode
  \setbox0=\hbox{%
    $\ifM@big \textstyle \else \scriptstyle \fi
     \ifM@starred \oplus \else \otimes \fi$}%
  \dimen0=\ifM@big -.1 \else .1 \fi ex
  \advance \dimen0 by #1ex
  \raisebox {\dimen0}[\z@][\z@]{\box0}%
}
%    \end{macrocode}
%
% \paragraph{margini}
%
%    \begin{macrocode}
\newcommand{\margini}{%
  \@ifstar{\M@margini@star}{\M@margini@nostar}}
\newcommand{\M@margini@star}[2][0pt]{\M@margini{1}{#1}{#2}}
\newcommand{\M@margini@nostar}[2][0pt]{\M@margini{0}{#1}{#2}}
%    \end{macrocode}
%
%    \begin{macrocode}
\def\M@margini#1#2#3{\leavevmode
  \setbox1=\hbox{#3}%
  \strut
  \vadjust{%
    \kern -\dp\strutbox
    \ifnum #1=\@ne
      \hfill
    \fi
    \dimen0=1em
    \advance \dimen0 by #2\relax
    \vtop to \dp\strutbox{%
      \baselineskip\dp\strutbox
      \vss
      \ifnum #1=\@ne   
        \rlap{\kern \dimen0\copy1}%
      \else
        \llap{\copy1\kern \dimen0}%
      \fi
      \null
    }%
  }%
  \ignorespaces
}
%    \end{macrocode}
%
% \newpage
%
% \subsubsection{Diacritics} 
%
% \paragraph{accents}
%
%    \begin{macrocode}
\newcommand{\acutus}[2][0]{\M@movable@accent{#1}{#2}{19}}
\newcommand{\gravis}[2][0]{\M@movable@accent{#1}{#2}{18}}
\newcommand{\macron}[2][0]{\M@movable@accent{#1}{#2}{22}}
\edef\Breve{\breve}
\renewcommand{\breve}[2][0]{\M@movable@accent{#1}{#2}{21}}
\newcommand{\circumflexus}[2][0]{\M@movable@accent{#1}{#2}{126}}
\newcommand{\diaeresis}[2][0]{\M@movable@accent{#1}{#2}{127}}
%    \end{macrocode}
%
%    \begin{macrocode}
\def\M@movable@accent#1#2#3{\leavevmode
  \begingroup
  \setbox0=\hbox{#2}%
  \copy0
  \kern -\wd0 
  \dimen0 = \ht0
  \ifdim \dimen0=\z@ 
      \dimen0=1ex
  \fi
  \advance \dimen0 by -1ex
  \advance \dimen0 by #1ex
  \raise \dimen0 
    \hbox to \wd0{%
      \hss \begingroup \M@cmr \char#3 \endgroup \hss}%
  \endgroup
}
%    \end{macrocode}
%
% \paragraph{cons}
%
%    \begin{macrocode}
\newcommand{\cons}[1]{%
  \setbox0=\hbox{#1}%
  \copy0 
  \kern -\wd0 
%    \end{macrocode}
%
% The quarter-circles are taken from the \LaTeX{} \texttt{circle} font.
%
%    \begin{macrocode}
  \setbox1=\hbox{\hss\begingroup\tencirc\char3\char0\endgroup}%
  \setbox1=\hbox to \wd0{\hss\kern .5\wd1\box1\hss}%
  \dimen0=-.5\ht1 
  \ifdim \z@<\dp0 
    \advance \dimen0 by -.5\dp0 
  \fi
  \raise \dimen0 \box1\relax
}
%    \end{macrocode}
%
% \paragraph{dubia}
%
%    \begin{macrocode}
\newcommand{\dubia}{\@ifstar{\M@dubia@star}{\M@dubia}}
%    \end{macrocode}
%
%    \begin{macrocode}
\def\M@dubia@star#1{\M@dubia@ibycus{#1}}
\def\M@dubia#1{\leavevmode
  \setbox0=\hbox{[}%
  \dimen0=\dp0 
  \setbox0=\hbox{#1}%
  \ifdim \dp0=\z@ 
     \dimen2=-.5ex
  \else
    \dimen2=-1.75\dimen0 
  \fi
  \setbox1=\hbox{\bgroup \M@cmr .\egroup}%
  \dimen3=\z@
  \M@Stack 0\relax
}
\def\M@dubia@ibycus#1{\leavevmode
  \ifnum \M@ibycus=\@ne
    #1!%
  \else
    \PackageError{metre}{\protect\dubia* requires ibycus4}{}%
  \fi
}
%    \end{macrocode}
%
% \paragraph{dubiae}
%
%    \begin{macrocode}
\newcommand{\dubiae}{\@ifstar{\M@dubiae@star}{\M@dubiae@nostar}}
%    \end{macrocode}
%
%    \begin{macrocode}
\def\M@dubiae@star#1{\expandafter\M@dubiae@ibycus#1\end}
\def\M@dubiae@nostar#1{\M@dubiae#1\end}
%    \end{macrocode}
%
%    \begin{macrocode}
\def\M@dubiae#1{\leavevmode
  \let\next=\M@dubiae
  \ifx #1\end
     \let\next=\relax
  \else
     \ifx #1\positio
       #1\relax \else
     \ifx #1\Positio
       #1\relax \else
     \ifx #1\pos
       #1\relax \else
     \ifx #1\Pos
       #1\relax 
     \else
       \setbox0=\hbox{[}%
       \dimen0=\dp0 
       \setbox0=\hbox{#1}%
       \ifdim \dp0=\z@ 
         \dimen2=-.5ex
       \else
         \dimen2=-1.75\dimen0 
       \fi
       \setbox1=\hbox{\bgroup \M@cmr .\egroup}%
       \dimen3=\z@
       \M@Stack 0\relax 
    \fi\fi\fi\fi
  \fi
  \next
}
%    \end{macrocode}
%
%    \begin{macrocode}
\def\M@dubiae@ibycus#1{\leavevmode
  \ifx #1\end
     \let\next=\relax
  \else
    \ifnum \M@ibycus=\z@
      \PackageError{metre}{\protect\dubiae* requires ibycus4}{}%
    \fi
    \ifx #1\positio #1\relax \else
    \ifx #1\Positio #1\relax \else
    \ifx #1\pos #1\relax \else
    \ifx #1\Pos #1\relax \else
      #1!\relax
    \fi\fi\fi\fi
    \let\next=\M@dubiae@ibycus
  \fi
  \next
}
%    \end{macrocode}
%
% \paragraph{erasa}
%
%    \begin{macrocode}
\newcommand{\erasa}[1][1]{\leavevmode
  \@tempcnta=#1\relax
  \@whilenum \@tempcnta>\z@ \do
    {\M@erasa \advance \@tempcnta by \m@ne}%
}
\def\M@erasa{%
  \setbox0=\hbox{\vrule width .025em depth .4ex height 1.5ex}%
  \kern .125em
  \copy0  \kern .125em
  \copy0  \kern .125em
  \copy0  \kern .115em\relax
}
%    \end{macrocode}
% 
% \paragraph{positio}
%
%    \begin{macrocode}
\newcommand{\positio}{\leavevmode
 \raise .85ex \hbox{\vrule width .02em depth \z@ height .75ex}%
}
%    \end{macrocode}
%
%    \begin{macrocode}
\newcommand{\Positio}{\leavevmode
  \raise .75ex \hbox{\vrule width .02em depth \z@ height .94ex}%
}
%    \end{macrocode}
%
% \paragraph{punctum}
%
%    \begin{macrocode}
\newcommand{\punctum}{\@ifnextchar[{\M@punctum}{\M@punctum[1]}}
%    \end{macrocode}
%
%    \begin{macrocode}
\def\M@punctum[#1]{\leavevmode
  \@tempcnta=#1\relax
  \@whilenum \@tempcnta>\z@ \do
    {\M@@punctum \advance \@tempcnta by \m@ne}%
}
%    \end{macrocode}
%
%    \begin{macrocode}
\def\M@@punctum{%
  \setbox0=\hbox{[}%
  \setbox1=\hbox to .5em{\hss \bgroup \M@cmr .\egroup \hss}%
  \lower .9\dp0 \box1\relax
}
%    \end{macrocode}
%
% \paragraph{Punctum}
%
%    \begin{macrocode}
\newcommand{\Punctum}{\@ifnextchar[{\M@Punctum}{\M@Punctum[1]}}
%    \end{macrocode}
%
%    \begin{macrocode}
\def\M@Punctum[#1]{\leavevmode
  \@tempcnta=#1\relax 
  \@whilenum \@tempcnta>\z@ \do
    {\M@@Punctum \advance \@tempcnta by \m@ne}%
}
%    \end{macrocode}
%
%    \begin{macrocode}
\def\M@@Punctum{%
  \setbox0=\hbox{[}%
  \setbox1=\hbox{%
    \begingroup \M@cmr
    {\relsize{-4}\hbox{(}\kern -.15em}%
    .%
    {\relsize{-4}\kern -.15em\hbox{)}}%
    \endgroup
  }%
  \lower .9\dp0 \copy1\relax
}
%    \end{macrocode}
%
% \subsubsection{Ties}
%
%    \begin{macrocode}
\newcommand{\tie}{\@ifstar\M@tie@star\M@tie@nostar}
\newcommand{\itie}{\@ifstar\M@itie@star\M@itie@nostar}
\newcommand{\M@tie@star}[2][1]{\M@tie{#2}{0}{1}{#1}}
\newcommand{\M@tie@nostar}[2][1]{\M@tie{#2}{0}{0}{#1}}
\newcommand{\M@itie@star}[2][1]{\M@tie{#2}{1}{0}{#1}}
\newcommand{\M@itie@nostar}[2][1]{\M@tie{#2}{1}{1}{#1}}
%    \end{macrocode}
%
%    \begin{macrocode}
\def\M@tie#1#2#3#4{%
%    \end{macrocode}
%
%  |#1|   the text above/below which the tie should go\\
%  |#2|  0 = |tie| ($\frown$), 1 =  |itie| ($\smile$)\\
%  |#3|  0 = above, 1 = below\\
%  |#4|  scale factor for the text width
%    \begin{macrocode}
  \leavevmode
  \setbox0=\hbox{#1}%
  \ifnum \M@metra=\@ne
    \global\M@dim@sunk=\z@
  \fi
  \dimen3=\z@
  \ifM@inter
    \dimen3=\M@interS\M@dim@m%
  \fi
  \ifdim \ht0=\z@ %      tie over space
    \ifdim \z@=\dp0 
      \ht0=1ex
    \fi
  \fi
  \dimen0=#4\wd0 
  \ifnum \M@metra=\@ne
    \dimen0=.6\dimen0 
  \fi
  \begingroup
%    \end{macrocode}
%
% We step through the available font sizes until we find a symbol
% long enough to fit the text.
%
%    \begin{macrocode}
  \relsize{-10}%
  \wd1=\z@
  \@whiledim \wd1<.95\dimen0 \do{%
    \ifx \@currsize \Huge
      \dimen0=\z@
    \else
      $%
      \dimen1=\f@baselineskip
      \fontencoding{OML}\fontfamily{cmm}\fontseries{m}%
      \fontshape{it}\fontsize{\ssf@size}{\dimen1}\selectfont
      \global\setbox1=\hbox{%
        \hss\symbol{"5\ifnum 0=#2F\else E\fi}\hss}%
      \ifdim \wd1<\dimen0 
        \fontsize{\sf@size}{\dimen1}\selectfont
        \global\setbox1=\hbox{%
          \hss\symbol{"5\ifnum 0=#2F\else E\fi}\hss}%
        \ifdim \wd1<\dimen0 
          \fontsize{\tf@size}{\dimen1}\selectfont
          \global\setbox1=\hbox{%
            \hss\symbol{"5\ifnum 0=#2F\else E\fi}\hss}%
        \fi
      \fi
      $%
    \fi
    \ifdim \wd1<\dimen0 
      \relsize{+1}%
    \fi
    \global\dimen4=\fontdimen5\the\font
  }%
  \endgroup
  \ifnum #3=\z@
    \dimen2=1.067\ht0 
    \divide \dimen4 by 2
    \advance \dimen4 by -\ht1
    \advance \dimen2 by .6\dimen4
  \else
    \dimen2=-1.05\ht1
    \advance \dimen2 by -.75pt
  \fi
  \ifnum #3=\@ne
    \ifdim \z@<\dp0 
      \advance \dimen2 by -1\dp0 
    \fi
  \fi
  \ifnum \M@metra=\@ne
    \advance \dimen2 by -\M@dim@sunk
  \fi
  \M@Stack 0\relax
}
%    \end{macrocode}
%
% \newpage
%
% \subsubsection{Interlinear signs} 
%
% \paragraph{linea}
%
%    \begin{macrocode}
\newcommand{\M@linea@star}[1][0]{\M@linea{1}{#1\baselineskip}}
\newcommand{\M@linea@nostar}[1][0]{\M@linea{0}{#1\baselineskip}}
%    \end{macrocode}
% The actual |\linea| command is defined by means of |\novalinea|
% at the end of this section.
%    \begin{macrocode}
\def\M@linea#1#2{%
%    \end{macrocode}
%  |#1| is 1 for the \texttt{*}-form, 0 for the normal form;\\
%  |#2| is the additional |\baselineskip| increment.\\
%  |\dimen1| is the displacement from the text margin;\\
%  |\dimen2| is the length of the line;\\
%  |\dimen3| is the |\baselineskip| increment
%    \begin{macrocode}
  \leavevmode 
  \let\next=\relax
  \ifnum #1=\@ne 
    \let\next=\@gobble
  \fi
  \global\M@linea@length=\dimen2 
  \dimen0=.75\baselineskip
  \ifM@imago
    \advance \dimen0 by #2\relax
    \global\M@linea@indent=\z@
  \else
    \advance \dimen3 by #2\relax
    \vadjust{\kern \dimen3}%
    \ifnum #1=\@ne
      \par
    \else 
      \\%
    \fi
    \leavevmode
    \kern \dimen1 
    \global\M@linea@indent=\dimen1 
  \fi
  \raisebox {\dimen0}[\z@][\z@]%
    {\hbox to \dimen2{\leaders\hrule\hfill}}%
  \global\M@linea@height=\dimen0 
  \ifM@imago
  \else
    \dimen0=\dimen2 
    \advance \dimen0 by \dimen1 
    \kern -\dimen0 
  \fi
  \if \M@before@linea\relax
  \else
    \expandafter\M@@before@linea\M@before@linea
  \fi
  \next
}
%    \end{macrocode}
%
% \paragraph{geminata} 
%
%    \begin{macrocode}
\newcommand{\geminata}{%
  \@ifstar{\M@geminata@star}{\M@geminata@nostar}}
\newcommand{\M@geminata@star}[1][0]%
  {\M@geminata{1}{#1\baselineskip}}
\newcommand{\M@geminata@nostar}[1][0]%
  {\M@geminata{0}{#1\baselineskip}}
%    \end{macrocode}
%
%    \begin{macrocode}
\def\M@geminata#1#2{%
%    \end{macrocode}
%  |#1|:  1 for the \texttt{*}-form, 2 for the normal form;\\
%  |#2|: the additional displacement from the preceding line\\
%  |\dimen1| is the displacement from the text margin;\\
%  |\dimen2| is the length;\\
%  |\dimen3| is the |\baselineskip| increment
%    \begin{macrocode}
  \leavevmode
  \M@linea@dimentrue \linea \M@linea@dimenfalse
  \let\next=\relax
  \ifnum #1=\@ne \let\next=\@gobble \fi
  \dimen0=.75\baselineskip
  \ifM@imago
    \advance \dimen0 by #2\relax
  \else
    \advance \dimen3 by #2\relax
    \vadjust{\kern \dimen3}%
    \ifnum #1=\@ne \par \else \\\fi
    \leavevmode
    \kern \dimen1 
  \fi
  \raisebox {\dimen0}[\z@][\z@]%
    {\hbox to \dimen2{\leaders\hrule\hfill}}%
  \kern -\dimen2 
  \advance \dimen0 by -.075\baselineskip
  \global\M@linea@height=\dimen0 
  \advance \dimen0 by -.075\baselineskip
  \raisebox {\dimen0}[\z@][\z@]%
    {\hbox to \dimen2{\leaders\hrule\hfill}}%
  \ifM@imago
  \else
    \dimen0=\dimen2 
    \advance \dimen0 by \dimen1 
    \kern -\dimen0 
  \fi
  \next
}
%    \end{macrocode}
%
% \paragraph{bifida}
%
%    \begin{macrocode}
\newcommand{\bifida}{\def\M@before@linea{0}\linea}
\let\lineabifida=\bifida
\newcommand{\Bifida}{\def\M@before@linea{1}\linea}
\let\Lineabifida=\Bifida
\newcommand{\lunata}{\def\M@before@linea{2}\linea}
\let\linealunata=\lunata
\newcommand{\Lunata}{\def\M@before@linea{3}\linea}
\let\Linealunata=\Lunata
%    \end{macrocode}
% Place |>| or |(| in front of |\linea|
%    \begin{macrocode}
\def\M@@before@linea#1{%
  \leavevmode 
  \begingroup
  \M@cmr
  \ifM@imago
    \dimen0=-\M@linea@length
  \else
    \dimen0=\M@linea@indent
  \fi
  \dimen1=\M@linea@height
  \ifcase #1\relax
    \setbox0=\hbox{$\scriptscriptstyle>$}%
    \ifcase \@ptsize
      \advance \dimen1 by -.327\ht0 
      \dimen2=-.785\wd0 
    \or
      \advance \dimen1 by -.357\ht0 
      \dimen2=-.78\wd0 
    \or
      \advance \dimen1 by -.33\ht0 
      \dimen2=-.78\wd0 
    \fi
  \or
    \setbox0=\hbox{$\scriptstyle>$}%
    \ifcase \@ptsize
      \advance \dimen1 by -.357\ht0 
      \dimen2=-.81\wd0 
    \or
      \advance \dimen1 by -.405\ht0 
      \dimen2=-.78\wd0 
    \or
      \advance \dimen1 by -.395\ht0 
      \dimen2=-.78\wd0 
    \fi
  \or
    \setbox0=\hbox{)}%
    \dimen2=-.725\wd0 
    \advance \dimen1 by -.28\ht0 
  \or
    \setbox0=\hbox{\bgroup \relsize{+1})\egroup}%
    \dimen2=-.6\wd0 
    \advance \dimen1 by -.28\ht0 
  \fi
  \kern \dimen0   \kern \dimen2 
  \ifM@imago
  \else
    \global\advance\M@linea@indent by \dimen2 
  \fi
  \global\advance \M@linea@length by -\dimen2 
  \raisebox {\dimen1}[\z@][\z@]{\copy0}%
  \advance \dimen2 by \wd0 
  \kern -\dimen0 
  \kern -\dimen2 
  \endgroup
  \def\M@before@linea{\relax}%
}                          
%    \end{macrocode}
%
% \paragraph{antelineam and postlineam}
%
%    \begin{macrocode}
\newcommand{\antelineam}{\M@adlineam{0}}
\newcommand{\postlineam}{\M@adlineam{1}}
%    \end{macrocode}
%
%    \begin{macrocode}
\def\M@adlineam#1#2{\leavevmode 
  \setbox0=\hbox{\hss
    \bgroup #2\relax \global\dimen0=-.5ex \egroup \hss}%
  \kern \M@linea@indent
  \ifnum #1=\z@ 
     \kern -\wd0 
  \else
     \kern \M@linea@length
  \fi
  \advance \dimen0 by \M@linea@height
  \raisebox {\dimen0}[\z@][\z@]{\copy0}%
  \kern -\M@linea@indent
  \ifnum #1=\z@ 
  \else
     \kern -\wd0 
     \kern -\M@linea@length
  \fi
}
%    \end{macrocode}
%
% \paragraph{coronis}
%
%    \begin{macrocode}
\newcommand{\coronis}{%
  \@ifstar{\M@coronis@star}{\M@coronis@nostar}}
\let\koronis=\coronis
\newcommand{\M@coronis@star}[1][0]%
  {\M@coronis{1}{#1\baselineskip}}
\newcommand{\M@coronis@nostar}[1][0]%
  {\M@coronis{0}{#1\baselineskip}}
%    \end{macrocode}
%
%    \begin{macrocode}
\def\M@coronis#1#2{\leavevmode
  \let\next=\relax
  \begingroup 
    \normalsize 
    \global\dimen2=\baselineskip 
  \endgroup
  \ifcase \@ptsize
    \dimen0=.67em 
  \or
    \dimen0=.7em 
  \or
    \dimen0=.65em
  \fi
  \ifM@imago
    \dimen3=\z@
    \advance \dimen3 by #2\relax
  \else
    \ifnum #1=\@ne \let\next=\@gobble \fi
    \vadjust{\kern #2}%
    \ifnum #1=\@ne \par \else \\\fi
    \leavevmode 
    \kern -1.6\dimen0 
  \fi
  \dimen1=.75\dimen2 
  \ifM@imago \advance \dimen1 by \dimen3 \fi
%    \end{macrocode}
% The central line
%    \begin{macrocode}
  \raisebox {\dimen1}[\z@][\z@]%
    {\hbox to \dimen0{\leaders \hrule \hfill}}%
  \global\M@linea@length=\dimen0 
  \global\M@linea@height=\dimen1 
  \kern -\dimen0 
%    \end{macrocode}
% The lines above
%    \begin{macrocode}
  \dimen1=\dimen2 
  \ifM@imago \advance \dimen1 by \dimen3 \fi
  \raisebox {\dimen1}[0pt][0pt]%
    {\hbox to \dimen0{%
     \hss \hbox to .6\dimen0{\leaders \hrule \hfill}\hss}}%
  \kern -\dimen0 
  \dimen1=1.1\dimen2 
  \ifM@imago \advance \dimen1 by \dimen3 \fi
  \raisebox {\dimen1}[0pt][0pt]%
    {\hbox to \dimen0{%
      \hss \hbox to .4\dimen0{\leaders \hrule \hfill}\hss}}%
  \kern -\dimen0 
  \dimen1=1.2\dimen2 
  \ifM@imago \advance \dimen1 by \dimen3 \fi
  \raisebox {\dimen1}[\z@][\z@]%
    {\hbox to \dimen0{%
      \hss\hbox to .25\dimen0{\leaders \hrule \hfill}\hss}}%
  \kern -\dimen0 
%    \end{macrocode}
% The lines below
%    \begin{macrocode}
  \dimen1=\if \@ptsize 2 .375\else .35\fi\dimen2 
  \ifM@imago \advance \dimen1 by \dimen3 \fi
  \raisebox {\dimen1}[\z@][\z@]%
    {\hbox to \dimen0{%
      \hss \hbox to .6\dimen0{\leaders \hrule \hfill}\hss}}%
  \kern -\dimen0 
  \dimen1=\if \@ptsize 2 .275\else .25\fi\dimen2 
  \ifM@imago \advance \dimen1 by \dimen3 \fi
  \raisebox {\dimen1}[0pt][0pt]%
    {\hbox to \dimen0{%
     \hss \hbox to .4\dimen0{\leaders \hrule \hfill}\hss}}%
  \kern -\dimen0 
  \dimen1=\if \@ptsize 2 .175\else .15\fi\dimen2 
  \ifM@imago \advance \dimen1 by \dimen3 \fi
  \raisebox {\dimen1}[\z@][\z@]%
    {\hbox to \dimen0{%
     \hss \hbox to .25\dimen0{\leaders \hrule \hfill}\hss}}%
  \kern -\dimen0 
%    \end{macrocode}
% The bottom squiggle
%    \begin{macrocode}
  \setbox0=\hbox{\begingroup
    \fontencoding{OT1}\fontfamily{cmr}\fontseries{m}%
    \fontshape{it}\selectfont ,\endgroup}%
  \dimen1=\if \@ptsize 2 0\else -.03\fi\dimen2 
  \ifM@imago \advance \dimen1 by \dimen3 \fi
  \raisebox {\dimen1}[\z@][\z@]%
    {\hbox to \dimen0{\hss \kern -.1\wd0\box0\hss}}%
  \kern -\dimen0 
%    \end{macrocode}
% The top squiggle
%    \begin{macrocode}
  \setbox0=\hbox{\begingroup
    \fontencoding{OT1}\fontfamily{cmr}\fontseries{m}%
    \fontshape{it}\selectfont \char'140 \endgroup}%
  \dimen1=.97\dimen2 
  \ifM@imago \advance \dimen1 by \dimen3 \fi
  \raisebox {\dimen1}[\z@][\z@]%
    {\hbox to \dimen0{\hss \kern -.5\wd0\box0\hss}}%
  \kern -\dimen0 
%    \end{macrocode}
% The small circle
%    \begin{macrocode}
  \setbox0=\hbox{\begingroup \tencirc \char"61 \endgroup}%
  \setbox0=\hbox{\begingroup
    \kern 1.1\wd0 \tencirc \char"61 \endgroup}%
  \dimen1=\if \@ptsize 2 .85\else .86\fi\dimen2 
  \ifM@imago \advance \dimen1 by \dimen3 \fi
  \raisebox {\dimen1}[0pt][0pt]%
    {\hbox to \dimen0{\hss \box0 \hss}}%
  \kern -\dimen0 
%    \end{macrocode}
% The big circle
%    \begin{macrocode}
  \setbox0=\hbox{%
    \hss \begingroup \tencirc \char"63 \endgroup \hss}%
  \setbox0=\hbox{\hss \begingroup
    \kern 1.05\wd0 \tencirc \char"63 \endgroup \hss}%
  \dimen1=\if \@ptsize 2 .61\else .59\fi\dimen2 
  \ifM@imago  \advance \dimen1 by \dimen3 \fi
  \raisebox {\dimen1}[\z@][\z@]%
    {\hbox to \dimen0{\hss \box0 \hss}}%
  \ifM@imago
  \else
    \kern .6\dimen0 
  \fi
  \next
}
%    \end{macrocode}
% \paragraph{Generating the signs within the text}
%
%    \begin{macrocode}
\newcommand{\imago}{\@ifstar{\M@imago@star}{\M@imago@nostar}}
\newcommand{\M@imago@star}[2][0]{\M@imago{1}{#1}{#2}}
\newcommand{\M@imago@nostar}[2][0]{\M@imago{0}{#1}{#2}}
%    \end{macrocode}
%
%    \begin{macrocode}
\def\M@imago#1#2#3{\leavevmode
  \setbox0=\hbox{\begingroup \M@imagotrue {#3[#2]}\endgroup}%
  \setbox1=\hbox to \M@linea@length{%
    \hss
    \ifnum #1=\@ne
      \dimen0=\M@linea@height
      \advance \dimen0 by -.4ex
      \raisebox {-\dimen0}[\z@][\z@]{\box0}%
    \else
      \box0 
    \fi
  }%
  \box1\relax  
}
%    \end{macrocode}
% \paragraph{Defining new signs}
%
%    \begin{macrocode}
\newcommand{\novalinea}[4]{%
  \def#1{\leavevmode 
         \dimen1=#2\relax \dimen2=#3\relax
         \dimen3=#4\baselineskip 
         \ifM@linea@dimen
           \let\next=\relax
         \else
           \let\next=\M@do@linea
         \fi
         \next}%
}
%    \end{macrocode}
%
%    \begin{macrocode}
\def\M@do@linea{\@ifstar{\M@linea@star}{\M@linea@nostar}}
%    \end{macrocode}
%
%    \begin{macrocode}
\newcommand{\novageminata}[4]{%
  \def#1{\leavevmode 
         \dimen1=#2\relax \dimen2=#3\relax
         \dimen3=#4\baselineskip 
         \@ifstar{\M@geminata@star}{\M@geminata@nostar}}%
}
%    \end{macrocode}
%
%    \begin{macrocode}
\novalinea{\linea}{-.75em}{1.5em}{.15}
%    \end{macrocode}
% \subsubsection{\textit{Miscellanea}} 
%
% \paragraph{lineola}
%
%    \begin{macrocode}
\newcommand{\lineola}[2][0]{\leavevmode
  \dimen0=.75\baselineskip
  \advance \dimen0 by #1\baselineskip
  \raisebox {\dimen0}[\z@][\z@]%
    {\hbox to #2{\leaders \hrule \hfill}}%
  \kern -#2\relax
}
%    \end{macrocode}
%
% \paragraph{Lineola}
%
%    \begin{macrocode}
\newcommand{\Lineola}[2][0]{\leavevmode
  \setbox0=\hbox{#2}%
  \copy0 \kern -\wd0
  \lineola[#1]{\wd0}%
  \kern \wd0\relax
}
%    \end{macrocode}
%
% \paragraph{structa}
%
%    \begin{macrocode}
\newcommand{\structa}[3][0]{\leavevmode
  \setbox0=\hbox{\begingroup #2\endgroup}%
  \ifdim \ht0=\z@
    \ifdim \dp0=\z@
      \ht0=1ex
    \fi
  \fi
  \setbox1=\hbox to \wd0{\hss\begingroup #3\endgroup\hss}%
  \dimen2 = \ht0 
  \advance \dimen2 by .15ex
  \advance \dimen2 by #1ex
  \dimen3 = \z@
  \M@Stack 0\relax
}
%    \end{macrocode}
% \vspace{1ex}
% \quad
% \begin{metrica}
% \Large\t{.11}\textit{f\kern .05em\=in\-is}%
% \end{metrica}
%
%% \Finale
%
\endinput
