% \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} % % % \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}}<\D{} \d{} D\S3 E>\S2 ph<\S{3d} tl<:|\par % \vskip 2ex % yields: \sigla{gl>\S[.4]{\metra{\bb}}\c\S{\metra{\bb}}<\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