% Usage:
%
%   \authorsupport{\CommandName}{Blah, blah, blah.}
%
% When \CommandName is used the first time, it makes a footnote, i.e.,
% puts a footnote mark in the text and puts ``Blah, blah, blah.'' at
% the foot of the page.  Subsequent uses put the same footnote mark in
% the text and do nothing else.
%
% NOTE: To use this with the LLNCS class, you must give a definition
% for \tocauthor (a token register) and you must place the
% \authorsupport commands _inside_ the \author command, as follows:
%
%   \tocauthor{A. Einstein\protect\and K. G\"odel}
%   \author{%
%     \authorsupport{\NSF}{Partial support from NSF grant 1023.}%
%     \authorsupport{\NATO}{Partial support from NATO grant 742389.}%
%     \authorsupport{\McCarthy}{Partial support from McCarthy
%       foundation grant 234.}%
%          A. Einstein\inst{1}\fnmsep\NSF\fnmsep\NATO
%     \and K. G\"odel\inst{1}\fnmsep\NSF\fnmsep\McCarthy}

% We have to save an restore \@makefnmark because the article class
% replaces its definition while handling \maketitle 
% with something that produces zero horizontal space.
\let\orig@makefnmark=\@makefnmark
\newcommand{\authorsupport}[2]
  {\def#1{%
     %\TraceOn
     \begingroup
       \let\@makefnmark=\orig@makefnmark
       \thanks{#2}%
     \endgroup
     \xdef#1{\begingroup
               \let\noexpand\@makefnmark=\noexpand\orig@makefnmark
               \noexpand\footnotemark[\the\c@footnote]%
             \endgroup}}}

% The llncs class has an incredibly stupid definition of \@fnsymbol,
% so we repeat the standard LaTeX definition from ltcounts.dtx here.
\def\@fnsymbol#1{\ensuremath{\ifcase#1\or *\or \dagger\or \ddagger\or
   \mathsection\or \mathparagraph\or \|\or **\or \dagger\dagger
   \or \ddagger\ddagger \else\@ctrerr\fi}}
