%% drftcono.sty, Version 1.2
   %% Copyright 1996, 1999 Stefan Schulz

   % This program can redistributed and/or modified under the terms
   % of the LaTeX Project Public License Distributed from CTAN
   % archives in directory macros/latex/base/lppl.txt; either
   % version 1 of the License, or  any later version.
%............................................
%
%     A T T E N T I O N!
%
%     This file is a modification of
%
%     D R F T C I T E . S T Y
%
%     version 3.5  (Jan 1995)
%
%     Print the tags instead of the numbers for \cite.
%     See also CITE.STY and OVERCITE.STY.
%
%     Copyright (C) 1989,1991-1995 by Donald Arseneau
%     These macros may be freely transmitted, reproduced, or modified
%     provided that this notice is left intact.
% ........................
%    All occurrences of cite were transformed into ffcite
%
%
%   Handle formatting hooks:
%   \ffciteform,\ffciteleft,\ffciteright,\ffcitemid,\ffcitepunct
%
%   Set defaults:


%   [ on the left.
\@ifundefined{ffciteleft}{\let\ffciteleft=[}{}


%   ] on the right:
\@ifundefined{ffciteright}{\let\ffciteright=]}{}


%   , (comma space) before note
\@ifundefined{ffcitemid}{\def\ffcitemid{,\penalty\@lowpenalty\ }}{}

%   , (comma space) between entries
\@ifundefined{ffcitepunct}{
% Default: To put space after the comma.  [nospace] eliminates the space
   \def\ffcitepunct{,\penalty\@lowpenalty\ }%
  }{}

%   Each citation tag left as-is:
\@ifundefined{ffciteform}{\def\ffciteform{}}{}

%   Do not repeat warnings.  [verbose] reverses
\let\oc@verbo\relax

%  \ffciten gives the citation tag in the text and writes the aux file entry.
%  Use \ffciten to give citation name without the other formatting; e.g.,
%  "See also ref.~\ffciten{junk}" gives "See also ref. junk".
%
\edef\ffciten{\noexpand\protect \expandafter\noexpand\csname ffciten \endcsname}

