% D R F T C I T E . S T Y % % version 3.4 (Jul 1994) % % Print the tags instead of the numbers for \cite. % See also CITE.STY and OVERCITE.STY. % % Copyright (C) 1989,1991,1992,1993,1994 by Donald Arseneau % These macros may be freely transmitted, reproduced, or modified for % non-commercial purposes provided that this notice is left intact. % % Use the label instead of the number for citations, as if you had used % \bibitem[name]{name}..., but write the proper citation number to the aux % file. Ignore spaces before the \cite, inserting an ordinary interword % space. Also ignore spaces after commas in the input list. This package % is particularly useful for draft (draught) versions of documents that % will eventually use cite.sty or overcite.sty. % % This also keeps track of the order of first-citations in the text for % easy sorting (in lieu of BibTeX). To omit this counting... % in LaTeX 2.09: declare \nocitecount before the first \cite; or, for % a more permanent removal, comment-out the lines ending with %%o below, % and omit everything following the line that begins with %%o. % in LaTeX2e: specify \usepackage[nocitecount]{drftcite}, or perform the % editing described above. % % Drftcite keeps track of which references were cited, and issues warnings % for bibliography items that were never cited in the text. % % The characters <>|_{}\ are not present in the roman fonts, so if you use % them in identifiers, they will have to be typeset in typewriter style. % To do this,... % with LaTeX 2.09: un-comment two lines in the definition of \@citeverb. % with LaTeX2e: specify \usepackage[tt]{drftcite} % % `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... % for LaTex 2.09: edit: "delete this line to issue warnings always" % for LaTeX2e: specify \usepackage[verbose]{drftcite} % % This version of drftcite can co-exist with chapterbib.sty (version 1.4 % or later). % ........................ % \citen gives the citation tag in the text and writes the aux file entry. % Use \citen to give citation name without the other formatting; e.g., % "See also ref.~\citen{junk}" gives "See also ref. junk". % \edef\citen{\noexpand\protect \expandafter\noexpand\csname citen \endcsname} \@namedef{citen }#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\@citea{}% \@for \@citeb:=\@tempa\do {\@citea \@ifundefined {b@\@citeb\@extra@b@citeb}% {{\bf \@citeverb{\@citeb}?}%% issue warning only for first mis-use: \@dftc@ifund {DCN@\@citeb\@extra@b@citeb}{% delete this line to issue warnings always \@warning {Citation `\@citeb' on page \thepage\space undefined}% }{}% delete this line to issue warnings always }% else, defined {\hbox{\@citeverb{\@citeb}}}% \def\@citea{,\ }\@advancecitecount }} % for ignoring spaces in the input: \def\@ignspaftercomma#1, {\ifx\@end#1\@empty\else #1,\expandafter\@ignspaftercomma\fi} \def\@ignendcommas,#1,\@end{#1} % Make \cite robust. % \edef\cite{\noexpand\protect\expandafter\noexpand\csname cite \endcsname} \@namedef{cite }{\@ifnextchar [{\@tempswatrue\@citex}{\@tempswafalse\@citex[]}} % Make \@citex refer to \citen: % (Put a single space before the output) % \def\@citex[#1]#2{\leavevmode\unskip \ \@cite{\citen{#2}}{#1}\spacefactor\@m}% % % Give the citation tag as the label (even if another label is specified) % \def\@lbibitem[#1]#2{\global\@HighCite\z@ \item[\@biblabel{% \@ifundefined{DCN@#2\@extra@b@citeb}{\@warning {Reference `#2' on page \thepage\space was never cited}}{}% \DC@llap{$^{\@nameuse{DCN@#2\@extra@b@citeb}}$\ \ }%%o \@citeverb{#2}}\hfil]\if@filesw {\def\protect##1{\string ##1\space}% \immediate\write\@auxout{\string\bibcite{#2}{#1}}}\fi\ignorespaces} \def\@bibitem#1{\refstepcounter{\@listctr}\@lbibitem[\the\value{\@listctr}]{#1}} % make the special characters in the citation tag printable % \def\@citeverb#1{% {\@dftc@tt {% to get characters <>_|{} \expandafter \expandafter \expandafter \@gobble % do \csname, \string, ... \expandafter \string\csname#1\endcsname}% % \@gobble, in that order. }}% % \@extra@b@citeb is a hook for other style files to further specify % citations; for example, to number by chapter. % In case no fancy bib package (chapterbib) defines it: \@ifundefined{@extra@b@citeb}{\def\@extra@b@citeb{}}{} %------------------------------------ % Handle optional variations: \def\@dftc@tt{} % use normal text by default % \def\@dftc@tt{\tt}% uncomment this line to make \tt the default \def\nocitecount{% \def\@advancecitecount{\global\@namedef{DCN@\@citeb\@extra@b@citeb}{}}% \let\DC@llap\@gobble} \nocitecount % in case what follows gets removed \newcount\@HighCite \global\@HighCite\z@ \let\@dftc@ifund\@ifundefined \@ifundefined{DeclareOption}{}% { \DeclareOption{nocitecount}{\endinput} \toks@={\def\@dftc@ifund#1#2#3{#2}} \DeclareOption{verbose}{\the\toks@} \DeclareOption{tt}{\def\@dftc@tt{\tt}} \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\@advancecitecount{\@ifundefined {DCN@\@citeb\@extra@b@citeb}% {\global\advance\@HighCite\@ne \expandafter\xdef\csname DCN@\@citeb\@extra@b@citeb\endcsname{\the\@HighCite}}% {}} % % 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 \@advancecitecount (keeps count of the citations). % \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@auxcite{#1}}}% \endgroup\fi \@dftc@include{#1}} % \def\@dftc@auxcite#1{\begingroup % disable everything but \citation \let\bibcite\@gobbletwo \let\newlabel\@gobbletwo \let\@writefile\@gobbletwo \let\bibdata\@gobble \let\bibstyle\@gobble % already \@gobble normally \def\citation##1{\@for\@citeb:=##1\do {\@advancecitecount}}% \makeatletter\@input{#1.aux}\endgroup } \endinput % % [This file is named "drftcite" because "draftcite" is too long a name for % some computers. Sorry to those who use the spelling "draught." I could % have abbreviated the name by selecting the shared letters in "draft" and % "draught," but "dratcite" somehow conveys the wrong meaning.] % % Version 1991: Ignore spaces after commas in the parameter list. Create % \nocitecount to turn off counting the order of citations. % Version 3.1 (1992): protect \cite and \citen. (There is no version 3.0) % Version 3.2 (1993): Supress repetitions of warning messages. Include % \@extra@b@citeb hook for chapterbib.sty. Make \include handle case that % \cp@FOO was not defined. % Version 3.3 (1993): Fix \nocitecount. Change printing of undefined refs. % Version 3.4 (1994): LaTex2e support, including spaces in protected command % names; better chapterbib support. % % Send problem reports to asnd@Reg.triumf.ca % % Test integrity of file: % brackets: round, square, curly, angle: () [] {} <> % backslash, slash, vertical, at, dollar, and: \ / | @ $ & % hat, grave, acute (apostrophe), quote, tilde, under: ^ ` ' " ~ _