From: KNAPPEN@VKPMZD.KPH.Uni-Mainz.de (J%org Knappen)
Newsgroups: comp.text.tex
Subject: Summary on: greek in footnotes
Date: 13 Aug 92 17:50:06 GMT
Organization: Info-Tex<==>Comp.Text.Tex Gateway
X-Gateway-Source-Info: Mailing List

Summary on:

Use of classical greek in footnotes

causes a severe problem. I use a font which acesses the accented greek
characters as ligatures, e.g. <~h| gives an eta with spiritus asper,
circumflex and iota subscript. The syntax of the greek is
\begin{greektext} <~h|\end{greektext}, and inside the greektext environment
the catcode of ~ is changes to letter.

This does not work in footnotes: The catcode of the ~ is fixed at the
moment the footnote is read and cannot be changed any more.

Therefore I tried to redefine the active tilde in the greektext environment
to be the ASCII character tilde. This approach fails, because \footnote
expands the definition of ~ before it is changed. \protect'ing the ~ does
not help either, because it inhibits the ligature building.

Is there a solution of this problem?

Yours, J"org Knappen.
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-
There are several approaches to the problem, thanks to all the people answering
the question.

  The first is to use ``brute force'' i.e. to set the catcodes of ><`'~ and |
  to letter (11) everywhere. There are some side effects one has to be aware of:
  \` etc. are control words now instead of control sequnces, therefore one has
  to replace \`e by \`{e} and so on.
  The ~ in its original meaning is no longer available.

  The better one is to redefine the \footnote command such that it allows the
  altering of catcodes. I received the following
%From: Joerg-Martin Schwarz <@MVS.GSI.DE:UPH508@DDOHRZ11.BITNET>

\makeatletter
\long\def\@footnotetext{\insert\footins\bgroup\reset@font\footnotesize
%% erased  '#1'   here^
    \interlinepenalty\interfootnotelinepenalty
    \splittopskip\footnotesep
    \splitmaxdepth \dp\strutbox \floatingpenalty \@MM
    \hsize\columnwidth \@parboxrestore
   \edef\@currentlabel{\csname p@footnote\endcsname\@thefnmark}\@makefntext
    \bgroup\rule{\z@}{\footnotesep}\ignorespaces
%%%%  #1\strut\egroup\egroup}  replaced by:
      \futurelet\next\fo@t}
\def\@foot{% Will be moved after the argument #1 by an \aftergroup!
     \strut\egroup\egroup}%%                              (See below '<='

%The mechanism of parsing the following argument has been
%copied from plain.tex
%\def\vfootnote#1{\insert\footins\bgroup
%  \interlinepenalty\interfootnotelinepenalty
%  \splittopskip\ht\strutbox % top baseline for broken footnotes
%  \splitmaxdepth\dp\strutbox \floatingpenalty\@MM
%  \leftskip\z@skip \rightskip\z@skip \spaceskip\z@skip \xspaceskip\z@skip
%  \textindent{#1}\footstrut\futurelet\next\fo@t}
%%%%%%% It is these commands^^^^^^^^^^^^^^^^^^^^
%%%%%%% that take care of parsing the following argument
%% check if argument is x or {xxxxxxxx}:
\def\fo@t{\ifcat\bgroup\noexpand\next \let\next\f@@t
  \else\let\next\f@t\fi \next}
\def\f@@t{\bgroup\aftergroup\@foot\let\next}%%     <==
\def\f@t#1{#1\@foot}
%\def\@foot{\strut\egroup}

\makeatother
%This time it works
It is all easy\footnote{I just changed some lines in the command
        definition of |\@footnotetext|}!!!

   Another suggestion was to define commands like \asper, \grave etc to produce
  the spiritus and accents in footnotes.
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-
Newsgroups: comp.text.tex