\@namedef{ffciten }#1{%
\edef\@tempa{\@ignspaftercomma,#1, \@end, }% ignore spaces in parameter list.
\edef\@tempa{\expandafter\@ignendcommas\@tempa\@end}%
\if@filesw \immediate\write \@auxout {\string\citation {\@tempa}}\fi
\def\@ffcitea{}%
\@for \@ffciteb:=\@tempa\do {\@ffcitea
  \@ifundefined {b@\@ffciteb\@extra@b@ffciteb}%
    {{\bf \@ffciteverb{\@ffciteb}?}%% issue warning only for first mis-use:
     \@dftc@ifund {DCN@\@ffciteb\@extra@b@ffciteb}{% delete to warn always
     \@warning {Citation `\@ffciteb' on page \thepage\space undefined}%
     }{}% delete to warn always
    }% else, defined
    {\@dftc@hbox{\@ffciteverb{\@ffciteb}}}%
  \let\@ffcitea\ffcitepunct\@advanceffcitecount
  }}

% for ignoring spaces in the input:
\def\@ignspaftercomma#1, {\ifx\@end#1\@empty\else
   #1,\expandafter\@ignspaftercomma\fi}
\def\@ignendcommas,#1,\@end{#1}

% Make \ffcite robust.
%
\edef\ffcite{\noexpand\protect\expandafter\noexpand\csname ffcite \endcsname}

\@namedef{ffcite }{\@ifnextchar [{\@tempswatrue\@ffcitex}{\@tempswafalse\@ffcitex[]}}

%  Make \@ffcitex refer to \ffciten:
%  (Put a single space before the output)
%
\def\@ffcitex[#1]#2{\@ffcite{\ffciten{#2}}{#1}}%

%  Replacement for \@ffcite which defines the formatting normally done
%  around the citation list.  Adjust the spacing before the citation:
%  if no space or if there is extra space due to some punctuation, then
%  change to one inter-word space.  The way to change this is by changing
%  \ffciteleft, \ffcitemid, and \ffciteright; but in extreme cases it might be
%  necessary to redefine the whole macro.
%

%\def\@ffcite#1#2{\leavevmode
%  \@tempskipa\lastskip \edef\@tempa{\the\@tempskipa}\unskip
%  \ifx\@tempa\@zero@skip \spacefactor1001 \fi % if no space before, set flag
%  \ifnum\spacefactor>\@m \ \else \hskip\@tempskipa \fi
%  \ffciteleft{#1\if@tempswa \ffcitemid #2\fi}\ffciteright
%  \spacefactor\@m % punctuation in note doesn't affect outside
%}
\edef\@zero@skip{\the\z@skip}
%
%  Give the citation tag as the label (even if another label is specified)
%
\def\@lffbibitem[#1]#2{\global\@Highffcite\z@
  \item[\@ffbiblabel{\@ifundefined{DCN@#2\@extra@b@ffciteb}{\@warning
    {Reference `#2' on page \thepage\space was never ffcited}}{}%
   \DC@llap{$^{\@nameuse{DCN@#2\@extra@b@ffciteb}}$\ }%%o
   \@ffciteverb{#2}}\hfil]\if@filesw{\def\protect##1{\string ##1\space}%
   \immediate\write\@auxout{\string\ffbibcite{#2}{#1}}}\fi\ignorespaces}

\def\@ffbibitem#1{\refstepcounter{\@listctr}\@lffbibitem[\the\value{\@listctr}]{#1}}

%  make the special characters in the citation tag printable
%
\def\@ffciteverb#1{%
 {\ffciteform{% to get characters <>_|{}: \ffciteform->\tt
   \expandafter \expandafter \expandafter \@gobblethree %  do \csname, \string,
   \expandafter \string\csname b@#1\endcsname}%     %  \@gobble, in that order.
}}%

\def\@gobblethree#1#2#3{}

%   \@extra@b@ffciteb is a hook for other style files to further specify
%   citations; for example, to number by chapter.
%   In case no fancy ffbib package (chapterffbib) defines it:

\@ifundefined{@extra@b@ffciteb}{\def\@extra@b@ffciteb{}}{}

%------------------------------------
%   Handle optional variations:

\def\noffcitecount{%
  \def\@advanceffcitecount{\global\@namedef{DCN@\@ffciteb\@extra@b@ffciteb}{}}%
  \let\DC@llap\@gobble}
\noffcitecount % in case what follows gets removed

\newcount\@Highffcite \global\@Highffcite\z@
\let\@dftc@ifund\@ifundefined
\let\@dftc@hbox\hbox

\@ifundefined{DeclareOption}{}%
{ \DeclareOption{noffcitecount}{\endinput}
  \toks@={\def\@dftc@ifund#1#2#3{#2}}
  \DeclareOption{verbose}{\the\toks@}
  \DeclareOption{tt}{\def\ffciteform{\tt}}
  \DeclareOption{nospace}{\def\ffcitepunct{,\penalty\z@}}
  \DeclareOption{space}{\def\ffcitepunct{,\ }}
  \DeclareOption{breakffcites}{\let\@dftc@hbox\relax}
  \ProvidesPackage{drftcono}[1995/01/23 \space  v 3.5]
  \ProcessOptions }

% The rest deals only with counting, and can be removed if counting is never
% desired.

\let\DC@llap=\llap
%
%     count the citations as they appear in the text
%
\def\@advanceffcitecount{\@ifundefined {DCN@\@ffciteb\@extra@b@ffciteb}%
{\global\advance\@Highffcite\@ne
\expandafter\xdef\csname DCN@\@ffciteb\@extra@b@ffciteb\endcsname{\the\@Highffcite}}%
{}}
%
%  The remainder handles (counting over) input files skipped by \includeonly.
%  It adds code to LaTeX's \include to re-read the .aux file checking the
%  \citation commands.
%
%  For included files that are skipped (not listed by \includeonly)
%  input the .aux file ignoring all commands but \citation, which
%  does \@advanceffcitecount (keeps count of the citations).  This adds
%  a requirement for other style files that add commands to the .aux
%  file:  the commands must be safe to execute an extra time.
%
\let\@dftc@include\include
\def\include#1{\relax
 \ifx\DC@llap\llap \begingroup % do counting only if wanted
  \@ifundefined{cp@#1}{}% don't do if .aux file not there!
   {\toks@\expandafter\expandafter\expandafter{\csname cp@#1\endcsname}%
   \expandafter\xdef\csname cp@#1\endcsname{\the\toks@
    \noexpand\@dftc@auxffcite{#1}}}%
 \endgroup\fi \@dftc@include{#1}}
%
\def\@dftc@auxffcite#1{\begingroup % disable everything but \citation
  \let\ffbibcite\@gobbletwo \let\newlabel\@gobbletwo \let\@writefile\@gobbletwo
  \let\ffbibdata\@gobble \let\ffbibstyle\@gobble % already \@gobble normally
  \def\citation##1{\@for\@ffciteb:=##1\do {\@advanceffcitecount}}%
  \makeatletter\@input{#1.aux}\endgroup
}
\endinput

% FROM
%     D R F T C I T E . S T Y
%
%     version 3.5  (Jan 1995) , adopted to drftcono
%
%  This package makes LaTeX use the identifying label instead of the number
%  for citations, as if the ffbibliography had entries like \ffbibitem[name]{name}
%  but LaTeX writes the proper citation number to the aux file for later runs.
%  Spaces before the \ffcite command are ignored, and an ordinary interword
%  space is used.  This package is particularly useful for draft (draught)
%  versions of documents.
%
%
%  Drftffcite keeps track of which references were ffcited, and issues warnings
%  for ffbibliography items that were never ffcited in the text.
%
%  This package also keeps track of the order of first-citations in the text
%  for easy sorting.  To omit this counting...
%  LaTeX 2.09: declare \noffcitecount before the first \ffcite; or, for
%     a more permanent removal, comment-out the lines ending with %%o
%     below, and omit everything following the line that begins with %%o.
%  LaTeX2e: specify \usepackage[noffcitecount]{drftffcite}, or perform the
%     editing described above.
%
%  The characters <>|_{}\ are not present in the cm roman fonts, so if you use
%  them in identifiers, they will have to be typeset in typewriter style.
%  To do this,...
%  LaTeX 2.09: insert \renewcommand\ffciteform{\tt} in your preamble
%  LaTeX2e: specify \usepackage[tt]{drftffcite}
%
%  `Citation...undefined' warnings are only given once per undefined
%  citation name.  In the text, missing numbers are represented with a
%  bold `name?'.   To restore multiple warnings...
%  LaTex 2.09: edit this file, removing the lines with the comments:
%      "delete to warn always"
%  LaTeX2e: specify \usepackage[verbose]{drftffcite}
%
%  Other options for \usepackage are:
%  [space]    -  Separate printed names with comma-space (Default).
%  [nospace]  -  Print just a comma (not comma-space) after each name.
%  [breakffcites]  - Allow each printed name to be broken (hyphenated).
%
%  There are several commands that you may redefine (using \renewcommand)
%  to change the formatting of citation lists:
%
%   command       function                   default
%  ----------    -----------------------    ----------------------------
%  \ffciteform     reformats every entry      nothing
%  \ffcitepunct    printed between numbers    comma + space
%  \ffciteleft     left delimiter of list     [
%  \ffciteright    right delimeter of list    ]
%  \ffcitemid      printed before note        comma + space
%
%
% Send problem reports to stefan.schulz@tu-bs.de
%