diff options
Diffstat (limited to 'Master/texmf-dist/source')
-rw-r--r-- | Master/texmf-dist/source/latex/teubner/teubner.dtx | 2732 | ||||
-rw-r--r-- | Master/texmf-dist/source/latex/teubner/teubner.ins | 70 |
2 files changed, 2802 insertions, 0 deletions
diff --git a/Master/texmf-dist/source/latex/teubner/teubner.dtx b/Master/texmf-dist/source/latex/teubner/teubner.dtx new file mode 100644 index 00000000000..1b589ce8849 --- /dev/null +++ b/Master/texmf-dist/source/latex/teubner/teubner.dtx @@ -0,0 +1,2732 @@ +% \iffalse meta comment +% File: teubner.dtx Copyright (C) 2001-2004 Claudio Beccari +% +% It may be distributed and/or modified under the +% conditions of the LaTeX Project Public License, either version 1.3 +% of this license or (at your option) any later version. +% The latest version of this license is in +% http://www.latex-project.org/lppl.txt +% +% \fi +% +%% \CharacterTable +%% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z +%% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z +%% Digits \0\1\2\3\4\5\6\7\8\9 +%% Exclamation \! Double quote \" Hash (number) \# +%% Dollar \$ Percent \% Ampersand \& +%% Acute accent \' Left paren \( Right paren \) +%% Asterisk \* Plus \+ Comma \, +%% Minus \- Point \. Solidus \/ +%% Colon \: Semicolon \; Less than \< +%% Equals \= Greater than \> Question mark \? +%% Commercial at \@ Left bracket \[ Backslash \\ +%% Right bracket \] Circumflex \^ Underscore \_ +%% Grave accent \` Left brace \{ Vertical bar \| +%% Right brace \} Tilde \~} +% \iffalse +%<*dtx> +\ProvidesFile{teubner.dtx} +%</dtx> +%<package>\NeedsTeXFormat{LaTeX2e} +%<package>\ProvidesPackage{teubner} +%<driver>\ProvidesFile{teubner.dtx} + [2004/09/14 v.2.2b extensions for Greek philology] +% +%<*driver> +\documentclass{ltxdoc} +\GetFileInfo{teubner.dtx} + \title{The \textsf{teubner} package\\ + Extensions for Greek philology + \thanks{This file + has version number \fileversion, last + revised on \filedate.}} + \author{Claudio Beccari\\\texttt{claudio.beccari@polito.it}\\Politecnico di Torino} + \date{} + \providecommand\babel{\textsf{babel}} + \newcommand\lbr{\char123\relax}\newcommand\rbr{\char125\relax} + \newenvironment{sintassi}{% + \begin{quote}\parskip0pt\hfuzz10pt\ttfamily\obeylines + }{% + \end{quote}\ignorespaces + } + \newcommand*\acro[1]{\expandafter\textsc\expandafter{\MakeLowercase{#1}}} +\begin{document} + \maketitle + \DocInput{teubner.dtx} +\end{document} +%</driver> +% \fi +% +% \CheckSum{4005} +% +% \begin{abstract} +% This extension package complements the greek option of the \babel\ +% package so as to enable the use of the Lipsian\footnote{What here +% are called Lipsian fonts are a family of fonts that in Greece are +% called ``Lipsiakos''; they are similar to the ones that were being +% used in the Teubner Printing Company of Lipsia from mid XIX century on.} +% fonts and to use several macros for inserting special annotations +% in the written text, as well as to typeset verses with special +% layout. Metric sequences may be defined and typeset by means of a +% companion font \texttt{gmtr????} that follows the same conventions +% as the CB fonts that are normally used when the \babel\ greek +% option is in force. +% +% Examples and lists of commands are available in the file +% \texttt{teubner-doc.pdf} which, as a regular pdf file, embeds all +% the necessary fonts and may be read on screen as well as printed on paper; +% beware, though, that the PostScript fonts that are being used +% in \texttt{teubner-doc.pdf} are not distributed with the package. +% While this documentation is being written the \TeX{}-Live Team is trying +% to reduce the size of the distribution and one of the proposals is to reduce +% the number of Greek fonts distributed on the \TeX-Live CD; therefore it might +% be necessary that the users of this \textsf{teubner} package download the +% missing fonts directly from one of the \acro{CTAN} archives. +% \end{abstract} +% +% \section{Introduction} +% Philologists in general have the necessity of using special +% alphabets and several special symbols in order to mark up their +% texts and to typeset them in a special way. Greek philology makes +% no exception, therefore I prepared this file and some extra fonts +% in order to complement what is already available with the greek +% option of the \babel\ package. +% +% I must warmly thank Paolo Ciacchi of the University of Trieste who +% invited me in this ``adventure'', since I know nothing about +% philology; he assisted me with all his competence, so that I +% could learn so many new things and I could appreciate the world of +% philologists. +% +% Paolo Ciacchi's ``invitation'' arrived when I was almost finished +% with the design of the Lipsian font family; I was working on this new +% typeface after a kind request of Dimitri Filippou, with whom I +% already collaborated for other questions related to Greek +% typesetting. I warmly thank also Dimitri Filippou for the +% patience with which he revised every single glyph of the new +% typeface. Paolo Ciacchi added his constructive criticism to the +% typeface, especially for what concerns diacritical marks. At the +% end I think that the new typeface turned out pretty well thanks to +% both my friends. +% +% The Lipsian font, also called Leipzig or Lipsiakos in Greece, is one of the oblique +% fonts that used to be employed by the typesetters working in the +% German city of Leipzig, among which the Teubner Printing Company. +% This Company's classical works of ancient Greek poetry are considered among +% the best ever published. The name of this file and this extension +% package is in honor of that printing company. +% +% This package documentation does not contain any example written in +% Greek, because when you process this file it is very likely that +% you don't have the suitable Greek fonts and you must still download +% all or some of them. Therefore a companion +% file \texttt{teubner-doc.pdf} is included in this bundle where most, +% if not all, the new commands are documented and suitably shown. +% +% This package contains new environments and new commands; it presumes +% the user invokes it after declaring the \texttt{greek} option to the \babel\ +% package; should he forget, this package will complain. But once the +% \texttt{greek} option is properly declared, this package verifies that the +% |polutonikogreek| dialect is selected, or that the |polutoniko| attribute +% is set. This choice depends on the particular version of the \babel\ +% package, but should not concern the user; switching back and forth +% between classical Greek and some modern western language is performed +% in a transparent way; possibly there might be some problem switching +% from classical to modern spelling in Greek itself, but since in modern +% spelling the multiplicity of Greek diacritical mark is not forbidden, +% it's the author choice to select classical or modern words, Lipsian or +% Didot fonts, polytonic or monotonic accentuation. The worst it can happen +% is that \babel\ might use just one hyphenation pattern set, so that in +% one of the two Greek versions some words might turn out with the wrong +% hyphens. +% +% The CB Greek fonts, which have been available for some years now on \acro{ctan} +% in the directory \texttt{/tex-archive/fonts/greek/cb} have been completed +% with the new files for the Lipsian fonts, while the metric symbols font is +% included in this bundle; it does not need a formal font definition file, because +% the necessary definitions are included in this package. +% +% The CB Greek fonts allow to input Greek text with a Latin keyboard and +% by employing the prefix notation; with a Greek keyboard and file +% \texttt{iso-8859-7.def} it is possible to directly input Greek text with the +% monotonic spelling; if polytonic spelling is required I fear that the above +% file is of little help and that a Latin keyboard does the job without +% an excessive burden. +% +% Nevertheless there is a little point to observe; Lipsian fonts are very +% nice but show most kerning errors with more evidence than the traditional +% Didot Greek fonts. With the prefix notation in force, kerning programs may result disabled +% and some diphthongs and some consonant-vowel combinations appear poorly matched when +% the second letter caries any diacritical mark. In order to avoid this +% ``feature'', the accented vowels may be input by means of macros, that +% directly translate to the accented glyph, rather than invoking the ligature +% programs that are implied by the prefix notation; reading a Greek text +% on the screen while editing the input \texttt{.tex} file when a Latin +% keyboard and such macros are used may be very strange, but authors get +% used to it, and agree that the effort is worth the result. +% +% \section{Environments} +% I apologize if I chose Italian names for verse environments; I wanted to +% use names very different from the corresponding English ones, but at the +% same time easily recognizable. +% +% \DescribeEnv{versi}\DescribeMacro{\verso} The environment \texttt{versi} +% is used to typeset verses +% in line, without an end of line at the end of each verse; a vertical bar +% with a number on top of it marks the verse limit while allowing a numeric +% reference to a specific verse; the opening environment statement requires +% a string, a short text, in order to indent the verse lines the amount of +% this string width; the syntax is the following +% \begin{sintassi} +% \bslash begin\lbr versi\rbr\lbr\meta{string}\rbr{} +% \meta{verse}\bslash verso[\meta{starting number}]\meta{verse}\bslash verso +% \meta{verse}\bslash verso\meta{verse}\dots{} +% \bslash end\lbr versi\rbr +% \end{sintassi} +% where, of course, \meta{starting number} is required only for the first +% instance of |\verso| or when numbering must be restarted, for example +% after an ellipsis. +% +% \DescribeEnv{Versi} The environment \texttt{Versi} is similar to the +% standard \LaTeX\ environment \texttt{verse}, except verses are numbered +% on multiples of~5; the opening statement requires the \meta{starting +% number} as an optional argument; if this optional argument is not specified, +% the starting number is assumed to be~1. +% \begin{sintassi} +% \bslash begin\lbr Versi\rbr[\meta{starting number}] +% \meta{verse}\bslash\bslash{}\meta{*}[\meta{vertical space}] +% \meta{verse}\bslash\bslash{} +% \dots{} +% \bslash end\lbr Versi\rbr +%\end{sintassi} +% +% \DescribeEnv{VERSI}\DescribeMacro{\SubVerso}\DescribeMacro{\NoSubVerso} +% The environment \texttt{VERSI} allows for two verse +% enumerations; the main enumeration is identical to the one performed by +% the previous environment \texttt{Versi}, while the secondary enumeration +% is in smaller digits and normally numbers consecutive verses, except +% that it can be turned on and off; the verses that lack the secondary +% enumeration are indented by moving them to the right. +% \begin{sintassi} +% \bslash begin\lbr VERSI\rbr[\meta{starting principal number}] +% \meta{verse}\bslash\bslash\meta{*}[\meta{vertical space}] +% \bslash SubVerso[\meta{starting secondary number}] +% \meta{verse}\bslash\bslash\meta{*}[\meta{vertical space}] +% \dots{} +% \bslash NoSubVerso +% \meta{verse}\bslash\bslash\meta{*}[\meta{vertical space}] +% \dots +% \bslash end\lbr VERSI\rbr +% \end{sintassi} +% where if \meta{starting principal number} is missing, 1 is assumed, +% while if \meta{starting secondary number} is missing, the enumeration +% is continued from the next available integer. Of course +% \meta{starting secondary number} is used again when the secondary +% enumeration must be restarted; there are no means to restart the +% principal enumeration. +% +% \DescribeEnv{bracedmetrics} The previous environments accept \meta{verses} +% in any language and in any alphabet, the one that is in force before opening +% the environment; the language and, even less, the alphabet cannot be +% globally changed within the above environments; if such a change is performed, +% it is valid only for one verse, or for the remaining fraction of the verse +% after the language or font change. This means, among the other things, that +% if the default ``alphabet'' is the one that shows the metric symbols, +% the above environments may be used to display ``metric verses'', that is the +% pattern of long, short or ancipital symbols, together with any other metric symbol +% so as to display the metrics without disturbing the written text; when doing +% this metric typesetting, it may happen that some verse patterns exhibit some variants; +% in this case the \texttt{bracedmetrics} environment comes handy, because it +% can display such variants in separate lines but grouped with a large right +% brace; some commands allow to roughly align these variants, so as to +% allow to nest several such environments as if they were single blocks of metric +% symbols. The argument of the opening statement specifies the width of the +% block so as to align properly all the symbols even in nested environments. +% \begin{sintassi} +% \bslash begin\lbr bracedmetrics\rbr\lbr\meta{length}\rbr{} +% \meta{metric pattern}\bslash\bslash +% \meta{metric pattern}\bslash\bslash +% \dots{} +% \bslash end\lbr bracedmetrics\rbr +% \end{sintassi} +% \DescribeMacro{\verseskip}\DescribeMacro{\Hfill} Within the \meta{metric pattern} +% it is possible to flush right the symbols +% by prefixing the whole string with a |\Hfill| command; the \meta{length} may +% be specified as an integer multiple of a ``long'' symbol by means of +%\begin{sintassi} +% \bslash verseskip\lbr\meta{number}\rbr +%\end{sintassi} +% The macro |\verseskip| can be used also within \meta{metric pattern} +% in order to space out metric symbols. +% +% \section{Commands and symbols} +% This package defines a lot of commands for inserting special signs in the middle +% of regular text, for marking zeugmas and synizeses, for putting unusual accents +% on any symbol, for inserting special ``parentheses'' that are used by philologists +% for marking blocks of letters or blocks of text. I suggest that the user consults +% the documentation file \texttt{teubner-doc.pdf} for a complete list of commands +% and symbols. +% +% \DescribeMacro{\newmetrics} Here it might be useful to describe a command +% for defining metric sequences, so as to shorten the definition of metric verses; +% this new command is |\newmetrics| and may be used for the definition of new commands +% whose name \emph{may start with one digit}: precisely this digit may be one +% of~2, 3,~4. Even if \LaTeX\ does not allow macros to contain both digits +% and letters, other service macros have been defined so as to handle these +% special control sequences even if they start with \emph{one} digit strictly lower +% than~5. The syntax is: +% \begin{sintassi} +% \bslash newmetrics\lbr\meta{control sequence}\rbr\lbr\meta{definition}\rbr +% \end{sintassi} +% where \meta{definition} consists in general of a sequence of metric commands such as +% |\longa|, |\brevis|, |\anceps|, etc. +% +% \StopEventually{} +% +% \section{Code} +% The beginning of the file starts with the traditional stuff; +% as usual we provide also the means for avoiding reading this file again. +% \begin{macrocode} +%<*package> +\ifx\teubner\undefined + \def\teubner{teubner}\else\expandafter\endinput +\fi +% \end{macrocode} +% In order to use the PostScript pfb fonts (CM, EC, and CB) it is necessary to know if +% we are dealing with \LaTeX\ or pdf\LaTeX; this is necessary because apparently the +% pfb math extensible fonts derived from the \textsf{META\-FONT} counterparts do not have exactly the same +% effective dimensions; this is why the ``zeugma'' and the ``synizesis'' signs have to be corrected +% when the pfb fonts are used; with these, in facts, the black leader that joins the curved +% extremities appears a little too fat and does not join exactly le left mark. Therefore we +% define a new boolean\footnote{Thanks to Yuqing Deng who spotted an error somewhere else, +% that followed from an improper definition of the state variable \texttt{\string\ifPDF} such +% that the program performed correctly under \texttt{pdflatex} and crashed under \texttt{latex}.}: +% \begin{macrocode} +\newif\ifPDF \PDFfalse +\@ifundefined{pdfoutput}{\PDFfalse}{\ifnum\pdfoutput>\z@\PDFtrue\fi} +% \end{macrocode} +% When \texttt{teubner.sty} is input the language Greek must have been already defined; +% otherwise an error message is issued and processing is terminated. +% \begin{macrocode} +\ifx\captionsgreek\undefined +\PackageError{teubner}{Greek language unknown!\MessageBreak +I am not going to use Lipsian fonts and Scholars' signs\MessageBreak +if Greek is unknown.\MessageBreak +Use the babel package with the \texttt{greek} option.\MessageBreak +Type X <return> to exit.}% +{Type X <return> to exit.} +\fi +% \end{macrocode} +% If this test is passed, this means that not only the greek option to the \babel\ package +% is set, but also that all the \babel\ machinery is available. +% +% Since \texttt{teubner.sty} accepts some options it is necessary to provide +% their definitions; in particular the |\or| control sequence conflicts +% with the |\or| primitive command used within the syntax of |\ifcase|\footnote{With +% version 2002/07/18 v.1.0d this has been eliminated; the option remains for +% compatibility with older versions, but the only legal command is now \texttt{\string\oR}.}; +% |\oR|is a little exception since all the other accent-vowel macros +% contain only lowercase letters. The point is that accent vowel sequences +% that directly access the accented glyph are made up as such: +% \begin{sintassi} +% \bslash \meta{vowel}\meta{first diacritic}\meta{second diacritic}\meta{third diacritic} +% \textrm{where} +% \meta{first diacritic} \textrm{is \texttt{d} or \texttt{r} or \texttt{s} for diaeresis, rough or smooth breadth} +% \meta{second diacritic} \textrm{is \texttt{c} or \texttt{a} or \texttt{g} for circumflex or acute or grave} +% \meta{third diacritic} \textrm{is \texttt{i} for iota subscript or adscript} +% \end{sintassi} +% Evidently none of the diacritical marks is compulsory, but at least one must +% be present; if more than one is present it must be given in that sequence. Since |\oR| +% means omicron with rough breath, it is not very important that it is declared +% with the standard sequence |<o| or with |\oR|, because it never +% falls after another letter, so that it never breaks any ligature or kerning command. +% At the same time since all accent combinations are defined as ``text commands'', in \LaTeX\ jargon, +% when their commands are followed by a vowel they define a ``text symbol'' that is directly the +% glyph of the accented vowel; therefore |<o|, |\oR| and |\r{o}| are all equivalent (at the beginning of a word +% where omicron with rough breath is the only place where you can find it). See more on this +% point in the sequel. +% \begin{macrocode} +\newif\ifor\orfalse % Compatibility with older versions +\DeclareOption{or}{\relax} +\ProcessOptions* +% \end{macrocode} +% +% In the sequel we frequently use the acronym for the Greek font encoding; we hope +% it will eventually become \texttt{GR} or, following the actual 256 glyph font +% encodings, \texttt{T7} or \texttt{X7}\footnote{Apparently \texttt{T7} has been chosen +% to define an encoding where the first 128 glyphs are the standard \texttt{OT1} +% encoded Latin fonts, and the second group again of 128 glyphs contains the Greek +% characters; therefore, since polytonic spelling requires more than 128 glyphs, the extended +% encoding \texttt{X7} will probably become the one applicable to the whole set of the CB fonts.}. +% Meanwhile the acronym is \texttt{LGR}, so we'd better +% define a symbolic name, so that we can change the definitive name in just one place. +% \begin{macrocode} +\def\GRencoding@name{LGR} +% \end{macrocode} +% +% Now the default Olga Greek fonts, used for rendering the ``Greek italic shape'' +% are substituted with the Lipsian ones; this simply requires to reenter the +% shape definition commands used in the font description file with new commands +% that refer to the Lipsian fonts; the font encoding is already known to the package +% so that any encoding dependent name is correctly defined: +% \begin{macrocode} +\input{lgrcmr.fd} +\expandafter\EC@family\expandafter{\GRencoding@name}{cmr}{m}{it} {grml} +\expandafter\EC@family\expandafter{\GRencoding@name}{cmr}{bx}{it} {grxl} +% \end{macrocode} +% +% \begin{macro}{\metricsfont} Similarly the metric symbol font is declared together +% with a command for selecting it: +% \begin{macrocode} +\DeclareFontFamily{U}{mtr}{\hyphenchar\font\m@ne} +\EC@family{U}{mtr}{m}{n}{gmtr} +\DeclareFontShape{U}{mtr}{m}{it}{<->ssub*mtr/m/n}{} +\newcommand*\metricsfont{\fontencoding{U}\fontfamily{mtr}\upshape} +% \end{macrocode} +% \end{macro} +% Next we require the package for extensible math fonts; it might be strange to use +% extensible math fonts in Greek philology, but a certain command must be picked up +% from such fonts, with the assurance that it changes size together with the current +% font size. +% \begin{macrocode} +\RequirePackage{exscale} +% \end{macrocode} +% +% Some macros are necessary to switch languages; such macros must be independent +% (at least for now) from the particular \babel\ version, whether it be version 3.6 +% or~3.7; in the former the concept of language attribute is unknown, while the latter +% recognizes varieties of the same language by the attribute setting. Such macros, +% besides being as robust as possible, must provide the alphabet changes as required. +%\begin{macro}{\GreekName} During the language switching operations |\GreekName| +% distinguishes the dialect or the main language whose attribute +% gets set and, evidently, becomes effective when the main language \texttt{greek} +% is in force. +% \begin{macrocode} +\ifx\languageattribute\undefined + \def\GreekName{polutonikogreek}% +\else + \languageattribute{greek}{polutoniko}\def\GreekName{greek}% +\fi +% \end{macrocode} +%\end{macro} +%\begin{macro}{\previouslanguage} +%\begin{macro}{\previousencoding} The ``default'' language is defined as the ``previous'' +% language; similarly the ``default'' encoding is defined as the ``previous'' encoding; these +% are the language and the encoding in force when the document starts; this is why such macros +% are defined at the beginning of the document: +% \begin{macrocode} +\AtBeginDocument{% + \edef\previouslanguage{\languagename}% + \edef\previousencoding{\f@encoding}% +} +% \end{macrocode} +% Nevertheless this requires a minimum of attention in specifying the options for the +% \babel\ package and in the order extensions packages are read in. The |teubner.sty| package +% should be read \emph{after} any other package that sets o resets font definitions, +% in particular if font encoding is defined; for example if the T1 encoding is selected +% as the default one, in place of the OT1 encoding, then this choice must be made before +% this package is read in. Similarly when the \babel\ options are specified, remember that +% the last language name becomes the default language at begin document; never +% specify \texttt{greek} as the last language option\dots, well, unless you are going to write +% all your document in Greek; in this case the only switching you need is between +% Didot characters and Lipsian characters (which is simply done by means of |\upshape| +% and |\itshape|); in any case specify the polytonic spelling. +%\end{macro} +%\end{macro} +% +%\begin{macro}{\Lipsiakostext} |\Lipsiakostext| is a declaration stating that from now on +% typesetting will be done with the Lipsian fonts; notice that the encoding and the +% language name in force before this declaration are memorized, then the current +% Greek version is selected; the |\let\~\GRcirc| is required because swithching +% on and off may reset the active tilde and connected macros definitions. |\~| in Greek +% must set the circumflex accent, so we make sure that this really occurs. +% \begin{macrocode} +\DeclareRobustCommand\Lipsiakostext{\edef\previouslanguage{\languagename}% + \edef\previousencoding{\f@encoding}% + \expandafter\select@language\expandafter{\GreekName}% + \let\~\GRcirc\let~\greek@tilde\itshape} +% \end{macrocode} +%\end{macro} +%\begin{macro}{\NoLipsiakostext} |\NoLipsiakostext| is the opposite declaration +% that undoes everything that was done with |\Lipsiakostext|. +% \begin{macrocode} +\DeclareRobustCommand\NoLipsiakostext{% + \expandafter\select@language\expandafter{\previouslanguage}% + \expandafter\fontencoding\expandafter{\previousencoding}\upshape + \edef\previouslanguage{\languagename}% + \edef\previousencoding{\f@encoding}\bbl@activate{~}% +} +% \end{macrocode} +%\end{macro} +%\begin{macro}{\textLipsias} |\textLipsias| is a command that typesets its argument +% with the |\Lipsiakostext| declaration in force; actually the external font encoding +% and language are not memorized, because the pertinent Greek commands are just local. +% \begin{macrocode} +\DeclareRobustCommand\textLipsias[1]{{% + \expandafter\select@language\expandafter{\GreekName}% + \expandafter\fontencoding\expandafter{\GRencoding@name}% + \itshape\let\~\GRcirc\let~\greek@tilde#1}% +} +% \end{macrocode} +%\end{macro} +%\begin{macro}{\textDidot} |\textDidot| is a similar macro where the common upright +% Greek characters are selected; it goes by itself that if |\textit| is specified +% within the |\textDidot| argument, the typesetting is or becomes identical with what +% one can obtain with the |\textLipsias| command. +% \begin{macrocode} +\DeclareRobustCommand\textDidot[1]{{% + \expandafter\select@language\expandafter{\GreekName}% + \expandafter\fontencoding\expandafter{\GRencoding@name}% + \upshape\let\~\GRcirc\let~\greek@tilde#1}% +} +% \end{macrocode} +%\end{macro} +%\begin{macro}{\textlatin} |\textlatin| is a redefinition of the standard \babel\ +% macro that is adapted to the present situation, where it may be called behind the +% scenes in certain situations that are beyond the control of the typesetter. Therefore +% every precaution is taken in order to be sure that the composition of the command +% argument is really done with the default encoding. +% \begin{macrocode} +\DeclareRobustCommand\textlatin[1]{\edef\externalencoding{\f@encoding}{% + \expandafter\select@language\expandafter{\previouslanguage}% + \expandafter\fontencoding\expandafter{\previousencoding}% + \bbl@activate{~}\upshape#1}% + \expandafter\fontencoding\expandafter{\externalencoding}\selectfont} +% \end{macrocode} +%\end{macro} +% +% Now we start the specific additions introduced with this package. +% +% \begin{macro}{\numero} +% We define a short macro |\numero| used to strip off the pt part of a dimension value +% as displayed by \TeX\ itself; this service macro is going to be used quite a lot for +% getting the font slant per point parameter so as to be able to put in their correct +% position various signs over or under other signs. +% \begin{macrocode} +{% +\catcode`p=12\catcode`t=12\gdef\numero#1pt{#1}% +} +% \end{macrocode} +% \end{macro} +% +% With the help of such service macro we are going to define a certain number of +% ``lift accent'' macros or ``put cedilla'' macros that work with both upright and +% slanted fonts, although they contain different parameters for Latin compared to +% Greek alphabets. +% \begin{macro}{\lift@accent} The first ``lift accent'' macro just puts an accent over +% a letter, without inserting any space between them; the first argument is the accent +% code (decimal, hexadecimal or octal; I prefer decimal), while the second argument +% is the letter --~any letter, even if it is not a vowel! +% \begin{macrocode} +\newcommand*\lift@accent[2]{\leavevmode +{\edef\slant@{\expandafter\numero\the\fontdimen1\font}% +\dimen@=\z@\setbox\z@\hbox{\char#1}\advance\dimen@-.5\wd\z@ +\setbox\tw@\hbox{i}\setbox\z@\hbox{#2}% +\ifdim\wd\z@>\wd\tw@\advance\dimen@ .5\wd\z@ + \else\advance\dimen@ .3\wd\z@\fi +\ifx#2a\advance\dimen@-.1\wd\z@\fi +\ifx#2h\advance\dimen@.05\wd\z@\fi +\@tempdima\ht\z@\advance\@tempdima-1ex\relax +\advance\dimen@\slant@\@tempdima +\raise\@tempdima\hbox to\z@{\kern\dimen@\char#1\relax\hss}\box\z@}} +% \end{macrocode} +% \end{macro} +% +% +% \begin{macro}{\Lift@accent} The second ``lift accent'' macro behaves +% as the first one except it interposes a small +% vertical distance between the accent and the letter: +% \begin{macrocode} +\newcommand*\Lift@accent[2]{\leavevmode +{\edef\slant@{\expandafter\numero\the\fontdimen1\font}% +\dimen@=\z@\setbox\z@\hbox{\char#1}\advance\dimen@-.5\wd\z@ +\setbox\tw@\hbox{i}\setbox\z@\hbox{#2}% +\ifdim\wd\z@>\wd\tw@\advance\dimen@ .5\wd\z@ +\else\advance\dimen@ .3\wd\z@\fi +\ifx#2a\advance\dimen@-.1\wd\z@\fi +\ifx#2h\advance\dimen@.05\wd\z@\fi +\@tempdima\ht\z@\advance\@tempdima-1ex\advance\@tempdima.1ex\relax +\advance\dimen@\slant@\@tempdima +\raise\@tempdima\hbox to\z@{\kern\dimen@\char#1\relax\hss}\box\z@}} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\LIFT@accent} The third ``lift accent'' macro behaves as the first one, +% except it interposes a specified vertical space between the letter and the accent; +% this space is specified as the second argument: +% \begin{macrocode} +\newcommand*\LIFT@accent[3]{\leavevmode +{\edef\slant@{\expandafter\numero\the\fontdimen1\font}% +\dimen@=\z@\setbox\z@\hbox{\char#1}\advance\dimen@-.5\wd\z@ +\setbox\tw@\hbox{i}\setbox\z@\hbox{#3}% +\ifdim\wd\z@>\wd\tw@\advance\dimen@ .5\wd\z@ +\else\advance\dimen@ .3\wd\z@\fi +\ifx#2a\advance\dimen@-.1\wd\z@\fi +\ifx#2h\advance\dimen@.05\wd\z@\fi +\@tempdima\ht\z@\advance\@tempdima-1ex\relax +\def\@tempA{#2}\ifx\@tempA\undefined\else +\advance\@tempdima#2\fi\let\@tempA\undefined +\advance\dimen@\slant@\@tempdima +\raise\@tempdima\hbox to\z@{\kern\dimen@\char#1\relax\hss}\box\z@}} +% \end{macrocode} +% \end{macro} +% +% All these macros will be used in subsequent ``put accent'' macros, that will +% stack also several accents one above the other; the necessity arises for example +% when the macron or breve diacritical marks have to be put over accented letters; +% according to typographical practice the accents must go over the macron or the breve. +% In a similar way philologists often must use other diacritical marks in addition +% to the traditional Greek ones, therefore these macros will be used, for example, for +% setting the Scandinavian ring (from a Latin font) over a Greek letter (from a Greek font). +% +% \begin{macro}{\cap@} The first such unusual diacritical mark is a small cap, +% a small upside down breve sign, that is in position~1 of the Greek font table. +% \begin{macrocode} +\DeclareRobustCommand{\cap@}[1]{\leavevmode +{\edef\slant@{\expandafter\numero\the\fontdimen1\font}% +\setbox\tw@\hbox{\fontencoding{\GRencoding@name}\selectfont + \char1}\dimen@-.5\wd\tw@ +\setbox\z@\hbox{#1}% +\advance\dimen@ .5\wd\z@ +\@tempdima\ht\z@\advance\@tempdima.55ex\relax +\advance\dimen@\slant@\@tempdima +\ifx\cf@encoding\GRencoding@name\else +\ifx#1k\advance\dimen@-.3\wd\tw@\fi\fi +\raise\@tempdima\hbox to\z@{\kern\dimen@\box\tw@\relax\hss}\box\z@}} +% \end{macrocode} +% The |\ifx\cf@encoding\GRencoding@name| conditional construct shows that this +% macro behaves differently with different font encodings; the following |\ifx#1k| +% checks the argument against the Greek letter kappa, which shows very clearly +% that these macros operate on any letter, not only vowels. +% \end{macro} +% \begin{macro}{\cap} By means of the above |\cap@| macro we can define three equivalent +% commands to be used either when the Greek encoding is in force, or when one of the +% Latin encodings is in force: +% \begin{macrocode} +\DeclareTextCommand{\cap}{\GRencoding@name}{\cap@} +\DeclareTextCommand{\cap}{OT1}{\cap@} +\DeclareTextCommand{\cap}{T1}{\cap@} +% \end{macrocode} +% Probably one definition would be sufficient, but on one side the presence +% of three encoding dependent macros are the remains of initial works, while on the other +% side they prevent to use these macros with encodings for which the macro might not +% work well, because it was not tested with other encodings. +% \end{macro} +% +% \begin{macro}{\cap@cedilla} Similarly a small cap can be put under another letter +% as it was a cedilla; for this task another macro is defined, which makes use of +% the same glyph in position~1 in the Greek font table: +% \begin{macrocode} +\newcommand*\cap@cedilla[1]{\leavevmode +{\setbox4\hbox{\fontencoding{\GRencoding@name}\selectfont\char1}% +\dimen@-.5\wd4 +\setbox\z@\hbox{#1}% +\ifx\cf@encoding\GRencoding@name +\ifx#1i\advance\dimen@ .65\wd\z@\else\advance\dimen@ .6\wd\z@\fi +\else +\ifx#1i\advance\dimen@ .55\wd\z@\else\advance\dimen@ .5\wd\z@\fi +\fi +\hbox to\z@{\kern\dimen@\box4\hss}\unhbox\z@}} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\ring@cedilla} Another cedilla like diacritical mark is the +% Scandinavian ring put under a letter; the correct positioning requires +% careful examination of the letter under which it is to be placed, distinguishing +% the Greek from the Latin encodings: +% \begin{macrocode} +\newcommand*\ring@cedilla[1]{\leavevmode +{\setbox4\hbox{\metricsfont\char26}% +\edef\slant@{\expandafter\numero\the\fontdimen1\font}% +\dimen@-.5\wd4\ifdim\slant@\p@>\z@\advance\dimen@-.04ex\fi +\setbox\z@\hbox{#1}% +\ifx\cf@encoding\GRencoding@name + \advance\dimen@ .45\wd\z@ + \ifx#1h\advance\dimen@-.13\wd\z@\fi + \ifx#1a\advance\dimen@-.07\wd\z@\fi + \ifx#1o\advance\dimen@-.07\wd\z@\fi + \ifx#1u\advance\dimen@+.07\wd\z@\fi + \ifx#1w\advance\dimen@+.03\wd\z@\fi +\else + \ifx#1i\advance\dimen@ .55\wd\z@\else + \ifx#1r\advance\dimen@.38\wd\z@\else + \ifx#1o\advance\dimen@.47\wd\z@\else + \advance\dimen@ .5\wd\z@ + \fi\fi\fi +\fi +\hbox to\z@{\kern\dimen@\box4\hss}\unhbox\z@}} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\dot@cedilla} Even the standard \LaTeX\ macro |dot| must be redefined +% with a cedilla like macro, so as to make use of a special dot from the +% metric symbols font: +% \begin{macrocode} +\newcommand*\dot@cedilla[1]{\leavevmode +{\setbox4\hbox{\metricsfont\char27}% +\dimen@-.5\wd4 +\setbox\tw@\hbox{i}\setbox\z@\hbox{#1}% +\ifx\cf@encoding\GRencoding@name + \advance\dimen@ .5\wd\z@ + \ifx#1h\advance\dimen@-.13\wd\z@\fi +\else + \ifdim\wd\z@>\wd\tw@\advance\dimen@.55\wd\z@ + \else\advance\dimen@.5\wd\tw@\fi +\fi +\setbox\tw@\hbox{o}\ifdim\wd\z@=\wd\tw@\advance\dimen@-.05\wd\z@\fi +\hbox to\z@{\kern\dimen@\box4\hss}\unhbox\z@}} +% \end{macrocode} +%\end{macro} +% +% \begin{macro}{\tie@cedilla} \LaTeX\ has the macro |\t| for placing a ``tie'' over two +% letters; philologists require also a tie under two letters; this is why another +% cedilla like macro is needed: +% \begin{macrocode} +\newcommand*\tie@cedilla[1]{\leavevmode % mette un tie sotto l'argomento +{\setbox4\hbox{\fontencoding{\GRencoding@name}\selectfont\char20}% +\dimen@-.5\wd4 +\setbox\tw@\hbox{i}\setbox\z@\hbox{#1}% +\ifx\cf@encoding\GRencoding@name + \advance\dimen@.5\wd\z@ + \ifx#1h\advance\dimen@-.1\wd\z@\fi + \ifx#1u\advance\dimen@.15\wd\z@\fi +\else + \ifdim\wd\z@>\wd\tw@\advance\dimen@ .55\wd\z@ + \else\advance\dimen@ .5\wd\tw@\fi +\fi +\setbox\tw@\hbox{o}\ifdim\wd\z@=\wd\tw@\advance\dimen@-.05\wd\z@\fi +\hbox to\z@{\kern\dimen@\box4\hss}\unhbox\z@}} +% \end{macrocode} +% \end{macro} +% All these accent like and cedilla like macros will be extensively used in the following +% definitions. +% \begin{macrocode} +% grave +\DeclareTextCommand{\`}{\GRencoding@name}[1]{\lift@accent{96}{#1}} +% acute +\DeclareTextCommand{\'}{\GRencoding@name}[1]{\lift@accent{39}{#1}} +% circumflex +\DeclareTextCommand{\GRcirc}{\GRencoding@name}[1]{\lift@accent{126}{#1}} +\DeclareTextCommand{\~}{\GRencoding@name}[1]{\lift@accent{126}{#1}} +% \end{macrocode} +% For the diaeresis we need to put an invisible character (|v| in the LGR encoded CB fonts) +% in order to avoid any ligature with an implied end of word (boundarychar) that turns +% the diaeresis into an apostrophe. +% \begin{macrocode} +% diaeresis +\DeclareTextCommand{\"}{\GRencoding@name}[1]{\lift@accent{34v}{#1}} +% breve +\DeclareTextCommand{\u}{\GRencoding@name}[1]{\lift@accent{30}{#1}} +% \end{macrocode} +% Besides the normal |\u| command for setting a breve command, another ``big breve'' +% is required by philologists, who need to mark a diphthong, or in general two letters; +% the macro |\U| does the job, but it is the typesetter's responsibility to input +% the macro argument as made of two letters (possibly with their own accents) +% \begin{macrocode} +\DeclareTextCommand{\U}{\GRencoding@name}[1]{\lift@accent{151}{#1}} +% macron +\DeclareTextCommand{\=}{\GRencoding@name}[1]{\lift@accent{31}{#1}} +% rough +\DeclareTextCommand{\r}{\GRencoding@name}[1]{\lift@accent{60}{#1}} +% smooth +\DeclareTextCommand{\s}{\GRencoding@name}[1]{\lift@accent{62}{#1}} +% acute+diaeresis +\DeclareTextCommand{\Ad}{\GRencoding@name}[1]{\lift@accent{35}{#1}} +% grave+diaeresis +\DeclareTextCommand{\Gd}{\GRencoding@name}[1]{\lift@accent{36}{#1}} +% circumflex+diaeresis +\DeclareTextCommand{\Cd}{\GRencoding@name}[1]{\lift@accent{32}{#1}} +% acute+rough +\DeclareTextCommand{\Ar}{\GRencoding@name}[1]{\lift@accent{86}{#1}} +% grave+rough +\DeclareTextCommand{\Gr}{\GRencoding@name}[1]{\lift@accent{67}{#1}} +% circumflex+rough +\DeclareTextCommand{\Cr}{\GRencoding@name}[1]{\lift@accent{64}{#1}} +% acute+smooth +\DeclareTextCommand{\As}{\GRencoding@name}[1]{\lift@accent{94}{#1}} +% grave+smooth +\DeclareTextCommand{\Gs}{\GRencoding@name}[1]{\lift@accent{95}{#1}} +% circumflex+smooth +\DeclareTextCommand{\Cs}{\GRencoding@name}[1]{\lift@accent{92}{#1}} +% \end{macrocode} +% Most of the above accent commands are used again in order to tie +% a text symbol meaning to certain combinations, that is when they receive as argument +% a vowel whose accented glyph is present in the font; in this way in order to type +% ``alpha with rough breath, acute accent and iota subscript'' you can type \verb"<'a|", +% or \verb"\Ar{a}|" or |\arai|; the advantage of using the first notation is its +% short string; the advantage of the second is that it does not break kerning +% commands with a preceeding letter; the advantage of the third is that it +% does not break any kerning either before or after. With the Lipsian font +% this trick is particularly useful for any sequence of alpha and upsilon each +% one with its own accents and/or diaresis. +% +% In Greek the regular cedilla is meaningless, so that |\c| may be redefined +% as a semivowel command; at the same time the typesetter might be more +% comfortable if he could use always the same, although longer, macro for +% marking a vowel as a semivowel one; therefore |\c| plays the same role +% in Greek as |\semiv|. +% \begin{macrocode} +% cap cedilla +\DeclareTextCommand{\c}{\GRencoding@name}[1]{\cap@cedilla{#1}} +\DeclareTextCommand{\semiv}{\GRencoding@name}[1]{\cap@cedilla{#1}} +\DeclareTextCommand{\semiv}{OT1}[1]{\cap@cedilla{#1}} +\DeclareTextCommand{\semiv}{T1}[1]{\cap@cedilla{#1}} +% ring cedilla +\DeclareTextCommand{\ring}{\GRencoding@name}[1]{\ring@cedilla{#1}} +\DeclareTextCommand{\ring}{OT1}[1]{\ring@cedilla{#1}} +\DeclareTextCommand{\ring}{T1}[1]{\ring@cedilla{#1}} +% dot cedilla +\DeclareTextCommand{\Dot}{\GRencoding@name}[1]{\dot@cedilla{#1}} +\DeclareTextCommand{\Dot}{OT1}[1]{\dot@cedilla{#1}} +\DeclareTextCommand{\Dot}{T1}[1]{\dot@cedilla{#1}} +% tie cedilla +\DeclareTextCommand{\ut}{\GRencoding@name}[1]{\tie@cedilla{#1}} +\DeclareTextCommand{\ut}{OT1}[1]{\tie@cedilla{#1}} +\DeclareTextCommand{\ut}{T1}[1]{\tie@cedilla{#1}} +% +% Acute breve +\DeclareTextCommand{\Ab}{\GRencoding@name}[1]% + {\LIFT@accent{39}{-.15ex}{\lift@accent{30}{#1}}} +% Grave breve +\DeclareTextCommand{\Gb}{\GRencoding@name}[1]% + {\LIFT@accent{96}{-.15ex}{\lift@accent{30}{#1}}} +% Acute rough breve +\DeclareTextCommand{\Arb}{\GRencoding@name}[1]% + {\LIFT@accent{86}{-.15ex}{\lift@accent{30}{#1}}} +% Grave rough breve +\DeclareTextCommand{\Grb}{\GRencoding@name}[1]% + {\LIFT@accent{67}{-.15ex}{\lift@accent{30}{#1}}} +% Acute smooth breve +\DeclareTextCommand{\Asb}{\GRencoding@name}[1]% + {\LIFT@accent{94}{-.15ex}{\lift@accent{30}{#1}}} +% Grave smooth breve +\DeclareTextCommand{\Gsb}{\GRencoding@name}[1]% + {\LIFT@accent{95}{-.15ex}{\lift@accent{30}{#1}}} +% +% Acute macron +\DeclareTextCommand{\Am}{\GRencoding@name}[1]% + {\Lift@accent{39}{\lift@accent{31}{#1}}} +% Grave macron +\DeclareTextCommand{\Gm}{\GRencoding@name}[1]% + {\Lift@accent{96}{\lift@accent{31}{#1}}} +% Circumflex macron +\DeclareTextCommand{\Cm}{\GRencoding@name}[1]% + {\Lift@accent{126}{\lift@accent{31}{#1}}} +% Acute rough macron +\DeclareTextCommand{\Arm}{\GRencoding@name}[1]% + {\Lift@accent{86}{\lift@accent{31}{#1}}} +% Grave rough macron +\DeclareTextCommand{\Grm}{\GRencoding@name}[1]% + {\Lift@accent{67}{\lift@accent{31}{#1}}} +% Circumflex rough macron +\DeclareTextCommand{\Crm}{\GRencoding@name}[1]% + {\Lift@accent{64}{\lift@accent{31}{#1}}} +% Acute smooth macron +\DeclareTextCommand{\Asm}{\GRencoding@name}[1]% + {\Lift@accent{94}{\lift@accent{31}{#1}}} +% Grave smooth macron +\DeclareTextCommand{\Gsm}{\GRencoding@name}[1]% + {\Lift@accent{95}{\lift@accent{31}{#1}}} +% Circumflex smooth macron +\DeclareTextCommand{\Csm}{\GRencoding@name}[1]% + {\Lift@accent{92}{\lift@accent{31}{#1}}} +% smooth macron +\DeclareTextCommand{\Sm}{\GRencoding@name}[1]% + {\Lift@accent{62}{\lift@accent{31}{#1}}} +% rough macron +\DeclareTextCommand{\Rm}{\GRencoding@name}[1]% + {\Lift@accent{60}{\lift@accent{31}{#1}}} +% breve and dieresis +\DeclareTextCommand{\bd}{\GRencoding@name}[1]% + {\LIFT@accent{30}{-.1ex}{\lift@accent{34v}{#1}}} +% +% iota subscript +\DeclareTextCommand{\iS}{\GRencoding@name}[1] + {\ooalign{#1\crcr\hidewidth\char124\hidewidth}} +% \end{macrocode} +% +% \begin{macro}{\d} The |\d| macro must be made available also with the Greek encoding +% \begin{macrocode} +\DeclareTextCommand{\d}{\GRencoding@name}[1]% + {\leavevmode\bgroup\o@lign{\relax#1\crcr + \hidewidth\sh@ft{10}.\hidewidth}\egroup} +% \end{macrocode} +% \end{macro} +% +% Some other philologist diacritical marks are needed. +% \begin {macro}{\Open} The |\Open| macro sets a special sign under a letter in order +% to mark it with an open pronunciation. +% \begin{macrocode} +\DeclareRobustCommand{\Open}[1]{\leavevmode +{\setbox4\hbox{\raise-.33ex\hbox{\metricsfont\char14}}% +\dimen@-.5\wd4 +\setbox\tw@\hbox{i}\setbox\z@\hbox{#1}% +\ifx\cf@encoding\GRencoding@name + \advance\dimen@ .5\wd\z@ + \setbox\tw@\hbox{h}\ifdim\wd\z@=\wd\tw@\advance\dimen@-.13\wd\z@\fi +\else + \ifdim\wd\z@>\wd\tw@\advance\dimen@ .55\wd\z@ + \else\advance\dimen@ .5\wd\tw@\fi +\fi +\setbox\tw@\hbox{o}\ifdim\wd\z@=\wd\tw@\advance\dimen@-.05\wd\z@\fi +\hbox to\z@{\kern\dimen@\box4\hss}\unhbox\z@}} +% \end{macrocode} +% \end{macro} +% \begin {macro}{\nasal} The macro |\nasal| marks a letter for a nasal pronunciation. +% \begin{macrocode} +\DeclareRobustCommand{\nasal}[1]{\leavevmode +{\setbox4\hbox{\raise-1.7ex\hbox{\GEcq}}% +\dimen@-.5\wd4 +\setbox\tw@\hbox{i}\setbox\z@\hbox{#1}% +\ifx\cf@encoding\GRencoding@name + \advance\dimen@ .5\wd\z@ + \setbox\tw@\hbox{h}\ifdim\wd\z@=\wd\tw@\advance\dimen@-.13\wd\z@\fi +\else + \ifdim\wd\z@>\wd\tw@\advance\dimen@ .55\wd\z@ + \else\advance\dimen@ .5\wd\tw@\fi +\fi +\setbox\tw@\hbox{o}\ifdim\wd\z@=\wd\tw@\advance\dimen@-.05\wd\z@\fi +\hbox to\z@{\kern\dimen@\box4\hss}\unhbox\z@}} +% \end{macrocode} +% \end{macro} +%\begin {macro}{\tenaspir} Similarly |\tenaspir| marks a ``tenuis aspiratio'' +% \begin{macrocode} +\DeclareRobustCommand{\tenaspir}[1]{#1\/% + {\fontencoding{\GRencoding@name}\selectfont<v}} +% \end{macrocode} +% \end{macro} +%\begin{macro}{\palat} |\palat| marks a palatal pronunciation of some consonants. +% \begin{macrocode} +\DeclareRobustCommand{\palat}[1]{#1{% + \expandafter\fontencoding\expandafter{\GRencoding@name}\selectfont + \anwtonos}} +% \end{macrocode} +%\end{macro} +% +% With the help of some of the previous macros some new commands get defined so as to +% use a simple more or less mnemonic macro instead of having the typesetter type in +% nested macros; these macros are valid only in the Greek and Latin encodings. +% \begin{macrocode} +% dot and breve +\DeclareTextCommand{\Ud}{\GRencoding@name}[1]{\d{\u{#1}}} +% dot and macron +\DeclareTextCommand{\md}{\GRencoding@name}[1]{\d{\={#1}}} +% open and breve +\DeclareTextCommand{\UO}{\GRencoding@name}[1]{\Open{\u{#1}}} +% open and macron +\DeclareTextCommand{\mO}{\GRencoding@name}[1]{\Open{\={#1}}} +% +\DeclareTextCommand{\Ud}{T1}[1]{\d{\u{#1}}} +\DeclareTextCommand{\md}{T1}[1]{\d{\={#1}}} +\DeclareTextCommand{\UO}{T1}[1]{\Open{\u{#1}}} +\DeclareTextCommand{\mO}{T1}[1]{\Open{\={#1}}} +% +\DeclareTextCommand{\Ud}{OT1}[1]{\d{\u{#1}}} +\DeclareTextCommand{\md}{OT1}[1]{\d{\={#1}}} +\DeclareTextCommand{\UO}{OT1}[1]{\Open{\u{#1}}} +\DeclareTextCommand{\mO}{OT1}[1]{\Open{\={#1}}} +% \end{macrocode} +% +% \begin{macro}{\greekquoteleft} +%\begin{macro}{\greekquoteleft} +%\begin{macro}{\textcompwordmark} +%\begin{macro}{\textemdash} +%\begin{macro}{emdash} +%\begin{macro}{\textendash} +% Several macros are traditionally defined for every encoding; we do not make exceptions. +% Actually all the symbols defined here can be obtained with the regular CB font ligatures +% so the macros are sort of superfluous. Nevertheless, in case any of the component symbols +% is made active and defined to perform something different, these macros can overcome +% the difficulty of producing the ligated glyphs. Even the |\textcompwordmark| macro, +% although the compound word mark is sort of unusual, could have been omitted, because +% with a Latin keyboard this symbol gets input by pressing the ``v'' key (``v'' stands +% for ``void''); all the hyphenation pattern files for the Greek language recognize +% ``v'' as a letter, an invisible letter, that breaks any ligature, that hides the end +% of the word, that allows hyphenation (if the rest of the word is taken as a +% \emph{word} by \TeX\ itself, which does not happen all the time!). +% \begin{macrocode} +\DeclareTextSymbol{\greekquoteleft}{\GRencoding@name}{123} +\DeclareTextSymbol{\greekquoteright}{\GRencoding@name}{125} +\DeclareTextSymbol{\textcompwordmark}{\GRencoding@name}{118} +\DeclareTextSymbol{\textemdash}{\GRencoding@name}{127} +\let\emdash\textemdash +\DeclareTextSymbol{\textendash}{\GRencoding@name}{0} +% \end{macrocode} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% +%\begin{macro}{\stigma} +%\begin{macro}{\varstigma} +%\begin{macro}{\koppa} +%\begin{macro}{\coppa} +%\begin{macro}{\varkoppa} +%\begin{macro}{\sampi} +%\begin{macro}{\Coppa} +%\begin{macro}{\Stigma} +%\begin{macro}{\Sampi} +%\begin{macro}{\Euro} +%\begin{macro}{\permill} Some other Greek symbols are defined; some deal with the +% lowercase and upper case Milesian numerals, that are not accessible in the +% font matrix with a normal keyboard stroke, and some deal with the Euro symbol and +% the permill symbol, that are unlikely to be used in a philological text, +% but, who knows\dots +% \begin{macrocode} +\DeclareTextSymbol{\stigma}{\GRencoding@name}{006} +\DeclareTextSymbol{\varstigma}{\GRencoding@name}{007} +\DeclareTextSymbol{\koppa}{\GRencoding@name}{18} +\DeclareTextSymbol{\varkoppa}{\GRencoding@name}{19} +\let\coppa\varkoppa +\DeclareTextSymbol{\sampi}{\GRencoding@name}{27} +\DeclareTextSymbol{\Coppa}{\GRencoding@name}{21}\let\Koppa\Coppa +\DeclareTextSymbol{\Stigma}{\GRencoding@name}{22} +\DeclareTextSymbol{\Sampi}{\GRencoding@name}{23} +\DeclareTextSymbol{\Euro}{\GRencoding@name}{24} +\DeclareTextSymbol{\permill}{\GRencoding@name}{25} +% \end{macrocode} +%\end{macro} +%\end{macro} +%\end{macro} +%\end{macro} +%\end{macro} +%\end{macro} +%\end{macro} +%\end{macro} +%\end{macro} +%\end{macro} +%\end{macro} +%\begin{macro}{\textdollar} +%\begin{macro}{\textsection} +%\begin{macro}{\textsterling} +%\begin{macro}{\textunderscore} +%\begin{macro}{\textvisiblespace} More important, although unlikely to be found in +% a philological text, is the question of standard \LaTeX\ commands that are defined +% with reference to some encoding; if Greek text is being typeset, the Greek encoding +% is being used and such symbols would not be available any more; \LaTeX would issue +% warning messages complaining for their absence. Therefore we redefined them also +% for the Greek encoding. +% \begin{macrocode} +\DeclareTextCommand{\textdollar}{\GRencoding@name}% + {{\fontencoding{T1}\selectfont\char36}} +\DeclareTextCommand{\textsection}{\GRencoding@name}% + {{\fontencoding{T1}\selectfont\char159}} +\DeclareTextCommand{\textsterling}{\GRencoding@name}% + {{\fontencoding{T1}\selectfont\char191}} +\DeclareTextCommand{\textunderscore}{\GRencoding@name}% + {{\fontencoding{T1}\selectfont\char95}} +\DeclareTextCommand{\textvisiblespace}{\GRencoding@name}% + {{\fontencoding{T1}\selectfont\char32}} +% \end{macrocode} +%\end{macro} +%\end{macro} +%\end{macro} +%\end{macro} +%\end{macro} +% +% Now come the dozens of macros that allow to access Greek accented vowels (plus rho with +% rough and smooth breaths) with macros instead of ligatures; such macros allow the +% kerning information to be used by \TeX, while the ligature mechanism would sometimes +% impeach the use of such kerning information. Notice that the same glyphs are often accessed +% with a ``text symbol'' or a ``text composite symbol''; as explained above the opportunity +% of using either one derives from the necessity of maintaining the kerning mechanism embedded in +% the font; if the CB fonts had a postfixed accent notation, instead of a prefixed one, none of +% these macros would be necessary (probably\dots!), but there would be other inconveniences. +% \begin{macrocode} +\DeclareTextSymbol{\ag}{\GRencoding@name}{128} +\DeclareTextComposite{\`}{\GRencoding@name}{a}{128} +\DeclareTextSymbol{\ar}{\GRencoding@name}{129} +\DeclareTextComposite{\r}{\GRencoding@name}{a}{129} +\DeclareTextSymbol{\as}{\GRencoding@name}{130} +\DeclareTextComposite{\s}{\GRencoding@name}{a}{130} +\DeclareTextSymbol{\aa}{\GRencoding@name}{136} +\DeclareTextComposite{\'}{\GRencoding@name}{a}{136} +\DeclareTextSymbol{\ac}{\GRencoding@name}{144} +\DeclareTextComposite{\~}{\GRencoding@name}{a}{144} +\DeclareTextSymbol{\ai}{\GRencoding@name}{248} +\DeclareTextSymbol{\aai}{\GRencoding@name}{140} +\DeclareTextSymbol{\aci}{\GRencoding@name}{148} +\DeclareTextSymbol{\agi}{\GRencoding@name}{132} +\DeclareTextSymbol{\ara}{\GRencoding@name}{137} +\DeclareTextComposite{\Ar}{\GRencoding@name}{a}{137} +\DeclareTextSymbol{\arc}{\GRencoding@name}{145} +\DeclareTextComposite{\Cr}{\GRencoding@name}{a}{145} +\DeclareTextSymbol{\arg}{\GRencoding@name}{131} +\DeclareTextComposite{\Gr}{\GRencoding@name}{a}{131} +\DeclareTextSymbol{\ari}{\GRencoding@name}{133} +\DeclareTextSymbol{\asa}{\GRencoding@name}{138} +\DeclareTextComposite{\As}{\GRencoding@name}{a}{138} +\DeclareTextSymbol{\asc}{\GRencoding@name}{146} +\DeclareTextComposite{\Cs}{\GRencoding@name}{a}{146} +\DeclareTextSymbol{\asg}{\GRencoding@name}{139} +\DeclareTextComposite{\Gs}{\GRencoding@name}{a}{139} +\DeclareTextSymbol{\asi}{\GRencoding@name}{134} +\DeclareTextSymbol{\argi}{\GRencoding@name}{135} +\DeclareTextSymbol{\arai}{\GRencoding@name}{141} +\DeclareTextSymbol{\arci}{\GRencoding@name}{149} +\DeclareTextSymbol{\asai}{\GRencoding@name}{142} +\DeclareTextSymbol{\asgi}{\GRencoding@name}{143} +\DeclareTextSymbol{\asci}{\GRencoding@name}{150} +\DeclareTextSymbol{\hg}{\GRencoding@name}{152} +\DeclareTextComposite{\`}{\GRencoding@name}{h}{152} +\DeclareTextSymbol{\hr}{\GRencoding@name}{153} +\DeclareTextComposite{\r}{\GRencoding@name}{h}{153} +\DeclareTextSymbol{\hs}{\GRencoding@name}{154} +\DeclareTextComposite{\s}{\GRencoding@name}{h}{154} +\DeclareTextSymbol{\hrg}{\GRencoding@name}{163} +\DeclareTextComposite{\Gr}{\GRencoding@name}{h}{163} +\DeclareTextSymbol{\hgi}{\GRencoding@name}{156} +\DeclareTextSymbol{\hri}{\GRencoding@name}{157} +\DeclareTextSymbol{\hsi}{\GRencoding@name}{158} +\DeclareTextSymbol{\hrgi}{\GRencoding@name}{167} +\DeclareTextSymbol{\ha}{\GRencoding@name}{160} +\DeclareTextComposite{\'}{\GRencoding@name}{h}{160} +\DeclareTextSymbol{\hra}{\GRencoding@name}{161} +\DeclareTextComposite{\Ar}{\GRencoding@name}{h}{161} +\DeclareTextSymbol{\hsa}{\GRencoding@name}{162} +\DeclareTextComposite{\As}{\GRencoding@name}{h}{162} +\DeclareTextSymbol{\hsg}{\GRencoding@name}{171} +\DeclareTextComposite{\Gs}{\GRencoding@name}{h}{171} +\DeclareTextSymbol{\hai}{\GRencoding@name}{164} +\DeclareTextSymbol{\hrai}{\GRencoding@name}{165} +\DeclareTextSymbol{\hsai}{\GRencoding@name}{166} +\DeclareTextSymbol{\hsgi}{\GRencoding@name}{175} +\DeclareTextSymbol{\hc}{\GRencoding@name}{168} +\DeclareTextComposite{\~}{\GRencoding@name}{h}{168} +\DeclareTextSymbol{\hrc}{\GRencoding@name}{169} +\DeclareTextComposite{\Cr}{\GRencoding@name}{h}{169} +\DeclareTextSymbol{\hsc}{\GRencoding@name}{170} +\DeclareTextComposite{\Cs}{\GRencoding@name}{h}{170} +\DeclareTextSymbol{\hci}{\GRencoding@name}{172} +\DeclareTextSymbol{\hrci}{\GRencoding@name}{173} +\DeclareTextSymbol{\hsci}{\GRencoding@name}{174} +\DeclareTextSymbol{\hi}{\GRencoding@name}{249} +\DeclareTextSymbol{\wg}{\GRencoding@name}{176} +\DeclareTextComposite{\`}{\GRencoding@name}{w}{176} +\DeclareTextSymbol{\wr}{\GRencoding@name}{177} +\DeclareTextComposite{\r}{\GRencoding@name}{w}{177} +\DeclareTextSymbol{\ws}{\GRencoding@name}{178} +\DeclareTextComposite{\s}{\GRencoding@name}{w}{178} +\DeclareTextSymbol{\wrg}{\GRencoding@name}{179} +\DeclareTextComposite{\Gr}{\GRencoding@name}{w}{179} +\DeclareTextSymbol{\wgi}{\GRencoding@name}{180} +\DeclareTextSymbol{\wri}{\GRencoding@name}{181} +\DeclareTextSymbol{\wsi}{\GRencoding@name}{182} +\DeclareTextSymbol{\wrgi}{\GRencoding@name}{183} +\DeclareTextSymbol{\wa}{\GRencoding@name}{184} +\DeclareTextComposite{\'}{\GRencoding@name}{w}{184} +\DeclareTextSymbol{\wra}{\GRencoding@name}{185} +\DeclareTextComposite{\Ar}{\GRencoding@name}{w}{185} +\DeclareTextSymbol{\wsa}{\GRencoding@name}{186} +\DeclareTextComposite{\As}{\GRencoding@name}{w}{186} +\DeclareTextSymbol{\wsg}{\GRencoding@name}{187} +\DeclareTextComposite{\Gs}{\GRencoding@name}{w}{187} +\DeclareTextSymbol{\wai}{\GRencoding@name}{188} +\DeclareTextSymbol{\wrai}{\GRencoding@name}{189} +\DeclareTextSymbol{\wsai}{\GRencoding@name}{190} +\DeclareTextSymbol{\wsgi}{\GRencoding@name}{191} +\DeclareTextSymbol{\wc}{\GRencoding@name}{192} +\DeclareTextComposite{\~}{\GRencoding@name}{w}{192} +\DeclareTextSymbol{\wrc}{\GRencoding@name}{193} +\DeclareTextComposite{\Cr}{\GRencoding@name}{w}{193} +\DeclareTextSymbol{\wsc}{\GRencoding@name}{194} +\DeclareTextComposite{\Cs}{\GRencoding@name}{w}{194} +\DeclareTextSymbol{\wci}{\GRencoding@name}{196} +\DeclareTextSymbol{\wrci}{\GRencoding@name}{197} +\DeclareTextSymbol{\wsci}{\GRencoding@name}{198} +\DeclareTextSymbol{\wi}{\GRencoding@name}{250} +\DeclareTextSymbol{\ig}{\GRencoding@name}{200} +\DeclareTextComposite{\`}{\GRencoding@name}{i}{200} +\DeclareTextSymbol{\ir}{\GRencoding@name}{201} +\DeclareTextComposite{\r}{\GRencoding@name}{i}{201} +\DeclareTextSymbol{\is}{\GRencoding@name}{202} +\DeclareTextComposite{\s}{\GRencoding@name}{i}{202} +\DeclareTextSymbol{\irg}{\GRencoding@name}{203} +\DeclareTextComposite{\Gr}{\GRencoding@name}{i}{203} +\DeclareTextSymbol{\ia}{\GRencoding@name}{208} +\DeclareTextComposite{\'}{\GRencoding@name}{i}{208} +\DeclareTextSymbol{\ira}{\GRencoding@name}{209} +\DeclareTextComposite{\Ar}{\GRencoding@name}{i}{209} +\DeclareTextSymbol{\isa}{\GRencoding@name}{210} +\DeclareTextComposite{\As}{\GRencoding@name}{i}{210} +\DeclareTextSymbol{\isg}{\GRencoding@name}{211} +\DeclareTextComposite{\Gs}{\GRencoding@name}{i}{211} +\DeclareTextSymbol{\ic}{\GRencoding@name}{216} +\DeclareTextComposite{\~}{\GRencoding@name}{i}{216} +\DeclareTextSymbol{\irc}{\GRencoding@name}{217} +\DeclareTextComposite{\Cr}{\GRencoding@name}{i}{217} +\DeclareTextSymbol{\isc}{\GRencoding@name}{218} +\DeclareTextComposite{\Cs}{\GRencoding@name}{i}{218} +\DeclareTextSymbol{\id}{\GRencoding@name}{240} +\DeclareTextComposite{\"}{\GRencoding@name}{i}{240} +\DeclareTextSymbol{\idg}{\GRencoding@name}{241} +\DeclareTextComposite{\Gd}{\GRencoding@name}{i}{241} +\DeclareTextSymbol{\ida}{\GRencoding@name}{242} +\DeclareTextComposite{\Ad}{\GRencoding@name}{i}{242} +\DeclareTextSymbol{\idc}{\GRencoding@name}{243} +\DeclareTextComposite{\Cd}{\GRencoding@name}{i}{243} +\DeclareTextSymbol{\ug}{\GRencoding@name}{204} +\DeclareTextComposite{\`}{\GRencoding@name}{u}{204} +\DeclareTextSymbol{\ur}{\GRencoding@name}{205} +\DeclareTextComposite{\r}{\GRencoding@name}{u}{205} +\DeclareTextSymbol{\us}{\GRencoding@name}{206} +\DeclareTextComposite{\s}{\GRencoding@name}{u}{206} +\DeclareTextSymbol{\urg}{\GRencoding@name}{207} +\DeclareTextComposite{\Gr}{\GRencoding@name}{u}{207} +\DeclareTextSymbol{\ua}{\GRencoding@name}{212} +\DeclareTextComposite{\'}{\GRencoding@name}{u}{212} +\DeclareTextSymbol{\ura}{\GRencoding@name}{213} +\DeclareTextComposite{\Ar}{\GRencoding@name}{u}{213} +\DeclareTextSymbol{\usa}{\GRencoding@name}{214} +\DeclareTextComposite{\As}{\GRencoding@name}{u}{214} +\DeclareTextSymbol{\usg}{\GRencoding@name}{215} +\DeclareTextComposite{\Gs}{\GRencoding@name}{u}{215} +\DeclareTextSymbol{\uc}{\GRencoding@name}{220} +\DeclareTextComposite{\~}{\GRencoding@name}{u}{220} +\DeclareTextSymbol{\urc}{\GRencoding@name}{221} +\DeclareTextComposite{\Cr}{\GRencoding@name}{u}{221} +\DeclareTextSymbol{\usc}{\GRencoding@name}{222} +\DeclareTextComposite{\Cs}{\GRencoding@name}{u}{222} +\DeclareTextSymbol{\ud}{\GRencoding@name}{244} +\DeclareTextComposite{\"}{\GRencoding@name}{u}{244} +\DeclareTextSymbol{\udg}{\GRencoding@name}{245} +\DeclareTextComposite{\Gd}{\GRencoding@name}{u}{245} +\DeclareTextSymbol{\uda}{\GRencoding@name}{246} +\DeclareTextComposite{\Ad}{\GRencoding@name}{u}{246} +\DeclareTextSymbol{\udc}{\GRencoding@name}{247} +\DeclareTextComposite{\Cd}{\GRencoding@name}{u}{247} +\DeclareTextSymbol{\eg}{\GRencoding@name}{224} +\DeclareTextComposite{\`}{\GRencoding@name}{e}{224} +\DeclareTextSymbol{\er}{\GRencoding@name}{225} +\DeclareTextComposite{\r}{\GRencoding@name}{e}{225} +\DeclareTextSymbol{\es}{\GRencoding@name}{226} +\DeclareTextComposite{\s}{\GRencoding@name}{e}{226} +\DeclareTextSymbol{\erg}{\GRencoding@name}{227} +\DeclareTextComposite{\Gr}{\GRencoding@name}{e}{227} +\DeclareTextSymbol{\ea}{\GRencoding@name}{232} +\DeclareTextComposite{\'}{\GRencoding@name}{e}{232} +\DeclareTextSymbol{\era}{\GRencoding@name}{233} +\DeclareTextComposite{\Ar}{\GRencoding@name}{e}{233} +\DeclareTextSymbol{\esa}{\GRencoding@name}{234} +\DeclareTextComposite{\As}{\GRencoding@name}{e}{234} +\DeclareTextSymbol{\esg}{\GRencoding@name}{235} +\DeclareTextComposite{\Gs}{\GRencoding@name}{e}{235} +\DeclareTextSymbol{\oR}{\GRencoding@name}{229} +\DeclareTextComposite{\r}{\GRencoding@name}{o}{229} +\DeclareTextSymbol{\og}{\GRencoding@name}{228} +\DeclareTextComposite{\`}{\GRencoding@name}{o}{228} +\DeclareTextSymbol{\os}{\GRencoding@name}{230} +\DeclareTextComposite{\s}{\GRencoding@name}{o}{230} +\DeclareTextSymbol{\org}{\GRencoding@name}{231} +\DeclareTextComposite{\Gr}{\GRencoding@name}{o}{231} +\DeclareTextSymbol{\oa}{\GRencoding@name}{236} +\DeclareTextComposite{\'}{\GRencoding@name}{o}{236} +\DeclareTextSymbol{\ora}{\GRencoding@name}{237} +\DeclareTextComposite{\Ar}{\GRencoding@name}{o}{237} +\DeclareTextSymbol{\osa}{\GRencoding@name}{238} +\DeclareTextComposite{\As}{\GRencoding@name}{o}{238} +\DeclareTextSymbol{\osg}{\GRencoding@name}{239} +\DeclareTextComposite{\Gs}{\GRencoding@name}{o}{239} +\DeclareTextSymbol{\rr}{\GRencoding@name}{251} +\DeclareTextComposite{\r}{\GRencoding@name}{r}{251} +\DeclareTextSymbol{\rs}{\GRencoding@name}{252} +\DeclareTextComposite{\s}{\GRencoding@name}{r}{252} +\DeclareTextSymbol{\Id}{\GRencoding@name}{219} +\DeclareTextComposite{\"}{\GRencoding@name}{I}{219} +\DeclareTextSymbol{\Ud}{\GRencoding@name}{223} +\DeclareTextComposite{\"}{\GRencoding@name}{U}{223} +% +% \end{macrocode} +% +% Next come some short macros for inserting special symbols that philologists +% use quite often in Greek. +%\begin{macro}{\h} Macro |\h| is used to insert a Latin ``h'' while typesetting in Greek. +%\begin{macro}{\q} Macro |\q| is used to insert a Latin ``q'' while typesetting in Greek. +%\begin{macro}{\yod}\begin{macro}{\iod} Macros |\yod| and |\iod| are used to insert a +% Latin ``j'' while typesetting in Greek; the control sequence |\jod| was avoided in order +% to reduce the possibility of typing |\jot| which is a \TeX\ internal dimension. +% \begin{macrocode} +\DeclareTextCommand{\h}{\GRencoding@name}% + {{\fontencoding{OT1}\selectfont h}} +\DeclareTextCommand{\q}{\GRencoding@name}% + {{\fontencoding{OT1}\selectfont q}} +\DeclareTextCommand{\yod}{\GRencoding@name}% + {{\fontencoding{OT1}\selectfont j}}% +\let\iod\yod +% \end{macrocode} +%\end{macro} +%\end{macro} +%\end{macro} +%\end{macro} +%\begin {macro}{\f} +%\begin {macro}{\F} +%\begin {macro}{\digamma} +%\begin {macro}{\Digamma} +% At the same time it was believed that for inserting lower +% and upper case ``digamma'' it was preferable to use short macros and to avoid +% the dilemma between the |\ddigamma| and the |\digamma| macros, the former being the +% one defined in the \texttt{greek} extension to \babel, the latter being +% a standard mathematical symbol; initially I believed that philologists do +% not use mathematical symbols so we made |\digamma| an alias for |\f|; afterwards I found out that +% mathematicians, physicists, engineers, \dots\ use the \textsf{teubner.sty} package and that the |\digamma| is a symbol +% already defined in the package \textsf{amssymb.sty}; therefore i made a conditional creation of this alias. +% \begin{macrocode} +\DeclareTextSymbol{\f}{\GRencoding@name}{147} +\@ifpackageloaded{amssymb}{\let\AMSdigamma\digamma\def\digamma{\textormath{\f}{\AMSdigamma}}}{\let\digamma\f} +\DeclareTextSymbol{\F}{\GRencoding@name}{195}\let\Digamma\F +% \end{macrocode} +%\end{macro} +%\end{macro} +%\end{macro} +%\end{macro} +% +%\begin {macro}{\fLow} +%\begin {macro}{\fHigh} +% The digamma glyphs set forth another question because, +% according to Paolo Ciacchi, a different glyph should be used for typesetting text +% compared with the one that is used as a variant in Milesian numerals in place of the +% standard stigma symbol. +% By means of macros |\fLow| or |\fHigh| it is possible to chose the raised or the lowered +% digamma glyphs; Greek numerals always use the lowered one, while when text is being +% typeset the typesetter can chose the version he likes best. +% \begin{macrocode} +\DeclareRobustCommand{\fLow}% + {{\setbox\z@\hbox{\f}\dimen@\ht\z@ + \advance\dimen@-1ex\raise-\dimen@\hbox{\box\z@}}} +\DeclareRobustCommand{\fHigh}% + {{\setbox\z@\hbox{\f}\dimen@\dp\z@\raise\dimen@\hbox{\box\z@}}} +% \end{macrocode} +%\end{macro} +%\end{macro} +% +%\begin{macro}{\qmark} +%\begin{macro}{\lpar} +%\begin{macro}{\rpar} +%\begin{macro}{\frapar} +% Here we start a set of miscellaneous macros. We begin with some parentheses +% that should turn out in upright shape, even if the default font is the Lipsian +% one which is oblique; its parentheses are oblique as in all oblique fonts, therefore +% we need to quietly change fonts behind the scenes. The same is true with the +% question mark that, philologically speaking, represents an uncertain element, not +% the termination of a real question; it should therefore always come out between +% parentheses and in upright shape from a Latin font. While the parenthesized +% question mark comes from the OT1 Latin upright font, the parentheses obtained with +% |\lpar| and |\rpar| are taken from the metric symbols font, as well as the +% parentheses used in the parenthesized text processed with macro |\frapar|. +% \begin{macrocode} +\DeclareRobustCommand\qmark{\hskip.16ex{\fontencoding{OT1}\upshape(?)}} +\DeclareRobustCommand\lpar{{\metricsfont(}} +\DeclareRobustCommand\rpar{{\metricsfont)}} +\DeclareRobustCommand\frapar[1]{\lpar#1\rpar} +% \end{macrocode} +%\end{macro} +%\end{macro} +%\end{macro} +%\end{macro} +% +%\begin{macro}{\ap} The apex/superscript macro |\ap| does not differ much from the plain +% standard \LaTeX\ macro |\textsuperscript|, the only difference being the italic correction +% that precedes |\textsuperscript|. +% \begin{macrocode} +\DeclareRobustCommand{\ap}[1]{\/\textsuperscript{#1}} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\Dots} +%\begin{macro}{\DOTS} +%\begin{macro}{\Dashes} +%\begin{macro}{\DASHES} +% Four macros are defined so as to insert a certain number of dots or dashes as specified +% in the optional command argument; |\Dots| and |\Dashes| fit the dots or the dashes +% pretty close together, while |\DOTS| and |\DASHES| fit them more loosely apart. +% \begin{macrocode} +\newcommand\Dots[1][1]{{\count255=#1\@whilenum\count255>\z@ + \do{\kern.4ex\d{v}\kern.4ex\advance\count255\m@ne}}} +\newcommand\DOTS[1][1]{{\count255=#1\@whilenum\count255>\z@ + \do{\kern.8ex\d{v}\kern.8ex\advance\count255\m@ne}}} +\newcommand\Dashes[1][1]{{\count255=#1\@whilenum\count255>\z@ + \do{\kern.4ex--\kern.4ex\advance\count255\m@ne}}} +\newcommand\DASHES[1][1]{{\count255=#1\@whilenum\count255>\z@ + \do{\kern.8ex--\kern.8ex\advance\count255\m@ne}}} +% \end{macrocode} +%\end{macro} +%\end{macro} +%\end{macro} +%\end{macro} +% +%\begin{macro}{\:} +%\begin{macro}{\;} +%\begin{macro}{\?} +%\begin{macro}{\MutPers} +% Greek text or poetry sometimes requires some stacked dots; here we prepared macros for +% two (|\:|), three (|\;|), and four (|\?|) stacked dots. Two stacked dots in a row indicate +% that the speaker of a drama or comedy has changed (\textit{mutatio personae}). For |\:| +% and |\;| it is necessary to preserve the mathematical meaning, while |\?| apparently does +% not have any previous use in standard \LaTeX. The real macros are |\tw@dots|, |\thre@dots|, +% and |\f@urdots|. +% \begin{macrocode} +\DeclareRobustCommand{\:}{\textormath{\tw@dots}{\mskip\medmuskip}} +\DeclareRobustCommand{\;}{\textormath{\thre@dots}{\mskip\thickmuskip}} +\DeclareRobustCommand{\?}{\f@urdots} +\DeclareRobustCommand{\mutpers}{\makebox[1ex]{\:\hfill\:}\space} +\let\MutPers\mutpers\let\antilabe\mutpers +\def\tw@dots{\mbox{\kern1\p@\vbox to1ex{\hbox{.}\vss\hbox{.}}}} +\def\thre@dots{\mbox{\kern1\p@\vbox to 2ex{\hbox{.}\vss + \hbox{.}\vss\hbox{.}}}} +\def\f@urdots{\mbox{\kern1\p@\vbox to 2ex{\hbox{.}\vss + \hbox{.}\vss\hbox{.}\vss\hbox{.}}}} +% \end{macrocode} +%\end{macro} +%\end{macro} +%\end{macro} +%\end{macro} +% +% \DeleteShortVerb{\|} +%\begin{macro}{\|} +% \MakeShortVerb{\|} +%\begin{macro}{\dBar} +%\begin{macro}{\tBar} +% Similarly Greek text and poetry require certain \emph{cesurae} indicated with +% vertical bars; we provided commands for one (\verb"\|"), two (|\dBar|), and +% three (|\tBar|) vertical bars. +% \begin{macrocode} +\DeclareRobustCommand{\|}{\relax\ensuremath{\mskip2mu\vert}} +\DeclareRobustCommand{\dBar}{\ensuremath{\vert\vert}} +\DeclareRobustCommand{\tBar}{\ensuremath{\vert\vert\vert}} +% \end{macrocode} +%\end{macro} +%\end{macro} +%\end{macro} +% +%\begin{macro}{\negthinspace} +%\begin{macro}{\posthinspace} +%\begin{macro}{\posthindspace} +%\begin{macro}{\,} +%\begin{macro}{\!} +% The following are mostly service macros for adjusting the spacing within macro definitions. +% Nevertheless they are available also to the typesetter, because sometimes certain glyph +% combinations require a little adjustment. Of course the typesetter will not use them +% at the very beginning, but only during proof revision, so as to introduce them only +% where really necessary. +% \begin{macrocode} +\def\negthinspace{\nobreak\hskip-0.07em} +\def\posthinspace{\nobreak\hskip0.07em} +\def\posthindspace{\nobreak\hskip0.14em} +\renewcommand{\,}{\textormath{\posthinspace}{\mskip\thinmuskip}} +\renewcommand{\!}{\textormath{\negthinspace}{\mskip-\thinmuskip}} +% \end{macrocode} +%\end{macro} +%\end{macro} +%\end{macro} +%\end{macro} +%\end{macro} +% +%\begin{macro}{\lbrk} +%\begin{macro}{\rbrk} +%\begin{macro}{\lmqi} +%\begin{macro}{\rmqi} +%\begin{macro}{\lmqs} +%\begin{macro}{\rmqs} +%\begin{macro}{\mqi} +%\begin{macro}{\mqs} +%\begin{macro}{\Ladd} +%\begin{macro}{\LLadd} +%\begin{macro}{\ladd} +%\begin{macro}{\lladd} +%\begin{macro}{\lesp} +%\begin{macro}{\ldel} +% Philologists require a certain number of special parentheses in order to +% enclose parts of text that are doubtful or that have been added although +% they are missing from the original manuscripts; even letter strings that have +% been modified under the assumption that the copyist made some error. +% Such enclosing marks include angle brackets, square brackets, upper part +% of square brackets, lower part of square brackets. Such symbols may even +% appear doubled. Most if these glyphs have been designed anew, because they +% are missing or are inadequate if they are taken from the usual CM fonts (either +% text or math fonts). Brackets for example have been designed as to be higher +% and deeper than the font total height, so as not to interfere with Greek +% accents and to accomodate for at least one level of nesting (for example square brackets +% enclosing lower part of square brackets. The single glyphs may be used directly by +% the typesetter, but we think that the commands requiring some text are fare more useful. +% |\Ladd| and its double version |\LLadd| enclose text that should be added for sure. +% |\ladd| and its double version |\lladd| enclose text that probably should be added. +% |\lesp| and its synonymous |\ldel| enclose text that should be deleted. +% |\mqi| surrounds some text with the lower part of open and closed square brackets. +% |\mqs| surrounds some text with the upper part of open and closed square brackets. +% See \texttt{teubenr-doc.pdf} for samples of such commands. +% \begin{macrocode} +\DeclareRobustCommand{\lbrk}{{\metricsfont\posthindspace[\negthinspace}} +\DeclareRobustCommand{\rbrk}{{\metricsfont]}} +\DeclareRobustCommand\lmqi{{\metricsfont!}} +\DeclareRobustCommand\rmqi{{\metricsfont:}} +\DeclareRobustCommand\lmqs{{\metricsfont?}} +\DeclareRobustCommand\rmqs{{\metricsfont;}} +\DeclareRobustCommand\mqi[1]{\posthinspace\lmqi\negthinspace + {#1\/}\rmqi}\let\mezzeq\mqi +\DeclareRobustCommand\mqs[1]{\lmqs{#1\/}\rmqs} +\DeclareRobustCommand{\Ladd}[1]{{\metricsfont<}{\!\!#1\/}% + {\metricsfont>}}% litterae certe addendae +\DeclareRobustCommand{\LLadd}[1]{{\metricsfont<\kern-.3ex<}%subst. \hskip with \kern + {\!\!#1\/}{\metricsfont>\kern-.3ex>}}% litterae certe addendae +\DeclareRobustCommand{\ladd}[1]{{\metricsfont\kern.15ex[\negthinspace}% + {#1\/}{\metricsfont]\kern-.15ex}}% litterae addendae +\DeclareRobustCommand{\lladd}[1]{{\metricsfont\kern.15ex[\kern-.3ex[% + \negthinspace}{#1\/}{\metricsfont]\kern-.3ex]% + \kern-.15ex}}% litterae addendae +\DeclareRobustCommand{\lesp}[1]% + {\mbox{$\{\kern-.20ex$#1\kern.16ex$\}$}}% litterae delendae +\let\ldel\lesp +% \end{macrocode} +%\end{macro} +%\end{macro} +%\end{macro} +%\end{macro} +%\end{macro} +%\end{macro} +%\end{macro} +%\end{macro} +%\end{macro} +%\end{macro} +%\end{macro} +%\end{macro} +%\end{macro} +%\end{macro} +% +%\begin{macro}{\itopenquotes} +%\begin{macro}{\itclosedquotes} +%\begin{macro}{\itoq} +%\begin{macro}{\itcq} The following macros allow to set Italian\slash English +% high quotes even while typing in Greek; such quotes are standard in Italian +% and in English typesetting and their commands preserve the font family shape +% and series of the surrounding font. In French typography, as well in the +% typographic traditions of other countries, different quotes are used. In that case +% the typesetter must resort to a change of language, for example returning to German, +% inputting the German quotes, then turning back to Greek. He might as well define +% his own macros, or he might clone the following definitions and change them +% according to his country typographic traditions. If he decides to modify these +% definitions he should either rename this file or he should put his redefinitions +% in a private package to be input \emph{after} \texttt{teubner.sty}. +% \begin{macrocode} +\DeclareTextCommand{\itopenquotes}{\GRencoding@name}% + {{\fontencoding{OT1}\selectfont\char92}}% +\DeclareTextCommand{\itclosedquotes}{\GRencoding@name}% + {{\fontencoding{OT1}\selectfont\char34}}% +\let\itoq\itopenquotes +\let\itcq\itclosedquotes +% \end{macrocode} +%\end{macro} +%\end{macro} +%\end{macro} +%\end{macro} +% +%\begin{macro}{\GEodq} +%\begin{macro}{\GEcdq} +%\begin{macro}{\GEdqtext} +%\begin{macro}{\GEoq} +%\begin{macro}{\GEcq} +%\begin{macro}{\GEqtext} +%\begin{macro}{\ENodq} +%\begin{macro}{\ENcdq} +%\begin{macro}{\ENdqtext} On the opposite the following German and English quotes +% are redesigned and included in the metric symbols font. Since this font is in +% one shape and one series, these quotes do not change as the outside font does, but +% remains fixed; the most useful commands are |\GEdqtext| for enclosing some text +% within German double quotes, |\GEqtext| for enclosing some text within German single +% quotes, and |\ENdqtext| for enclosing some text in English double quotes. Apparently +% while setting Greek poetry in stacked, possibly enumerated, verses German double +% or single quotes are often used, since they cannot be misunderstood with Greek +% diacritical marks. Modern Greek double quotes apparently are not appreciated by +% philologists, at least outside Greece. +% \begin{macrocode} +\newcommand\GEodq{\bgroup\futurelet\@tempA\GE@dq} +\def\GE@dq{{\metricsfont\char18}\ifx\@tempA m\posthinspace\fi\egroup} +\newcommand\GEcdq{{\metricsfont\char16}} +\newcommand\GEdqtext[1]{\GEodq\posthinspace#1\/\posthinspace\GEcdq} +\newcommand\GEoq{\bgroup\futurelet\@tempA\GE@q} +\def\GE@q{{\metricsfont\char13}\ifx\@tempA m\posthinspace\fi\egroup} +\newcommand\GEcq{{\metricsfont\char19}} +\newcommand\GEqtext[1]{\GEoq\posthinspace#1\/\posthinspace\GEcq} +\newcommand\ENodq{{\metricsfont\char16}} +\newcommand\ENcdq{{\metricsfont\char17}} +\newcommand\ENdqtext[1]{\ENodq\negthinspace#1\/\posthinspace\ENcdq} +% \end{macrocode} +%\end{macro} +%\end{macro} +%\end{macro} +%\end{macro} +%\end{macro} +%\end{macro} +%\end{macro} +%\end{macro} +%\end{macro} +% +% \begin{macro}{\LitNil} +% \begin{macro}{\litnil} The next synonymous macros indicate the \emph{littera nihil}. +% \begin{macrocode} +\DeclareRobustCommand\LitNil{\textbullet} +\let\litnil\LitNil +% \end{macrocode} +%\end{macro} +%\end{macro} +% +%\begin{macro}{\sva} +%\begin{macro}{\shva} +%\begin{macro}{\shwa} The CB fonts include also the letter ``shwa'', the glyph that +% appears as a roman ``e'' rotated 180$^\circ$ around its center. Philologists +% need it even when writing Greek. In order to make it available also when the +% Latin encodings are in force, suitable definitions have been given so that the +% suitable CB font is changed behind the scenes without any intervention by the +% typesetter. +% \begin{macrocode} +\DeclareTextSymbol{\sva}{\GRencoding@name}{26} +\DeclareTextCommand\sva{OT1}{{\expandafter\fontencoding + \expandafter{\GRencoding@name}\selectfont\sva}} +\DeclareTextCommand\sva{T1}{{\expandafter\fontencoding + \expandafter{\GRencoding@name}\selectfont\sva}} +\let\shva\sva\let\shwa\sva +% \end{macrocode} +%\end{macro} +%\end{macro} +%\end{macro} +% +%\begin{macro}{\skewstack} The |\skewstack| command stacks two arguments not one on +% top of the other, but the second argument is placed to the right and upwards relative +% to the first argument. The second argument is set in script font size. Although there are +% similarities with the |\textsuperscript| command, the exact placement of the second +% argument depends on the shape (height and depth) of both arguments. This command +% will be used for creating some philologist's symbols, but is readily available to the +% typesetter both for direct use and for writing macros defining new symbols. +% \begin{macrocode} +\DeclareRobustCommand\skewstack[2]{{% +\edef\slant@{\expandafter\numero\the\fontdimen1\font}% +\setbox\z@\hbox{#1}\dimen@\ht\z@\box\z@ +\kern-.045em\setbox\@ne\hbox{\scriptsize#2}% +\ifdim\dimen@>1.2ex\advance\dimen@-\ht\@ne\else + \dimen@1ex\advance\dimen@-.5\ht\@ne\fi +\kern\slant@\dimen@\raise\dimen@\hbox{\box\@ne}}} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\hv} +%\begin{macro}{\qw} +%\begin{macro}{\gw} +%\begin{macro}{\gusv} +%\begin{macro}{\qusv} +%\begin{macro}{\qu} Matter of fact some common Latin stacked symbols are defined here in +% terms of |\skewstack|. As it may bee seen, the second argument (the first as well, +% but here there are no examples) may in turn contain other macros for composite symbols. +% \begin{macrocode} +\DeclareRobustCommand\hv{{\fontencoding{OT1}\selectfont + \skewstack{h}{v}}} +\DeclareRobustCommand\qw{{\fontencoding{OT1}\selectfont + \skewstack{q}{w}}} +\DeclareRobustCommand\gw{{\fontencoding{OT1}\selectfont + \skewstack{g}{w}}} +\DeclareRobustCommand\gusv{{\fontencoding{OT1}\selectfont + \skewstack{g}{\semiv{u}}}} +\DeclareRobustCommand\qusv{{\fontencoding{OT1}\selectfont + \skewstack{q}{\semiv{u}}}} +\DeclareRobustCommand\qu{{\fontencoding{OT1}\selectfont + \skewstack{q}{u}}} +% \end{macrocode} +%\end{macro} +%\end{macro} +%\end{macro} +%\end{macro} +%\end{macro} +%\end{macro} +% +%\begin{macro}{\dz} Without using |\skewstack| other symbols may be defined; +% here |\dz| is just an example, where the kerning between `d' and `z' has +% been found by cut and try. With other glyphs may be other kernings +% are necessary. +% \begin{macrocode} +\DeclareRobustCommand\dz{{\fontencoding{OT1}\selectfont d\kern-.33ex z}} +% \end{macrocode} +%\end{macro} +% +% Now we come to another set of commands like the ones needed to mark the syneresis +% or the zeugma and other similar marks. +%\begin{macro}{\Utie} This first macro sets a ``smile'' symbol under a couple of +% letters. The glyph is fine but is good only for two adjacent letters, therefore +% it is necessary to have a stretchable symbol. +% \begin{macrocode} +\DeclareRobustCommand\Utie[1]{% +\mbox{\vtop{\ialign{##\crcr + \hfil#1\hfil\crcr + \noalign{\kern.3ex\nointerlineskip}% + \hfil$\smile$\hfil\crcr}}}} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\siner} +%\begin{macro}{\siniz} This is why the |\siner| and |\siniz| synonymous commands +% have been defined; in place of the ``smile'' symbol they contain a stretchable +% filler |\upfill| that behaves almost as the stretchable horizontal brace that is +% used in the definition of the \LaTeX\ commands |\underbrace| or |\overbrace|. +% \begin{macrocode} +\DeclareRobustCommand{\siner}[1]{% +\mbox{\vtop{\ialign{##\crcr + \hfil#1\hfil\crcr + \noalign{\kern.6ex\nointerlineskip}% + \upfill\crcr}}}} +\let\siniz\siner +% \end{macrocode} +%\end{macro} +%\end{macro} +%\begin{macro}{\upfill} The |\upfill| is defined as a leader, the same way as the +% corresponding \LaTeX\ stretchable horizontal brace; but as mentioned before we +% introduce a correction in case we are typesetting with pdf\LaTeX, because the +% pfb extensible math fonts, from wich the curved extremities are taken from, apparently +% do not have the actual dimension declared in the tmf files. +% \begin{macrocode} +\def\upfill{$\m@th \scriptstyle\setbox\z@\hbox{$\scriptstyle\bracelu$}% + \kern.16ex\bracelu\ifPDF\kern-.15ex\fi + \leaders\vrule \@height\ifPDF.85\fi\ht\z@ \@depth\z@\hfill + \braceru\kern.16ex$} +% \end{macrocode} +%\end{macro} +%\begin{macro}{\downfill} The down fill arc is totally similar to the up fill one, except +% for its terminating elements that change the shape of the arc from ``up'' to ``down''; we +% introduce the same correction as in |\upfill| for the same reasons. +% \begin{macrocode} +\def\downfill{$\m@th\scriptstyle\setbox\z@\hbox{$\scriptstyle\braceld$}% + \kern.16ex\braceld\ifPDF\kern-.15ex\fi + \leaders\vrule \@height\ifPDF.85\fi\ht\z@ \@depth\z@\hfill + \bracerd\kern.16ex$} +% \end{macrocode} +%\end{macro} +% With both macros we could have edited the pfb files, but this would have required +% to distribute the corrected |cmex10.pfb| file together with the bundle, causing possible users +% to mess up their map of PostScript fonts. Of course the chosen solution has the +% opposite draw back: when and if the corrected pfb files will be distributed with each +% more or less complete \TeX\ bundle, then this file will require to be corrected again. But +% this is simple because it suffices to eliminate the whole |\ifPFB| business. +% +%\begin{macro}{\zeugma} Similarly |\zeugma| puts a stretchable arc over its +% argument; it must take into account the slant of the argument font so +% as to skew the placement of the arc. +% \begin{macrocode} +\newcommand*\zeugma[1]{{\vbox{\setbox\z@\hbox{#1}\dimen@=\ht\z@ + \edef\@slant{\expandafter\numero\the\fontdimen1\font}% + \dimen\tw@=\wd\z@ + \dimen@=\@slant\dimen@\ifmetricsfont\dimen@=\z@ + \advance\dimen\tw@-.5ex\fi + \kern-.2ex\ialign{##\crcr + \hbox to\z@{\ifmetricsfont\kern.25ex\fi\kern\dimen@ + \hbox to\dimen\tw@{\hss\downfill\kern.2\dimen@\hss}\hss}\crcr + \noalign{\ifmetricsfont\kern.6ex + \else\kern.4ex\fi\nointerlineskip}% + \hfil{#1}\hfil\crcr}}}% +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\slzeugma} +%\begin{macro}{\rszeugma} Although the shape of oblique zeugma arcs cannot be +% changed depending on the width and height of the zeugma argument, in certain +% circumstances the philologists want to use oblique zeugma marks. This is why +% we defined a ``sloping zeugma arc'' |\slzeugma|, and a ``rising zeugma arc'' +% |\rszeugma| that can be used with poor results, if such arcs are superimposed +% over the ``wrong'' letters. There is nothing automatic in the choice of the +% oblique arc and is totally on the typesetter responsibility to use the +% correct command. +% \begin{macrocode} +\newcommand*\slzeugma[1]{{\leavevmode + \setbox\tw@\hbox{\metricsfont\char120}% + \setbox\z@\hbox{#1}\dimen@.5\wd\z@\advance\dimen@-.5\wd\tw@ + \edef\@slant{\expandafter\numero\the\fontdimen1\font}% + \advance\dimen@\@slant\ht\z@ + \hbox to\z@{\kern\dimen@\box\tw@\hss}\box\z@ + }% +} +\newcommand*\rszeugma[1]{{\leavevmode + \setbox\tw@\hbox{\metricsfont\char122}% + \setbox\z@\hbox{#1}\dimen@.5\wd\z@\advance\dimen@-.5\wd\tw@ + \edef\@slant{\expandafter\numero\the\fontdimen1\font}% + \advance\dimen@\@slant\ht\z@ + \hbox to\z@{\kern\dimen@\box\tw@\hss}\box\z@ + }% +} +% \end{macrocode} +%\end{macro} +%\end{macro} +% +%\begin{macro}{\nexus} +%\begin{macro}{\nesso}The same line of reasoning leads us to define two different +% commands for marking nexus relationships; since such commands are not synonymous +% we had to use the Latin and (arbitrarily) the Italian name to distinguish them. +% The difference is that |\nesso| covers the nexus with a leader made of ``Latin'' +% circumflex signs (hats), while |\nexus| covers the nexus with a stretchable trapeze. +% \begin{macrocode} +\newcommand*{\nexus}[1]{{\setbox\tw@\hbox{#1}% + \edef\slant@{\expandafter\numero\the\fontdimen1\font}% + \@tempdima=\slant@\ht\tw@\advance\@tempdima.45ex + \setbox4\hbox to\wd\tw@{\hss\nexusfill\hss} + \vbox{\ialign{##\crcr% + \kern\@tempdima\box4 + \crcr + \noalign{\kern.15ex\nointerlineskip}% + \hfil{#1}\hfil\crcr}}}} +\newcommand*\nesso[1]{{\setbox\tw@\hbox{#1}% + \edef\slant@{\expandafter\numero\the\fontdimen1\font}% + \@tempdima=\slant@\ht\tw@\advance\@tempdima.9ex + \ifdim\wd\tw@<1ex + \setbox4\hbox{\metricsfont\kern-.5ex\Hat}% + \else + \setbox4\hbox to\wd\tw@{\hss\nexfill\hss}% + \fi + \vbox{\ialign{##\crcr% + \kern\@tempdima\box4 + \crcr + \noalign{\kern.15ex\nointerlineskip}% + \hfil\box\tw@\hfil\crcr}}}} +% \end{macrocode} +%\end{macro} +%\end{macro} +%\begin{macro}{\nexfill} +%\begin {macro}{\nexusfill}|\nexfill| is a leader made up of ``Latin'' circumflex +% signs; since the sign has a special meaning in mathematics, the definition +% of |\nexfill| requires the temporary change of the circumflex catcode. The +% command |\nexus|, on the opposite, requires another leader definition that +% contains the oblique sides of the trapeze. The latter were defined as glyphs +% in the Greek fonts. |\nexus| is supposed to be used \emph{only} while +% typesetting Greek text or poetry. +% \begin{macrocode} +{\catcode`\^=12\relax\global\chardef\Hat`\^ +\gdef\nexfill{{\metricsfont\leaders\hbox{^}\hfill}}} +% +\newdimen\Uunit +\def\nexusfill{\setbox\z@\hbox{\char16}% + \Uunit=0.83333\p@ + \kern.16ex\char16\kern-.08ex + \leaders\vrule\@height\z@\@depth\Uunit\hfill + \kern.08ex\char17\kern.16ex} +% \end{macrocode} +%\end{macro} +%\end{macro} +% +%\begin{macro}{\coronis} +%\begin {macro}{\Coronis} +%\begin {macro}{\paragr} +% \begin {macro}{\dpar} While setting poetry it is necessary to mark the end of +% paragraphs, which do not necessarily coincide with the ends of stanzas. After +% the verse that concludes a logical paragraph philologists insert a mark called +% ``coronis'' (synonymous of paragraph, therefore the command |\paragr|) or +% a ``stronger'' mark called ``Coronis'', which differs from the common ``coronis'' +% because it bears an inverted semilunar sign on its left. Both marks are input +% by means of their respective commands |\paragr| (preferred to |\coronis|) or +% |\Coronis| inserted \emph{at the beginning of the paragraph terminating verse}. +% The command |\dparagr| inserts a double coronis mark, which is sometimes required +% in place of the ordinary single mark. +% \begin{macrocode} +\def\C@rule{\vrule\@height.45ex\@depth-.35ex\@width1.5em} +\def\coronis@rule{\hbox to\z@{\hss\C@rule\hss}} +\def\Coronis@rule{\hbox to\z@ + {\hss\hbox to\z@{\hss$\scriptstyle)$\kern-1.5\p@}\C@rule\hss}} +\DeclareRobustCommand\paragr{\raisebox{-1ex}[\z@][\z@]{\coronis@rule}} +\let\coronis\paragr +\DeclareRobustCommand\Coronis{\raisebox{-1ex}[\z@][\z@]{\Coronis@rule}} +\DeclareRobustCommand{\dparagr}% + {\raisebox{-1.3ex}[\z@][\z@]{\coronis@rule}% + \raisebox{-1.6ex}[\z@][\z@]{\coronis@rule}} +% \end{macrocode} +%\end{macro} +%\end{macro} +%\end{macro} +%\end{macro} +% +%\begin{macro}{\sinafia} +%\begin {macro}{\crux} +%\begin {macro}{\FinisCarmen} +%\begin {macro}{\apici} +%\begin {macro}{\positio} +%\begin {macro}{\Int} +%\begin {macro}{\star} +%\begin {macro}{\dstar} +%\begin {macro}{\tstar} +%\begin {macro}{\responsio} The next group of commands are intended to insert special +% symbols in the philological text; just the command |\apici| requires an argument, +% a block of text that shall be enclosed within straight vertical apices, irrespective +% of the font slant. The command |\FinisCarmen| although very descriptive, is long to +% type, therefore a shorter alias |\FinCar| has been defined. |\apex| was the initial +% name given to the command, but on a second time it was changed to |\positio|, and the +% latter should always be used in place of the former. For what concerns |\star| which is +% a standard \LaTeX\ math command, the original definition is saved in the service +% macro |\m@thst@r| and the command is redefined so as to perform as it should both in +% text and in math mode. The symbol $\int$, on the contrary, was redefined so as not +% to mix math with text, even if its rendering resorts to mathematics. +% \begin{macrocode} +\DeclareRobustCommand*\sinafia{{\metricsfont s}} +\DeclareRobustCommand*{\crux}{{\metricsfont\char'171}} +\DeclareRobustCommand*{\FinisCarmen}{\ensuremath{\otimes}} +\let\FinCar\FinisCarmen +\DeclareRobustCommand*{\apici}[1]% + {\posthinspace{\metricsfont\char96}\negthinspace#1% + \posthinspace{\metricsfont\char39}\negthinspace} +\DeclareRobustCommand*{\apex}% + {\/\hskip.5ex\vrule\@height1.7ex\@depth-1ex\hskip.2ex} +\let\positio\apex +\DeclareRobustCommand*{\Int}{\ensuremath{\int}} +\let\m@thst@r\star +\DeclareRobustCommand*{\star}{\textormath{{{\upshape *}}}{\m@thst@r}} +\DeclareRobustCommand*{\dstar}{{\upshape **}} +\DeclareRobustCommand*{\tstar}{{\upshape ***}} +\DeclareRobustCommand*{\responsio}{{\boldmath\ensuremath{\sim}}} +% \end{macrocode} +%\end{macro} +%\end{macro} +%\end{macro} +%\end{macro} +%\end{macro} +%\end{macro} +%\end{macro} +%\end{macro} +%\end{macro} +%\end{macro} +% +%\begin{macro}{\thorn} +%\begin{macro}{\Thorn} |\thorn| and |\Thorn| are the exact equivalents of |\th| and |\Th| +% that ere defined only for the T1 encoding. Therefore such encoding is selected +% in an implicit way. +% \begin{macrocode} +\DeclareRobustCommand{\thorn}{{\fontencoding{T1}\selectfont\th}} +\DeclareRobustCommand{\Thorn}{{\fontencoding{T1}\selectfont\TH}} +% \end{macrocode} +%\end{macro} +%\end{macro} +% +%\begin{macro}{\dracma} +%\begin {macro}{\hemiobelion} +%\begin {macro}{\tetartemorion} +%\begin {macro}{\stater} +%\begin {macro}{\denarius} +%\begin {macro}{\etos} This set of symbols, taken from the metrics symbol font +% (which by this time is evident does not contain only metrics symbols) represent +% the unit symbols of some coins of ancient Greece, as they were found on many +% ``ostraka'' in many archeological sites. +% \begin{macrocode} +\DeclareRobustCommand{\dracma}{{\metricsfont D}} +\DeclareRobustCommand{\hemiobelion}{{\metricsfont A}} +\DeclareRobustCommand{\tetartemorion}{{\metricsfont B}} +\DeclareRobustCommand{\stater}{{\metricsfont C}} +\DeclareRobustCommand{\denarius}{{\metricsfont E}} +\DeclareRobustCommand{\etos}{{\metricsfont G}} +% \end{macrocode} +%\end{macro} +%\end{macro} +%\end{macro} +%\end{macro} +%\end{macro} +%\end{macro} +% +%\begin{macro}{\cut} +%\begin{macro}{\dcutbar} +%\begin{macro}{\bcutbar} +%\begin{macro}{\gcutbar} The following set of macros are all connected with the principal +% macro |\cut|, which should position a horizontal tie or bar across a certain number +% of latin letters, specifically `d', `b', and `g'; due to their different shapes, such +% bars are of different length and located at different heights; if they are in italics +% the bar position must change again. Therefore even if the user command |\cut| is the +% same for all these letters, its action must change depending on different circumstances. +% It merely checks its argument (it must be \emph{one} letter and unpredictable results +% are obtained if more that one token is passed as argument to |\cut|) and selects the +% proper bar. The specific bar commands |\dcutbar|, |\bcutbar|, and |\gcutbar|, are +% defined in such a way as to cope only with the their initial letter. +% \begin{macrocode} +\DeclareRobustCommand{\cut}[1]{% + \ifx#1d\dcutbar\else + \ifx#1b\bcutbar\else + \ifx#1g\gcutbar + \fi + \fi + \fi} +% +\def\dcutbar{{\edef\slant@{\expandafter\numero\the\fontdimen1\font}% + d\dimen@1.2ex\kern\slant@\dimen@ + \llap{\vrule\@height1.3ex\@depth-\dimen@ + \ifdim\slant@\p@>\z@\@width.35em\else\@width.4em\fi\kern.03em}}} +\def\bcutbar{{\edef\slant@{\expandafter\numero\the\fontdimen1\font}% + \rlap{\dimen@1.2ex\kern\slant@\dimen@ + \ifdim\slant@\p@=\z@\kern.03em\fi + \vrule\@height1.3ex\@depth-\dimen@ + \ifdim\slant@\p@>\z@\@width.3em\else\@width.4em\fi}b}} +\def\gcutbar{{\edef\slant@{\expandafter\numero\the\fontdimen1\font}% + \ifdim\slant@\p@>\z@ + g\kern-.55ex\dimen@.2ex\kern-\slant@\dimen@ + \vrule\@height-.1ex\@depth\dimen@\@width.6ex + \else + \dimen@.2ex\kern\slant@\dimen@\vrule\@height.3ex\@depth-\dimen@ + \@width.6ex\kern-.55ex\relax g + \fi}} +% \end{macrocode} +%\end{macro} +%\end{macro} +%\end{macro} +%\end{macro} +% +%\begin{macro}{\OSN} The next macro is just a shortcut instead of using +% |\oldstylenums|. We do not remember why we defined a whole command, instead +% of just |\let|ting the new control sequence be a synonym for the existing +% one. +% \begin{macrocode} +\newcommand*{\OSN}[1]{\oldstylenums{#1}} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\splus} +%\begin{macro}{\stimes} +%\begin{macro}{\kclick} +% The next three macros are used in glottology; the first two ones are used to +% mark special pronunciations of the sibilant, while the last one is used to mark +% a special pronunciation of the guttural that produces a ``click''. +%\begin{macrocode} +\newcommand\splus{\leavevmode{% + \edef\slant@{\expandafter\numero\the\fontdimen1\font}% + \setbox\z@\hbox{s}% + \dimen@=\wd\z@ + \setbox\tw@\hbox{$\scriptscriptstyle+$}% + \advance\dimen@.35\ht\tw@ + \raisebox{\dimen@}[\z@][\z@]{% + \makebox[\z@][l]{\kern.5\wd\z@ + \kern\slant@\dimen@\kern-.5\wd\tw@\box\tw@}}% + \box\z@}}% +\newcommand\stimes{\leavevmode{% + \edef\slant@{\expandafter\numero\the\fontdimen1\font}% + \setbox\z@\hbox{s}% + \dimen@=\wd\z@ + \setbox\tw@\hbox{$\scriptscriptstyle\times$}% + \advance\dimen@.2\ht\tw@ + \raisebox{\dimen@}[\z@][\z@]{% + \makebox[\z@][l]{\kern.5\wd\z@ + \kern\slant@\dimen@\kern-.5\wd\tw@\box\tw@}}% + \box\z@}}% +\newcommand\kclick{\leavevmode{% + \edef\slant@{\expandafter\numero\the\fontdimen1\font}% + \setbox\z@\hbox{k}% + \setbox\tw@\hbox{\fontencoding\GRencoding@name\selectfont\s{v}}% + \dimen@\wd\z@ + \ifdim\slant@\p@=\z@ + \advance\dimen@-.1\wd\z@\else\advance\dimen@\wd\tw@ + \fi + k\makebox[\z@][r]{\unhcopy\tw@\kern.5\dimen@}% + }}% +% \end{macrocode} +%\end{macro} +%\end{macro} +%\end{macro} + +% +%\begin {macro}{\verso} +%\begin{environment}{versi} Here we start with verse environments; we already explained +% we defined three new verse environments that typeset verses in ``in-line'' verses, +% ``numbered by five'' verses, and ``numbered by five and subnumbered'' verses. +% For the environment |versi| we first need a counter and a little macro for +% generating the short bar that has to receive the verse number as a ``limits'' +% superscript. +% \begin{macrocode} +%%%%%%%%%%%%%%%%%%%%%%%%%% verse environments +\newcounter{verso}\setcounter{verso}{0} +\newcommand{\smallvert}{\vrule\@height1ex} +% \end{macrocode} +% Next we define the macro |\verso| that sets the small bar with the verse number on top. +% Since the initial numbering might be different from~1, |\verso| accepts an optional +% argument, which is intended to be the initial counter value. Since |\verso| steps up +% the counter a different action must be taken if the optional argument is present; +% in order to be able to reference such verse by means of the |\label|--|\ref| cross reference +% mechanism, this stepping up must be done by means of |\refstepcounter|; therefore we +% have to leave |\refstepcounter| outside the conditional code, and step down the counter +% by one unit only in case the initial value is specified. +% \begin{macrocode} +\DeclareRobustCommand\verso[1][]{% + \def\@tempA{#1}\ifx\@tempA\empty + \else + \setcounter{verso}{#1}\addtocounter{verso}{\m@ne}% + \fi + \refstepcounter{verso}% + \ensuremath{\mathop{\smallvert}\limits^{\theverso}}% + \space\ignorespaces +} +% \end{macrocode} +% Now that the verse separation macro is ready we can define the environment; the required +% opening statement argument represents a short text whose width is taken as a measure +% for indentation, so that verses are typeset with a left margin that leaves out this +% short text. Substantially this environment is a \texttt{list} one, and the left +% margin variable width is totally similar to the one used in |thebibiography| environment. +% Also the |\makelabel| command has been modified accordingly. +% \begin{macrocode} +\newenvironment{versi}[1]{% +\def\makelabel##1{##1} +\list{}{\settowidth\labelwidth{#1}\leftmargin\labelwidth + \advance\leftmargin\labelsep}% +}{% +\endlist +} +% \end{macrocode} +%\end{environment} +%\end{macro} +% +%\begin{environment}{Versi} The second environment |Versi| accepts an optional +% starting number in the opening, statement, whose default value is~1: verses are +% composed as in the standard \LaTeX\ |verse| environment (with one minor difference) +% except they are numbered in the left margin with a progression of five; only verse numbers +% that are integer multiples of five are displayed. The minor difference is that stanzas +% cannot be marked with a blank line in the input |.tex| file, as it is customary with +% the standard environment, but if a visual mark is desired, such as extra vertical +% space, it is necessary to resort to the optional spacing parameter that can be specified +% to the |\\| command. This environment uses the same verse counting counter, defined for +% use with the |versi| environment. +%\begin{macro}{\BreakVersotrue} +%\begin{macro}{\BreakVersofalse} +% For specific purposes it is necessary to have a boolean +% variable for allowing or prohibiting verses to split up at the end of line; the default is not +% to split. +% \begin{macrocode} +\newif\ifBreakVersi +\BreakVersifalse +\newenvironment{Versi}[1][1]{% + \setcounter{verso}{#1}% +% \end{macrocode} +% an internal macro |\writ@verso| does not actually write out the complete, possibly +% numbered verse, but provides for checking that the verse counter contains a multiple of~5, +% and to write it out using old stile numbers; in case the number is not an integer multiple +% of~5 the number is written out as the |\empty| macro. +%\end{macro} +%\end{macro} +% \begin{macrocode} + \def\writ@verso{% + \count255=\value{verso}\divide\count255by5\relax + \multiply\count255by5\relax + \advance\count255-\value{verso}% + \ifnum\count255=\z@ + {\small\expandafter\oldstylenums\expandafter{\the\c@verso}}% + \else + \empty + \fi}% +% \end{macrocode} +% Since the |\\| command should provide the same functionality as the regular \LaTeX\ +% command, while in this environment it should provide other functionalities, such as +% triggering the display of the verse number, It is necessary to define an intermediate +% command |\v@rscr|, that examines the possible optional arguments, such as the optional +% star or the brackets enclosing vertical spacing +% \begin{macrocode} + \def\\{\@ifstar{\v@rscr{\@M}}{\v@rscr{\z@}}}% + \def\v@rscr##1{\@ifnextchar[{\wr@teverse{##1}}% + {\wr@teverse{##1}[\z@]}}% +% \end{macrocode} +% Finally the |\wr@teverse| macro does the actual typesetting of the verse. Notice that +% the environment opening statement and every succeeding previous verse starts an +% horizontal box where the contents of the current verse is stored. Therefore the first +% thing to do is to close the box with the |\egroup| command, then a line of text is +% output that contains a possibly empty box or the verse number and the command for +% stepping up the verse counter, followed by the verse box number~0 and an end of paragraph; +% in this way the |\\| operates always in vertical mode, contrary to what happens in the |verse| +% standard \LaTeX\ environment. Even in this environment the actual typesetting is done +% within a |list| environment, whose parameters are set differently from what they are +% in the |verse| environment. Notice in any case that the command |\wr@teverse| reopens +% the~0 box, so on the last verse, upon closing the environment, it is necessary to +% remember to close such box, whose contents is irrelevant and can be thrown away. +% +% I have experienced some problems in typesetting verses in two-column format; the column width +% might be too short for setting up verses even if verses are not that long, because +% in the left margin there must be room for the verse numbering; for homogeneity the spacing +% must conform also with the following environment \texttt{VERSI} that has a secondary +% verse numbering, therefore it can't be too small. The result is that there might be a test +% for controlling the two-column format, but I think that it is more useful for the typesetter +% to be able to switch on and off the possibility of breaking long verses on more lines. +% On two-column format in any case it is better to leave the right margin to coincide with +% the column right margin. +% \begin{macrocode} + \def\wr@teverse##1[##2]{\egroup + \makebox[3em][r]{% + \writ@verso\refstepcounter{verso}\kern1.5em} + \ifBreakVersi + \begingroup\raggedright + \hyphenpenalty \@M + \unhbox\z@\par + \endgroup + \else + \rlap{\box\z@}\par + \fi + \penalty##1\vskip##2\relax + \setbox\z@\hbox\bgroup\ignorespaces}% + \list{}{\itemsep\z@\parsep\z@ + \if@twocolumn + \itemindent -5.3em% + \listparindent\itemindent + \rightmargin\z@ + \advance\leftmargin 3.3em + \else + \itemindent -1.5em% + \listparindent\itemindent + \rightmargin \leftmargin + \advance\leftmargin 1.5em + \fi + }% + \item\leavevmode\setbox\z@\hbox\bgroup\ignorespaces +}{% +% \end{macrocode} +% Upon closing it is necessary to activate the writing out of the last verse that is still +% in the~0 box, but since this box is immediately reopened, it is necessary to close it +% again before exiting the environment. +% \begin{macrocode} + \\% + \egroup + \endlist +} +% \end{macrocode} +%\end{environment} +% +%\begin{environment}{VERSI} The third environment |VERSI| set verses in the traditional +% way, but numbers them with two different enumerations; the principal one is by +% multiples of five, while the secondary one counts by units, and may be turned on and off, +% or reset at will. We therefore need another counter for the secondary enumeration +% and commands for turning it on and off and for resetting the counter. We need also +% a new length and a new boolean variable in order to manage the secondary enumeration. +% The new length represents an indentation of those verses that do no have the secondary +% enumeration, while secondary enumerated verses are not indented. For \texttt{VERSI} +% there is the same possibility of turning on and off the possibility of breaking verses +% at the end of line as it happens for the environment \texttt{Versi}. +% \begin {macro}{\SubVerso} +% \begin {macro}{\NoSubVerso} Macro |\NoSubVerso| turns off the secondary enumeration; +% macro |\SubVerso| turns on the secondary enumeration, but it accepts an optional +% argument for resetting the secondary counter; the default value is~0; if no optional +% argument is specified, and therefore if the optional argument has its default value~0, +% no resetting is performed and the enumeration keeps going from the last contents of +% the secondary counter; if the first use of |\SubVerso| does not contain the optional +% argument, the secondary enumeration keep going from the old contents of the secondary +% counter which is unpredictable, depending upon the previous occurrences of the +% environment |VERSI|. The typesetter, therefore, must remember to specify the optional +% argument to |\SubVerso| the first time he uses it in this environment. +% \begin{macrocode} +\newcounter{subverso} \setcounter{subverso}{0} +\newif\ifSubVerso +\newlength{\versoskip} +\newcommand*\NoSubVerso{\global\SubVersofalse + \global\versoskip1.3em\ignorespaces} +\newcommand*\SubVerso[1][0]{\global\SubVersotrue + \ifnum#1=0\else + \setcounter{subverso}{#1}% + \global\protected@edef\@currentlabel{\the\c@subverso}% + \fi + \global\versoskip.3em\ignorespaces} +% \end{macrocode} +%\end{macro} +%\end{macro} +% The opening environment statement accepts an optional argument (default equals~1) +% which represents the primary enumeration starting number +% \begin{macrocode} +\newenvironment{VERSI}[1][1]{% + \setcounter{verso}{#1}% +% \end{macrocode} +% We need two macros |\writ@verso| and |\writ@subverso|, that typeset the primary and +% secondary enumeration; the first one is similar to the one used in the |Versi| environment, +% while the second one has no special features except the conditional construct needed +% to check if the secondary enumeration has to be printed out. +% \begin{macrocode} + \def\writ@verso{% + \count255=\value{verso}\divide\count255by5\relax + \multiply\count255by5\relax + \advance\count255-\value{verso}% + \ifnum\count255=0\relax + {\small\expandafter\oldstylenums\expandafter{\the\c@verso}}% + \else + \empty + \fi}% + \NoSubVerso + \def\writ@subverso{% + \ifSubVerso + {\scriptsize\expandafter\oldstylenums + \expandafter{\the\c@subverso}}% + \fi}% +% \end{macrocode} +% Similarly to the previous environment, the |\\| command must be redefined +% so as to perform more or less as the standard one, while doing all the necessary +% actions needed in this environment. It must check the presence of the optional star +% and of the optional vertical skip and it has to pass control to a service macro +% |\v@rscr| that does the actual job; actually it passes control to a third macro +% |\writ@verse| that effectively outputs the current verse. +% \begin{macrocode} + \def\\{\@ifstar{\v@rscr{\@M}}{\v@rscr{\z@}}}% + \def\v@rscr##1{\@ifnextchar[{\writ@verse{##1}}% + {\writ@verse{##1}[\z@]}}% + \def\writ@verse##1[##2]{\egroup + \makebox[1.5em][r]{\writ@verso\refstepcounter{verso}}% + \makebox[1.5em][r]{\writ@subverso\refstepcounter{subverso}}% + \kern1.5ex\hskip\versoskip + \ifBreakVersi + \begingroup + \hyphenpenalty \@M + \unhbox\z@\par + \endgroup + \else + \rlap{\box\z@}\par + \fi + \penalty##1\vskip##2\relax + \setbox\z@\hbox\bgroup\ignorespaces}% +% \end{macrocode} +% For the remaining part, the environment is a normal |list| environment with specific +% initial parameters. +% \begin{macrocode} + \list{}{\parsep\z@\itemsep\z@ + \if@twocolumn + \itemindent -5.3em% + \listparindent\itemindent + \rightmargin\z@ + \advance\leftmargin 3.3em + \else + \itemindent -1.5em% + \listparindent\itemindent + \rightmargin \leftmargin + \advance\leftmargin 1.5em + \fi + }% + \item\leavevmode\setbox\z@\hbox\bgroup\ignorespaces +}{% +% \end{macrocode} +% The closing statement must output the last verse, which is still contained in +% box~0; since box~0 is automatically reopened, it must be closed again and its +% contents, of no significance now, can be lost upon closing the environment group. +% \begin{macrocode} + \\% + \egroup\endlist +} +% \end{macrocode} +%\end{environment} +% +% Now we start defining many things concerned with metrics; the metric symbol font +% has been developed mainly for this purpose. We start defining some macros for +% inputting specific symbols; many such macros have their own aliases in Latin. +% +%\begin{macro}{\lunga} +%\begin{macro}{\longa} +%\begin{macro}{\breve} +%\begin{macro}{\brevis} +%\begin{macro}{\bbreve} +%\begin{macro}{\bbrevis} +%\begin{macro}{\barbreve} +%\begin{macro}{\barbrevis} +%\begin{macro}{\barbbrev} +%\begin{macro}{\barbbrevis} +%\begin{macro}{\ubarbreve} +%\begin{macro}{\ubarbrevis} +%\begin{macro}{\ubarbbreve} +%\begin{macro}{\ubarbbrevis} +%\begin{macro}{\ubarsbreve} +%\begin{macro}{\ubarsbrevis} +%\begin{macro}{\ubrevelunga} +%\begin{macro}{\ubrevislonga} The following definitions are straightforward; a small +% comment on |\breve|: since it is also a math command in standard \LaTeX, its meaning +% is saved in a service macro |\br@ve| and the |\breve| macro is redefined taking into +% account whether the typesetting is being done in text or in math mode. The unusual +% letters that appear in the definitions of the various metric symbols have no mysterious +% meaning; they might have been specified by |\char|\meta{number}, but it seemed shorter +% to specify the corresponding letters that would occupy the same slots in literal fonts. +% \begin{macrocode} +\DeclareRobustCommand\lunga{{\metricsfont l}} +\let\longa\lunga +\let\br@ve\breve +\DeclareRobustCommand\breve{\textormath{{{\metricsfont b}}}{\br@ve}} +\let\brevis\breve +\DeclareRobustCommand\bbreve{{\metricsfont c}} +\let\bbrevis\bbreve +\DeclareRobustCommand\barbreve{{\metricsfont i}} +\let\barbrevis\barbreve +\DeclareRobustCommand\barbbreve{{\metricsfont j}} +\let\barbbrevis\barbbreve +\DeclareRobustCommand\ubarbreve{{\metricsfont d}} +\let\ubarbrevis\ubarbreve +\DeclareRobustCommand\ubarbbreve{{\metricsfont e}} +\let\ubarbbrevis\ubarbbreve +\DeclareRobustCommand\ubarsbreve{{\metricsfont f}} +\let\ubarsbrevis\ubarsbreve +\DeclareRobustCommand{\ubrevelunga}{{\metricsfont\char107}} +\let\ubrevislonga\ubrevelunga +% \end{macrocode} +%\end{macro} +%\end{macro} +%\end{macro} +%\end{macro} +%\end{macro} +%\end{macro} +%\end{macro} +%\end{macro} +%\end{macro} +%\end{macro} +%\end{macro} +%\end{macro} +%\end{macro} +%\end{macro} +%\end{macro} +%\end{macro} +%\end{macro} +%\end{macro} +% +%\begin {macro}{\corona} +%\begin {macro}{\ElemInd} +%\begin {macro}{\coronainv} +%\begin {macro}{\catal} +%\begin {macro}{\ipercatal} +%\begin {macro}{\hiatus} +%\begin {macro}{\Hiatus} +%\begin {macro}{\X} +%\begin {macro}{\anceps} +%\begin {macro}{\banceps} +%\begin {macro}{\ancepsdbrevis} +%\begin {macro}{\aeolicbii} +%\begin {macro}{\aeolicbiii} +%\begin {macro}{\aeolicbiv} Similarly the following symbols have straightforward +% definitions. Only |\hiatus| and |\Hiatus| require a small explanation; |\hiatus| +% inserts a small capital `H' in superscript position; in a first moment it was +% chosen the solution of designing a specific sans serif glyph in superscript position +% directly in the metric symbol font (actually this symbol is still part of the font) +% but while testing it, Paolo Ciacchi observed that a regular `H' with serifs was +% better looking than the sans serif counterpart. Therefore the definition was +% changes in order to use the current font upright shape; by specifying `H', it is +% irrelevant if the current one is a Latin font, and the letter is a capital 'h', or +% if the current one is a Greek font and the letter is a capital `eta'. |\Hiatus| +% displays the same symbol in a zero width box so that it does not occupy any +% horizontal space; it is useful wile writing down complicated metric sequences. +% Macro|\X| may be considered, thanks to its shape, a shortcut in place of the +% full name |\anceps|. +% \begin{macrocode} +\DeclareRobustCommand\corona{{\metricsfont\char20}} +\let\ElemInd\corona +\DeclareRobustCommand\coronainv{{\metricsfont\char21}} +\DeclareRobustCommand\catal{{\metricsfont g}} +\DeclareRobustCommand\ipercatal{{\metricsfont h}} +\DeclareRobustCommand\hiatus{\textsuperscript{\upshape H}} +\DeclareRobustCommand\Hiatus{\makebox[\z@]{\hiatus}} +\DeclareRobustCommand\X{{\metricsfont X}} +\let\anceps\X +\DeclareRobustCommand\banceps{{\metricsfont Y}} +\DeclareRobustCommand\ancepsdbrevis{{\metricsfont Z}} +\DeclareRobustCommand{\aeolicbii}{{\metricsfont I}} +\DeclareRobustCommand{\aeolicbiii}{{\metricsfont J}} +\DeclareRobustCommand{\aeolicbiv}{{\metricsfont K}} +% \end{macrocode} +%\end{macro} +%\end{macro} +%\end{macro} +%\end{macro} +%\end{macro} +%\end{macro} +%\end{macro} +%\end{macro} +%\end{macro} +%\end{macro} +%\end{macro} +%\end{macro} +%\end{macro} +%\end{macro} +% +%\begin{macro}{\stripsl@sh} +%\begin{macro}{\2} +%\begin{macro}{\3} +%\begin{macro}{\4} Here we prepare for the definition of a very useful macro, |\newmetrics| +% that should ease quite a lot writing complicated and repetitive metric sequences. +% We shall define |\newmetrics| by means of the internal \LaTeX\ macro |\@namedef| +% which accepts a macro name containing any character, provided this name does not +% contain the initial back slash (if it does this back slash becomes part of the +% macro name; see the \TeX{}book where there is an example for the definition of |\\TeX|). +% Therefore we need a service macro |\stripsl@sh|that strips the first token from the control sequence, so that +% the na\"{\i}f user does not have to treat the new metrics control sequence differently +% from the control sequences it uses for example with |\newcommand|. Next we define +% three numeric control sequences that should be followed by the rest of the macro name. +% The na\"{\i}f user then can type in something like \verb*+\2iamb + in order to activate +% a macro whose name is formed by the tokens |2iamb|, which is normally impossible in +% \LaTeX. Notice, though, the compulsory space after the macro name. +% \begin{macrocode} +\newif\ifmetricsfont\metricsfontfalse +\def\stripsl@sh#1{\expandafter\@gobble\string#1} +\def\2#1 {\csname2#1\endcsname} +\def\3#1 {\csname3#1\endcsname} +\def\4#1 {\csname4#1\endcsname} +% \end{macrocode} +%\end{macro} +%\end{macro} +%\end{macro} +%\end{macro} +%\begin {macro}{\newmetrics} Here is the user macro |\newmetrics|, +% to be used just as |\newcommand|, +% except it accepts a macro name starting with one of the digits `2', `3', or `4', and sets +% the suitable boolean variable to true so that in a long metric sequence the metric font +% might be selected just once. +% \begin{macrocode} +\newcommand\newmetrics[2]{% + \expandafter\@namedef\expandafter{\stripsl@sh#1}% + {{\metricsfonttrue#2}}% +} +% \end{macrocode} +%\end{macro} +%\begin {macro}{\iam} +%\begin {macro}{\chor} +%\begin {macro}{\enopl} +%\begin {macro}{\4MACRO} +%\begin {macro}{\aeolchorsor} +%\begin {macro}{\hexam} +%\begin {macro}{\pentam} +%\begin {macro}{\2tr} Here some common metric sequences are defined; some define single +% measures, such as the `iambus' or the `choriambus', while some define complete verses such as the +% `hexameter' or the `pentameter' +% \begin{macrocode} +\newmetrics\iam{\barbreve\lunga\breve\lunga} +\newmetrics\chor{\lunga\breve\breve\lunga} +\newmetrics\enopl{\breve\lunga\breve\breve\lunga\breve\breve\lunga} +\newmetrics{\4MACRO}{\lunga\lunga\lunga\lunga} +\newmetrics{\aeolchorsor}{\lunga\zeugma{\breve\breve}\breve + \breve\zeugma{\breve\breve}} +\newmetrics{\hexam}{\lunga\breve\breve\lunga\breve\breve + \lunga\breve\breve\lunga\breve\breve\lunga\breve\breve + \lunga\lunga} +\newmetrics{\pentam}{\lunga\barbbreve\lunga\barbbreve\lunga\dBar + \lunga\breve\breve\lunga\breve\breve\lunga} +\newmetrics{\2tr}{\lunga\breve\lunga\X\ \lunga\breve\lunga\X\ } +% \end{macrocode} +% As it may be seen the definition of such metric sequences may contain almost +% anything; here |\zeugma| was used as well as \verb*+\ +, but almost every +% macro defined in the previous parts may be freely used. +%\end{macro} +%\end{macro} +%\end{macro} +%\end{macro} +%\end{macro} +%\end{macro} +%\end{macro} +%\end{macro} +% +%\begin{macro}{\metricstack} |\metricstack| is a command similar to |\shortstack| +% used to stack something over something else; specifically the second argument +% over the third one; it was specifically designed for use while typesetting +% metric sequences, but actually there is nothing that forbids to use it with +% any base character (typeset in text LR mode) and any superscript character +% belonging to a math alphabet (which is being set in script--script style, not +% in script style, as it happens with |\shortstack|. +% \begin{macrocode} +\DeclareRobustCommand*{\metricstack}[2]% + {$\mathord{\mathop{\hbox{#1\rule{\z@}{1ex}}}% + \limits^{\scriptscriptstyle\relax#2\relax}}$% +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\svert} |\svert| is a short vertical rule that may be used, for example +% with |\metricstack| for putting a small number over a dividing vertical bar in metric +% sequences. +% \begin{macrocode} +\newcommand*{\svert}{\vrule\@height.8ex\@depth.2ex\relax} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\textoverline} \LaTeX\ has macro |\underline| that can be used in both +% text and math mode; there is nothing similar for overlining, therefore we defined +% a new command for this task. +% \begin{macrocode} +\DeclareRobustCommand*{\textoverline}[1]{% + \leavevmode\vbox{\setbox\z@\hbox{#1} + \ialign{##\crcr + \hbox to\wd\z@{\hrulefill}\crcr + \noalign{\kern.4ex\nointerlineskip}% + \hfil\box\z@\hfil\crcr}}} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\verseskip} +%\begin {environment}{bracedmetrics} The environment |bracedmetrics| is used primarily +% for setting some metric sequences one atop the other, with a certain alignment +% and grouped together with a right brace. We need therefore a length name +% |\br@cedmetrics| for measuring the width of this large metrics sequence stack; we need +% a command |\verseskip| for inserting a blank space before, after or in the middle of a metric +% sequence, that more or less is as wide as an integer number of metric symbols, +% and, last but not least, the environment itself for typesetting this large object +% containing the said metric sequences; see the documentation file \texttt{teubner-doc.pdf} +% for examining some examples. +% \begin{macrocode} +\newlength{\br@cedmetrics} +\newcommand*{\verseskip}[1]{{% + \setbox\z@\hbox{\longa}\dimen@\wd\z@\leavevmode\hbox to#1\dimen@{}}% +} +\newenvironment{bracedmetrics}[1]{\def\Hfill{\leavevmode\hfill}% +\settowidth{\br@cedmetrics}{#1}% +\ifvmode\vskip1ex\fi +$\displaystyle\left.% +\vcenter\bgroup\hsize\br@cedmetrics\parindent\z@\parskip\z@ +}{\egroup\right\}$} +% \end{macrocode} +%\end{environment} +%\end{macro} +% +%\begin{macro}{\TRON} +%\begin{macro}{\GTRON} +%\begin{macro}{\TROF} +%\begin{macro}{\GTROF} Here there are some macros for turning on and off the tracing +% facilities of \TeX, that turn out to be useful while debugging; they are accessible +% also to the end user. Global settings must be turned on and off globally; local settings +% die out by themselves when a group is closed, but it is a good habit to explicitly +% turn them out regardless of groups. Attention that when the tracing facilities are +% on and a page ship out takes place, the |.log| file receives a lot of material, and the +% file gets very large. +% \begin{macrocode} +\def\GTRON{\global\tracingcommands=\tw@ \global\tracingmacros=\tw@} +\def\GTROF{\global\tracingcommands=\z@ \global\tracingmacros=\z@} +\def\TRON{\tracingcommands=\tw@ \tracingmacros=\tw@} +\def\TROF{\tracingcommands=\z@ \tracingmacros=\z@} +% \end{macrocode} +%\end{macro} +%\end{macro} +%\end{macro} +%\end{macro} +% +% When typesetting Greek it may occur to specify numbers written out as Milesian numerals; +% the \texttt{greek} option to the \babel\ package defines a couple of macros for transforming +% explicit arabic numerals or counter contents as Milesian numerals. Since this package +% offers more possibilities in the choice of those ``non alphabetic'' characters used in the +% Milesian notation, such macros have to be redefined. On the occasion we changed some +% little internal details so as to make such macros a little faster and more robust. +%\begin{macro}{\Greeknumeral} +%\begin{macro}{\greeknumeral} +%\begin{macro}{\@ifStar} +%\begin{macro}{\grtoday} +% Both |\gereeknumeral| and |\Greeknumeral|, the latter producing +% upper case Greek numerals, while the former produces lower case ones, resort to a service +% macro |\gr@@numeral|. But the new definition accepts the starred version; without the star +% the digit value~6 is represented with a ``stigma'', while with the star that value is +% represented with a lowered ``digamma''. The upper case version requires intermediate +% macros before using |\MakeUppercase| on the result of converting lower to upper case +% Milesian value symbols. This means that |\gr@@numeral| may work only with lower case +% symbols. +% It turned out that the normal redefinition command |\renewcommand| produced fragile +% commands that broke out when used as arguments of other commands, specifically the Greek date +% was broken when it was passed as the argument to the |\date| command of the class \textsf{memoir}; +% therefore I decided to redefine the |\@ifstar| macro into another |\@ifStar| one so as not to +% fiddle with \LaTeX\ kernel commands. I defined also the lowercase version of the |\grtoday| date, +% since the \babel\ package provides only the |\today| command with no control over the use of +% which type of numerals; |\grtoday| uses the lowercase Milesian numerals through the redefined +% |\greeknumeral| macro. +% \begin{macrocode} +\def\@ifStar#1#2{\def\@tempA{#1}\def\@tempB{#2}\futurelet\@tempC\@testStar} +\def\@testStar{\ifx\@tempC*\bbl@afterelse\expandafter\@tempA\@gobble\else + \bbl@afterfi\@tempB\fi} +\DeclareRobustCommand*{\Greeknumeral}{% + \let\n@vanta\Coppa\let\n@vecento\Sampi + \@ifStar{\Gr@@kn@meral}{\Gr@@knum@ral}} +\DeclareRobustCommand*{\greeknumeral}{% + \let\n@vanta\varkoppa\let\n@vecento\sampi + \@ifStar{\let\s@i\stigma\gr@@numeral}{\let\s@i\fLow\gr@@numeral}} +\def\Gr@@kn@meral#1{\let\s@i\Stigma + \expandafter\MakeUppercase\expandafter{\gr@@numeral{#1}}} +\def\Gr@@knum@ral#1{\let\s@i\Digamma + \expandafter\MakeUppercase\expandafter{\gr@@numeral{#1}}} +\def\grtoday{{\expandafter\greeknumeral\expandafter{\the\day}} % keep the space +\gr@c@month \space {\expandafter\greeknumeral\expandafter{\the\year}}} +% \end{macrocode} +%\end{macro} +%\end{macro} +%\end{macro} +%\end{macro} +%\begin{macro}{\gr@@numeral} |\gr@@numeral| must do most of the processing; it must check +% that the argument is within the allowable range $1\sim999\,999$ and issue suitable +% warnings if not. On the other end if the number is within the correct range it must check +% in which decade it falls and must call other macros so as to produce the correct +% decimal digit~$\leftrightarrow$ Milesian symbol. Six such macros are needed because the +% allowable range contains at maximum six decimal places. Apparently Milesian symbology +% allows to go beyond one million, but Apostolos Syropoulos, who originally wrote the code +% thought (correctly) that Milesian numbers would not be used for ``acrobatic performances'' +% but possibly for writing the Greek date with the AD year; six decimal places are +% more than enough for this purpose. |\gr@ill@value| was not redefined from +% Apostolos Syropoulos' \babel\ definition; it simply issues a warning message about +% the argument out of range. The presence of the primitive command |number| +% in these macros is for two purposes: (a) transforms a counter contents into a +% sequence of digits tokens, and (b) if the argument is already a digit string, +% it removes any leading zeros. No braces are present because this string is examined +% sequentially one digit at a time from the leading position to the least significant +% position; of course this means that the decimal zero is treated correctly even +% if Milesian symbols do not have the equivalent of a zero. +% \begin{macrocode} +\def\gr@@numeral#1{% + \ifnum#1<\@ne\space\gr@ill@value{#1}% + \else + \ifnum#1<10\relax\expandafter\gr@num@i\number#1% + \else + \ifnum#1<100\relax\expandafter\gr@num@ii\number#1% + \else + \ifnum#1<\@m\relax\expandafter\gr@num@iii\number#1% + \else + \ifnum#1<\@M\relax\expandafter\gr@num@iv\number#1% + \else + \ifnum#1<100000\relax\expandafter\gr@num@v\number#1% + \else + \ifnum#1<1000000\relax\expandafter\gr@num@vi\number#1% + \else + \space\gr@ill@value{#1}% + \fi + \fi + \fi + \fi + \fi + \fi + \fi +} +% \end{macrocode} +%\end{macro} +%\begin{macro}{\gr@num@i} +%\begin{macro}{\gr@num@ii} +%\begin{macro}{\gr@num@iii} +%\begin{macro}{\gr@num@iv} +%\begin{macro}{\gr@num@v} +%\begin{macro}{\gr@num@vi} The next six macros transform single decimal digits into Milesian +% symbols. +% The argument to each macro is a single decimal digit; their positional value is determined +% by the calling macro that invokes a different transformation routine for every position. +% to the right of the least significant position there must be the symbol ``anwtonos'', +% similar to an apostrophe, while to the left of each the most significant symbol whose +% value is greater than 999 there must be a ``katwtonos'' symbol, similar to a lowered +% and inverted apostrophe. Zeros are examined in all macros, except the one for ``units'', +% because their value cannot be printed but there still is the possibility that there are +% no more digits higher than zero, so that the anwtonos must be set. +% Macros |\n@vanta| and |\n@vecento| are set by the calling macros so as to be the +% correct lower or upper case `qoppa' or sampi' respectively. +% \begin{macrocode} +\def\gr@num@i#1{% + \ifcase#1\or a\or b\or g\or d\or e% + \or \s@i\or z\or h\or j\fi + \ifnum#1=\z@\else\anw@true\fi\anw@print} +\def\gr@num@ii#1{% + \ifcase#1\or i\or k\or l\or m\or n% + \or x\or o\or p\or \n@vanta\fi + \ifnum#1=\z@\else\anw@true\fi\gr@num@i} +\def\gr@num@iii#1{% + \ifcase#1\or r\or s\or t\or u\or f% + \or q\or y\or w\or \n@vecento\fi + \ifnum#1=\z@\anw@false\else\anw@true\fi\gr@num@ii} +\def\gr@num@iv#1{% + \ifnum#1=\z@\else\katwtonos\fi + \ifcase#1\or a\or b\or g\or d\or e% + \or \s@i\or z\or h\or j\fi + \gr@num@iii} +\def\gr@num@v#1{% + \ifnum#1=\z@\else\katwtonos\fi + \ifcase#1\or i\or k\or l\or m\or n% + \or x\or o\or p\or \n@vanta\fi + \gr@num@iv} +\def\gr@num@vi#1{% + \katwtonos + \ifcase#1\or r\or s\or t\or u\or f% + \or q\or y\or w\or \n@vecento\fi + \gr@num@v} +% \end{macrocode} +%\end{macro} +%\end{macro} +%\end{macro} +%\end{macro} +%\end{macro} +%\end{macro} +% \begin{macrocode} +%</package> +% \end{macrocode} +% +% \Finale +\endinput diff --git a/Master/texmf-dist/source/latex/teubner/teubner.ins b/Master/texmf-dist/source/latex/teubner/teubner.ins new file mode 100644 index 00000000000..e603e76d863 --- /dev/null +++ b/Master/texmf-dist/source/latex/teubner/teubner.ins @@ -0,0 +1,70 @@ +%% +%% This file generates file teubner.sty from file teubner.dtx by means +%% of the LaTeX program docstrip. This program eliminates almost all +%% commented lines thus speeding up the loading of the code. Documentation +%% may be obtained by running LaTeX on the source file teubner.dtx. +%% +%% +%% ---------------------------------------- +%% +%% This system is distributed in the hope that it will be useful, +%% but WITHOUT ANY WARRANTY; without even the implied warranty of +%% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +%% +%% IMPORTANT NOTICE: +%% +%% Copyright 2001-2003 Claudio Beccari +%% All rights reserved. +%% +%% Permission is granted to distribute verbatim copies of this file +%% together with teubner.dtx. +%% +%% No other permissions to copy or distribute this file in any form +%% are granted and in particular no permission to modify its contents. +%% +%% --------------- start of docstrip commands ------------------ +%% +\def\batchfile{teubner.ins} +\input docstrip.tex +\preamble + +Copyright 2001--2004 Claudio Beccari All rights reserved. + + This system is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + + +IMPORTANT NOTICE: + +You are not allowed to change this file. + +You are allowed to distribute this file under the condition that it is +specified in the source file teubner.dtx. + +If you receive only some of these files from someone, complain! + +You are NOT ALLOWED to distribute this file alone. You are NOT +ALLOWED to take money for the distribution or use of either this +file or a changed version, except for a nominal charge for copying +etc. +\endpreamble +\def\batchfile{teubner.dst} % ignored in distribution +\input docstrip.tex % ignored in distribution + +\keepsilent + +\Msg{*** Generating the extension package teubner.sty ***} + +\generateFile{teubner.sty}{t}{\from{teubner.dtx}{package}} + +\ifToplevel{ +\Msg{***********************************************************} +\Msg{*} +\Msg{* Now move teubner.sty where LaTeX can find it } +\Msg{*} +\Msg{* Happy TeXing!} +\Msg{***********************************************************} +} + +\endinput |