[comp.text.tex] Greek.sty

teexdwu@ioe.lon.ac.uk (DOMINIK WUJASTYK) (01/29/91)

In response to a recent query about tilde accents in LaTeX footnotes,
when using Levy's Greek fonts, here is a fix. A bit untidy, but 
it seems to work.

Dominik

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% Greek.sty
% A latex style file for use with Silvio Levy's classical Greek fonts
% (see TUGboat 9.1 (1988), pp. 20 ff.).  The following style file 
% consists of Levy's own greekmac.tex macros unaltered, followed by
% some macros published by R. Wonnenberger and slightly modified
% by D. Wujastyk, which fix a problem in using Greek accents in LaTeX
% footnotes.  See below for more explanation of the footnote stuff.
%
% Usage: \documentstyle[greek]{book} ... as normal.  This makes all the
%        greekmac macros available, and fixes the footnote problem.
% 29 Jan 1991
% contact: D.Wujastyk@ucl.ac.uk
%
\def\ifnextchar#1#2#3{\let\tempe #1\def\tempa{#2}\def\tempb{#3}\futurelet
  \tempc\ifnch}
\def\ifnch{\ifx\tempc\tempe\let\tempd\tempa\else\let\tempd\tempb\fi\tempd}
\def\gobble#1{}
\font\tengr=grreg10
\font\tengrbf=grbld10
\font\tengrtt=grtt10
\def\greekmode{%
\catcode`\<=13
\catcode`\>=13
\catcode`\'=11
\catcode`\`=11
\catcode`\~=11
\catcode`\"=11
\catcode`\|=11
\lccode`\<=`\<%
\lccode`\>=`\>%
\lccode`\'=`\'%
\lccode`\`=`\`%
\lccode`\~=`\~%
\lccode`\"=`\"%
\lccode`\|=`\|%
\tengr\def\bf{\tengrbf}\def\tt{\tengrtt}}
\newcount\vwl
\newcount\acct
\def\lt{<}
\def\gt{>}
{
  \greekmode
  \gdef>{\ifnextchar `{\expandafter\smoothgrave\gobble}{\char\lq\>}}
  \gdef<{\ifnextchar `{\expandafter\roughgrave\gobble}{\char\lq\<}}
  \gdef\smoothgrave#1{\acct=\rq137 \vwl=\lq#1 \dobreathinggrave}
  \gdef\roughgrave#1{\acct=\rq103 \vwl=\lq#1 \dobreathinggrave}
  \gdef\dobreathinggrave{\ifnum\vwl\lt\rq140	%if uppercase
    \char\the\acct\char\the\vwl\else\expandafter\testiota\fi}
  \gdef\testiota{\ifnextchar |{\addiota\doaccent\gobble}{\doaccent}}
  \gdef\addiota{\ifnum\vwl=\lq a\vwl=\rq370
    \else\ifnum\vwl=\lq h\vwl=\rq371 \else\vwl=\rq372 \fi\fi}
  \gdef\doaccent{\accent\the\acct \char\the\vwl\relax}
}

\newif\ifgreek\greekfalse

\def\begingreek{\bgroup\greektrue\greekmode}
\def\endgreek{\egroup}

\let\math=$
{\catcode`\$=13
\gdef\greekdelims{\catcode`\$=13
\def${\ifgreek\endgreek\else\begingreek\fi}
\def\display{\math\math}\def\enddisplay{\math\math}}}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%
% The following macros are taken from Reinhard Wonnenberger's
% article "Chapter Mottos ..." in TUGboat 7(3), 1986, p.179.  I (Dominik
% Wujastyk) have edited out those bits in which Reinhard was altering
% the default values of LaTeX to his own liking.  If you want to do 
% that as well, you might prefer to do it in a separate style file.
%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%
% The following macros avoid the need to read the footnote text as
% a parameter.  They are taken from PLAIN.TEX.
% LaTeX control sequences have been substituted for those from
% PLAIN, and are marked thus: %LATEX
%
% \newinsert\footins
% \def\footnote#1{\let\@sf\empty % parameter #2 (the text) is read later
%   \ifhmode\edef\@sf{\spacefactor\the\spacefactor}\/\fi
%   #1\@sf\vfootnote{#1}}
% \def\vfootnote#1{\insert\footins\bgroup
\def\@footnotetext{\insert\footins\bgroup               %LATEX
  \footnotesize                                         %LATEX
  \interlinepenalty\interfootnotelinepenalty
% \splittopskip\ht\strutbox % top baseline for broken footnotes
  \splittopskip\footnotesep                             %LATEX
  \splitmaxdepth\dp\strutbox \floatingpenalty\@MM
%   \leftskip\z@skip \rightskip\z@skip \spaceskip\z@skip \xspaceskip\z@skip
  \hsize\columnwidth \@parboxrestore                    %LATEX
  \edef\@currentlabel{\csname p@footnote\endcsname      %LATEX
    \@thefnmark}%                                       %LATEX
%   \textindent{#1}%Knuth
% \textindent{\@thefnmark} % yields normal numbers
\@makefnlabel                                           %LATEX
\footstrut\futurelet\next\fo@t}
%
% Format the footnote label inside the footnote; based on book.sty:
\def\@makefnlabel{\@@par \parindent 1em\noindent
   \hbox to 1.8em{\hss$^{\@thefnmark}$}}
%
% From latex.tex, for comparison:
% \long\def\@footnotetext#1{\insert\footins{\footnotesize
%     \interlinepenalty\interfootnotelinepenalty
%     \splittopskip\footnotesep
%     \splitmaxdepth \dp\strutbox \floatingpenalty \@MM
%     \hsize\columnwidth \@parboxrestore
%    \edef\@currentlabel{\csname p@footnote\endcsname\@thefnmark}\@makefntext
%     {\rule{\z@}{\footnotesep}\ignorespaces
%       #1\strut}}}
%
% Rewritten on the basis of plain.tex:
\def\fo@t{\ifcat\bgroup\noexpand\next \let\next\f@@t
  \else\let\next\f@t\fi \next}
\def\f@@t{\bgroup
  \rule{\z@}{\footnotesep}\ignorespaces                 %LATEX
  \aftergroup\@foot\let\next}
\def\f@t#1{#1\@foot}
% \def\@foot{\strut\egroup}
\def\@foot{\strut\egroup                                %LATEX
  \ifhmode\spacefactor\@x@sf\relax\fi}                  %LATEX
\def\footstrut{\vbox to\splittopskip{}}
\skip\footins=\bigskipamount % space added when footnote is present
\count\footins=1000 % footnote magnification factor (1 to 1)
\dimen\footins=8in % maximum footnotes per page

% End of Greek.sty