diff options
author | Karl Berry <karl@freefriends.org> | 2006-01-11 23:55:03 +0000 |
---|---|---|
committer | Karl Berry <karl@freefriends.org> | 2006-01-11 23:55:03 +0000 |
commit | d0224e39132d2b2a13571f3b4ce9ececbbd2634a (patch) | |
tree | e206cb1700cbd5651c5037d2286992873c31cd8e /Master/texmf-dist/source/latex | |
parent | 852770c15a43a13ef4dfee0594bf733d944cb459 (diff) |
trunk/Master/texmf-dist/source/latex/metre
git-svn-id: svn://tug.org/texlive/trunk@382 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master/texmf-dist/source/latex')
-rw-r--r-- | Master/texmf-dist/source/latex/metre/metre.dtx | 4068 | ||||
-rw-r--r-- | Master/texmf-dist/source/latex/metre/metre.ins | 42 |
2 files changed, 4110 insertions, 0 deletions
diff --git a/Master/texmf-dist/source/latex/metre/metre.dtx b/Master/texmf-dist/source/latex/metre/metre.dtx new file mode 100644 index 00000000000..6a918778227 --- /dev/null +++ b/Master/texmf-dist/source/latex/metre/metre.dtx @@ -0,0 +1,4068 @@ +% \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 diff --git a/Master/texmf-dist/source/latex/metre/metre.ins b/Master/texmf-dist/source/latex/metre/metre.ins new file mode 100644 index 00000000000..e895c18aefe --- /dev/null +++ b/Master/texmf-dist/source/latex/metre/metre.ins @@ -0,0 +1,42 @@ +%% +%% This file will generate fast loadable files and documentation +%% driver files from the doc files in this package when run through +%% LaTeX or TeX. +%% +\input docstrip +\preamble + +This is a generated file. + +Copyright 2000 2001 Gianfranco Boggio-Togna + +This file 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. + +\endpreamble +\keepsilent +\Msg{*** Generating the metre package ***} +\generateFile{metre.sty}{t}{\from{metre.dtx}{package}} +\Msg{==============================================} +\Msg{} +\Msg{ To finish the installation move the file} +\Msg{ metre.sty into a directory searched by TeX.} +\Msg{} +\Msg{ The package requires `relsize.sty'} +\Msg{ (from /macros/latex/contrib/other/misc).} +\Msg{} +\Msg{ To typeset the user guide run the file} +\Msg{ `metre.dtx' through LaTeX.} +\Msg{} +\Msg{ Happy TeXing!} +\Msg{} +\Msg{==============================================} +\endbatchfile + + + |