You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 
tex-compiler/texmf-dist/tex/latex/cite/cite.sty

665 lines
26 KiB

% C I T E . S T Y
%
% version 5.5 (Feb 2015)
%
% Compressed, sorted lists of on-line or superscript numerical citations.
% see also drftcite.sty (And the stub overcite.sty)
%
% Copyright (C) 1989-2015 by Donald Arseneau
% These macros may be freely used, transmitted, reproduced, or modified
% provided that this notice is left intact.
%
% Instructions in cite.pdf and follow \endinput.
% ------------------------------------
% First, ensure that some catcodes have the expected values
\edef\citenum{% temporary def to restore funny codes later
\catcode\string`\string ` \the\catcode\string`\`
\catcode\string`\string ' \the\catcode\string`\'
\catcode\string`\string . \the\catcode\string`\.
\catcode\string`\string = \the\catcode\string`\=
\catcode\string`\string _ \the\catcode\string`\_
\catcode\string`\string : \the\catcode\string`\:}
% set codes:
\catcode\string`\` 12
\catcode`\' 12
\catcode`\. 12
\catcode`\= 12
\catcode`\_ 8 % This is UNusual
\catcode`\: 12
% Prepare for optional variations:
% [ verbose, nospace, space, ref, nosort, noadjust, superscript, nomove ],
% \citeform,\citeleft,\citeright,\citemid,\citepunct,\citedash
%
% Set defaults first:
% [ on the left. Option [ref] does: [Ref. 12, note]
\providecommand\citeleft{[}
% ] on the right:
\providecommand\citeright{]}
% , (comma space) before note
\providecommand\citemid{,\penalty\citemidpenalty\ }
% , (comma thin-space) between entries; [nospace] eliminates the space
\providecommand\citepunct{,\penalty\citepunctpenalty%
\hskip.13emplus.1emminus.1em\relax}%
% -- (endash) designating range of numbers:
% (using \hbox avoids easy \exhyphenpenalty breaks)
\providecommand{\citedash}{\hbox{--}\penalty\citepunctpenalty}
% Default line-breaking penalties. Use \mathchardef instead of count registers
\mathchardef\citeprepenalty=\@highpenalty
\mathchardef\citemidpenalty=\@medpenalty
\mathchardef\citepunctpenalty=\@m
% Each number left as-is:
\providecommand\citeform{}
% punctuation characters to move for overcite
\providecommand{\CiteMoveChars}{.,:;}
% font selection for superscript numbers
\providecommand\OverciteFont{\fontsize\sf@size\baselineskip\selectfont}
% [verbose] is no-op. Default is to repeat warnings anyway.
%\let\oc@verbo\relax
%----------------------
% \citen uses \@nocite to ignore spaces after commas, and write the aux file
% \citation. \citen then loops over the citation tags, using \@make@cite@list
% to make a sorted list of numbers. Finally, \citen executes \@citelist to
% compress ranges of numbers and print the list. \citen can be used by itself
% to give citation numbers without the brackets and other formatting; e.g.,
% "See also ref.~\citen{junk}."
% Make internal version called \@cite@n just in case packages put hooks in
% \citen
%
\DeclareRobustCommand\citen{\@cite@n}
\def\@cite@n#1{%
\begingroup
\let\@safe@activesfalse\@empty
\@nocite{#1}% ignores spaces, writes to .aux file, returns #1 in \@no@sparg
\@tempcntb\m@ne % \@tempcntb tracks highest number
\let\@celt\delimiter % an unexpandable, but identifiable, token
\def\@cite@list{}% % empty list to start
\let\@citea\@empty % no punctuation preceding first
\@for \@citeb:=\@no@sparg\do{\@make@cite@list}% make a sorted list of numbers
% After sorted citelist is made, execute it to compress citation ranges.
\@tempcnta\m@ne % no previous number
\mathchardef\@cite@incr\z@ % no previous sequence
\let\@h@ld\@empty % nothing held from list yet
\let\@celt\@compress@cite \@cite@list % output number list with compression
\@h@ld % output anything held over
\endgroup
\@restore@auxhandle
}
% For each citation, check if it is defined. If so, then extract plain
% value to \@B@citeB (without hyperlink info). Then,
% If it is a pure number, add it to cite list
% Otherwise, try extracting prefix and suffix characters.
%
\def\@make@cite@list{%
\expandafter\ifx\csname b@\@citeb\@extra@b@citeb
\endcsname\relax % undefined: output ? and warning
\@citea {\bfseries ?}\let\@citea\citepunct \G@refundefinedtrue
\@warning {Citation `\@citeb' on page \thepage\space undefined}%
%% always verbose \oc@verbo \global\@namedef{b@\@citeb\@extra@b@citeb}{?}%
\else % defined
\@cite@nonhyper@sanitize
\@addto@cite@list
\fi}
\def\@nonhyper@@link [#1]#2#3#4{#4}
\def\@cite@nonhyper@sanitize{\begingroup
\let\hyper@@link\@nonhyper@@link
\protected@xdef\@B@citeB{\csname b@\@citeb\@extra@b@citeb \endcsname}%
\endgroup}
\def\@cite@out#1{\citeform{\csname #1\endcsname}}
% Add entry to the list of citations. This default definition sorts pure
% numbers as well as numbers with other single-character tags. There
% is presently no other definition than this default, but features may
% be added later.
%
\def\@addto@cite@list{%
\@cite@posnumtest\@B@citeB
{\@addnumto@cite@list\@B@citeB}% a positive number, put in list
{\@cite@combo@num}% not a pure positive number, test for combo forms
}
% With this \@cite@combo@num we delve into handling of numbers combined
% with non-numeric tags. The specific command name \@cite@combo@num can
% serve as a hook for redefinition, perhaps to give simple non-sorting
% for anything not a pure number, or to attempt even more complicated
% sorting, say dictionary sorting of textual citations. The following
% definition leads down the road of sorting mostly-numbers but with
% optional single-character prefix and/or suffix.
\def\@cite@combo@num{\expandafter\@cite@try@combo\@B@citeB\delimiter}
% First of many stages for sorting numbers with prefix/suffix characters.
% Test for a leading token of category letter or other (appropriate for
% all combination types).
%
\def\@cite@try@combo{%
\@if@printable@char{\@cite@try@prefix}{\@cite@gobbledump@now}}
% First token is good, so test for a character prefix before a number.
% Process first token, either a first digit or a prefix
%
\def\@cite@try@prefix#1{% #1 is first character of citation
\@cite@posnumtest{#1}% a digit else prefix
{\@cite@add@letnumD {\z@}#1}% no prefix character (use zero)
{\@cite@add@letnumC {`#1}}% prefix char; use the char code
}
% Examine character after prefix to ensure it is a number. First must
% ensure it is a plain character token
%
\def\@cite@add@letnumC#1{\@if@printable@char%
{\@cite@add@letnumD{#1}}% continue with prefix (perhaps zero)
{\@cite@gobbledump@now}% else abandon fancy processing and output citation
}
% Save prefix (if any) numerically in \@tempcnta, test next character for being
% a digit, then collect main number
%
\def\@cite@add@letnumD#1#2{% #1 = numeric code for prefix, #2 = next char
\@tempcnta=#1\multiply\@tempcnta 16384 %
\@cite@posnumtest{#2}% if next char is a digit, continue with number:
{\afterassignment\@cite@add@letnumE \advance\@tempcnta #2}%
{\@cite@gobbledump@now}% No number so just output citation
}
% Have collected number. Now look for a non-number suffix or separator.
%
\gdef\@cite@add@letnumE{%
\multiply\@tempcnta\@cclvi
\@if@printable@char{% a suffix or separator given
\@cite@add@letnumF
}{% else, maybe nothing remains
\ifx\@let@token\delimiter % use number, and remove trailing \delimiter
\@citeaddcnta \expandafter\@gobble
\else % non-printable char found, so abandon fancy processing
\expandafter\@cite@gobbledump@now
\fi
}}
% Have everything up to a suffix or separator character. Check
% following to see which. Three possibilites are (1) nothing =>
% a suffix; (2) number => separator-number; (3) other => garbage.
%
\def\@cite@add@letnumF#1#2\delimiter{% #1 = suffix/separator #2=rest
\advance\@tempcnta`#1\relax
\@cite@posnumtest{#2}{\@cite@add@numsepnum{#2}}% handle as num sep num
{% else...
\ifx\delimiter#2\delimiter % nothing left, so #1 is a suffix
\@citeaddcnta
\else % some non-number; dump it
\@cite@dump@now
\fi
}}
% Handle citation as number separator number.
% Yes, there is a bug that the list 1.1,1.258,1.515 will be compressed as
% 1.1-1.515; so sue me.
\def\@cite@add@numsepnum#1{% #1 = last number
\ifnum\@tempcnta<262144 % OK numeric range
\multiply\@tempcnta 4096
\advance\@tempcnta #1 % num,sep,num have maximum numbers: 1023, 255, 4095
\@citeaddcnta
\else % out of range, treat as raw string
\@cite@dump@now
\fi}
% This is our bail-out when the citation cannot be processed as
% [prefix]number[suffix] or number[sep]number: it outputs the citation
% immediately (unsorted) and consumes tokens to the \delimiter tag used
% as an end-marker
%
\def\@cite@gobbledump@now#1\delimiter{\@cite@dump@now}%
\def\@cite@dump@now{%
\@citea \@cite@out{b@\@citeb\@extra@b@citeb}\let\@citea\citepunct}
% add an entry to the sorted list, using its sort-number \@tempcnta, and
% also saving the plain-text value \@B@citeB as well as the csname
% b@\@citeb\@extra@b@citeb. (The \@B@citeB is actually not used, unless
% somebody extends the definitions.)
\def\@citeaddcnta{%
\ifnum \@tempcnta>\@tempcntb % new highest, add to end (efficiently)
\edef\@cite@list{\@cite@list
\@celt{\number\@tempcnta}{\@B@citeB}{b@\@citeb\@extra@b@citeb}}%
\@tempcntb\@tempcnta
\else % other sortable value: insert appropriately
\edef\@cite@list{\expandafter\@sort@celt\@cite@list \@gobble.\@gobble.}%
\fi
}
% add pure numeric entry to cite list, with sorting
\def\@addnumto@cite@list#1{%
\@tempcnta#1\relax
\multiply\@tempcnta\@cclvi
\@citeaddcnta}
% \@sort@celt inserts number (\@tempcnta) into list of \@celt{num}{text}{tag}
% (#1{#2}{#3}{#4})
% \@celt must not be expandable, and the arguments must not be fragile.
% List should end with four vanishing tokens.
%
\def\@sort@celt#1#2#3#4{\ifx \@celt #1% parameters are \@celt{num}{text}{tag}
\ifnum #2<\@tempcnta % number goes later in list
\@celt{#2}{#3}{#4}%
\expandafter\expandafter\expandafter\@sort@celt % continue
\else % number goes here
\@celt{\number\@tempcnta}{\@B@citeB}{b@\@citeb\@extra@b@citeb}%
\@celt{#2}{#3}{#4}% stop comparing
\fi\fi}
% Check if each number follows previous and can be put in a range.
% Since there are suffix characters allowed, there are two kinds of
% ranges: ranges of consecutive pure numbers with no (or same)
% suffix, or ranges of the same number with consecutive suffix
% characters.
%
\def\@compress@cite#1#2#3{%% This is executed for each number
\ifnum\@cite@incr=\z@ % no consecutives pending. Try both types of sequence
\advance\@tempcnta\@cclvi % Now \@tempcnta has incremented number
\ifnum #1=\@tempcnta % Start a sequence of consecutive numbers
\expandafter\def\expandafter\@h@ld\expandafter{\@citea\@cite@out{#3}}%
\mathchardef\@cite@incr=\@cclvi
\else % next try increment of suffix
\advance\@tempcnta-\@cclv % Now \@tempcnta has incremented suffix
\ifnum #1=\@tempcnta % Start a sequence of suffix increments
\expandafter\def\expandafter\@h@ld\expandafter{\@citea\@cite@out{#3}}%
\mathchardef\@cite@incr=\@ne
\else % it is no type of sequence -- emit number (nothing is held)
\@citea \@cite@out{#3}%
\fi
\fi
\else % a sequence is running
\advance\@tempcnta\@cite@incr % Now \@tempcnta is next in sequence
\ifnum #1=\@tempcnta % Number follows previous--hold on to it
\def\@h@ld{\citedash \@cite@out{#3}}%
\else % non-successor -- dump what's held and do this one
\@h@ld \@citea \@cite@out{#3}%
\let\@h@ld\@empty
\mathchardef\@cite@incr=\z@
\fi
\fi
\@tempcnta#1\let\@citea\citepunct
}
% Ordinary on-line \cite command
\DeclareRobustCommand{\cite}{%
\@ifnextchar[{\@tempswatrue\@citex}{\@tempswafalse\@citex[]}}
% Do \cite command on line.
%
\def\@citex[#1]#2{\@cite{\@cite@n{#2}}{#1}}
\def\@cite#1#2{\leavevmode \cite@adjust
\citeleft{#1\if@tempswa\@safe@activesfalse\citemid{#2}\fi
\spacefactor\@m % punctuation in note doesn't affect outside
}\citeright
\@restore@auxhandle}
% Put a penalty before the citation, and adjust the spacing: if no space
% already or if there is extra space due to some punctuation, then change
% to one inter-word space.
%
\def\cite@adjust{\begingroup%
\@tempskipa\lastskip \edef\@tempa{\the\@tempskipa}\unskip
\ifnum\lastpenalty=\z@ \penalty\citeprepenalty \fi
\ifx\@tempa\@zero@skip \spacefactor1001 \fi % if no space before, set flag
\ifnum\spacefactor>\@m \ \else \hskip\@tempskipa \fi
\endgroup}
\edef\@zero@skip{\the\z@skip}
% \nocite: This is changed to ignore *ALL* spaces and be robust. The
% parameter list, with spaces removed, is `returned' in \@no@sparg, which
% is used by \@cite@n (\citen).
%
\DeclareRobustCommand\nocite[1]{%
\@bsphack \@nocite{#1}%
\@for \@citeb:=\@no@sparg\do{\@ifundefined{b@\@citeb\@extra@b@citeb}%
{\G@refundefinedtrue\@warning{Citation `\@citeb' undefined}%
%%\oc@verbo \global\@namedef{b@\@citeb\@extra@b@citeb}{?}
}{}}%
\@esphack}
\def\@nocite#1{\begingroup\let\protect\string% normalize active chars
\xdef\@no@sparg{\expandafter\@cite@ignsp#1,\: ,\:}% remove spaces
\if@filesw \immediate\write\@newciteauxhandle % =\@auxout, except with multibib
{\string\citation {\@no@sparg}}\fi
\endgroup}
% remove spaces before and after commas. One level of braces is also
% stripped, so an item {a,b} is changed to two a and b.
%
\def\@cite@ignsp#1 ,#2{\ifx\:#2\@empty
\expandafter\@cite@ignsp@\romannumeral-`\:\else
\expandafter\@cite@ignsp \fi #1,#2}
\def\@cite@ignsp@#1,#2{#1\ifx\:#2\@empty\expandafter\@gobblethree
\else,\expandafter\@cite@ignsp@\fi #2}
\long\def\@gobblethree #1#2#3{}
% \@if@fillglue{glue}{true}{false}
\begingroup
\catcode`F=12 \catcode`I=12\catcode`L=12
\lowercase{\endgroup
\def\@if@fillglue#1{%
\begingroup \skip@#1\relax
\expandafter\endgroup\expandafter
\@is@fil@ \the\skip@ \relax\@firstoftwo FIL\relax\@secondoftwo\@nil}
\def\@is@fil@ #1FIL#2\relax#3#4\@nil{#3}
}
% Test if next token is a char of "printable" categories other or letter or
% active. Syntax:
% \@if@printable@char {do if printable}{do if not printable}<char>
%
\def\@if@printable@char#1#2{%
\def\reserved@a{#1}%
\def\reserved@b{#2}%
\futurelet\@let@token\@test@print@char
}
% Note side-effect of redefining \reserved@a and \reserved@b
\def\@test@print@char{%
\ifnum
\ifcat\noexpand\@let@token A1\fi
\ifcat\noexpand\@let@token 11\fi
\ifcat\noexpand\@let@token \noexpand~1\fi%
0>\z@
\expandafter\reserved@a \else
\expandafter\reserved@b \fi
}
% Test for a pure positive number: {possible number}{true}{false}
\def\@cite@posnumtest#1{%
\ifcat _\ifnum\z@<0#1_\else A\fi
\expandafter\@firstoftwo \else \expandafter\@secondoftwo \fi
}
\let\nocitecount\relax % in case \nocitecount was used for drftcite
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% option processing
\def\oc@movep{YY}% default Yes move
%
\DeclareOption{verbose}{}% Unused now. Was \def\oc@verbo#1#2#3#4{}
\DeclareOption{nospace}{\def\citepunct{,\penalty\citepunctpenalty}}
\DeclareOption{space}{\def\citepunct{,\penalty\citepunctpenalty\ }}
\DeclareOption{nobreak}{% no line-breaks
\mathchardef\citeprepenalty=\@M
\mathchardef\citemidpenalty=\@M
\mathchardef\citepunctpenalty=\@M
}
\DeclareOption{ref}{\def\citeleft{[Ref.\penalty\@M\ }}
% To disable sorting [nosort], the redefinition depends on whether [nocompress]
% was also selected, so just set a flag first.
\DeclareOption{nosort}{\let\@citeaddcnta\@empty}
\DeclareOption{sort}{}% default!
% Likewise set flag for [nocompress]
\DeclareOption{nocompress}{\let\@compress@cite\@empty}
\DeclareOption{compress}{}% default
\DeclareOption{nomove}{\def\oc@movep{no}}% Flag for later definition
\DeclareOption{move}{\def\oc@movep{YY}}% default
\DeclareOption{super}{\ExecuteOptions{superscript}}
\DeclareOption{superscript}{\let\@citess\cite}% Just a flag redefined below
\DeclareOption{noadjust}{\let\cite@adjust\@empty}% Don't change spaces
\DeclareOption{adjust}{}% adjust space before [ ]
\DeclareOption{biblabel}{\let\@biblabel\def}% see below
\ProvidesPackage{cite}[2015/02/27 \space v 5.5]
\ProcessOptions
\ifx\@biblabel\def % [biblabel] option
\ifx\@citess\cite % [superscript] option
\def\@biblabel#1{\@citess{#1}\kern-\labelsep\,}
\else % normal
\def\@biblabel#1{\citeleft{#1}\citeright}
\fi
\fi
% Process [superscript] option, and [nomove].
\ifx\@citess\cite
% Superscript cite, \cite chooses superscript or on-line-with-note
%
\DeclareRobustCommand{\cite}{%
\@ifnextchar[{\@tempswatrue\@citex}{\@tempswafalse\@citew}}
% Superscript cite, with no optional note. Check for punctuation first.
\def\@citew#1{\begingroup \leavevmode
\@if@fillglue \lastskip \relax \unskip
\def\@tempa{\@tempcnta\spacefactor
\/% this allows the last word to be hyphenated, and it looks better.
\@citess{\@cite@n{#1}}\spacefactor\@tempcnta
\endgroup \@restore@auxhandle}%
\oc@movep\relax}% check for following punctuation (depending on options)
% \@citess defines the formatting with superscripts and no brackets.
% HOWEVER, trailing punctuation has already been moved over. The
% format for cites with note is given by \@cite. Redefine \@cite and/
% or \@citex to get different appearance. I don't use \textsuperscript
% because it is defined BADLY in compatibility mode.
\def\@citess#1{\mbox{$\m@th^{\hbox{\OverciteFont{#1}}}$}}
\if \oc@movep % Move citation past trailing punctuation; [move] is default
\def\oc@movep#1{\futurelet\@tempb\@citey}
%
\def\@citey{\let\@tempc\@tempa
% Watch for double periods and suppress them
\ifx\@tempb.\ifnum\spacefactor<\sfcode`.\else
\@citeundouble
\fi\fi
% Move other punctuation
\expandafter\@citepc\CiteMoveChars\delimiter
\@tempc}%
% This is in a separate macro in case the next "character" (token)
% is \if or \fi, etc.
\def\@citeundouble{% Suppress doubling of periods
\let\@tempb\relax \let\@tempc\oc@movep
}
\def\@citepc#1{%
\ifx\@tempb#1\@empty #1\let\@tempc\oc@movep \fi
\ifx\delimiter#1\else \expandafter\@citepc\fi}
% Set detectable sfcodes when \frenchspacing
\mathchardef\cite@mi1001 %
\g@addto@macro\frenchspacing
{\sfcode`\.\cite@mi \sfcode`\?\cite@mi \sfcode`\!\cite@mi }%
\AtBeginDocument {%
\ifnum\sfcode`\.<1002 \frenchspacing \let\normalsfcodes\frenchspacing \fi
}% performed after \normalsfcodes defined
\else % [nomove] option:
\def\oc@movep{\@tempa}
\let\@citey\relax
\fi % end of move/nomove options
%
\fi % end [superscript] option processing
%
% make redefinitions to handle [nosort] [nocompress] and their combination
\ifx\@compress@cite\@empty
\ifx\@citeaddcnta\@empty
% [nosort,nocompress] -- short-circuit much processing
\def\@addto@cite@list{\@cite@dump@now}
\else
% [sort,nocompress]
\def\@compress@cite#1#2#3{% % This is executed for each number
\@h@ld \@citea \@cite@out{#3}%
\let\@h@ld\@empty \let\@citea\citepunct
}
\fi
\else %
\ifx\@citeaddcnta\@empty % [nosort,compress]
% nosort: always add to end of list, but still calculate
% sort-order number (\@tempcnta) because it may be used for
% collapsing consecutive numbers.
\def\@citeaddcnta{%
\edef\@cite@list{\@cite@list
\@celt{\number\@tempcnta}{\@B@citeB}{b@\@citeb\@extra@b@citeb}}%
}
\fi
\fi
% Compatability with chapterbib (see use of \@extra@b@citeb above and in chapterbib)
\@ifundefined{@extra@b@citeb}{\def\@extra@b@citeb{}}{}
% Compatability with multibib (see use of \@newciteauxhandle) (Yes, this is
% overly messy, but I asked for it... I can't have multibib putting junk after
% the cite command because it hides following punctuation, but then I have
% to restore the ordinary meaning of \@newciteauxhandle = \@auxout.)
\providecommand\@newciteauxhandle{\@auxout}
\AtBeginDocument{\@ifundefined{newcites}{\global\let\@restore@auxhandle\relax}{}}
\def\@restore@auxhandle{\def\@newciteauxhandle{\@auxout}}
% compatability with backref: prevent it from redefining \@citex
% in the wrong way (ignoring \@citew and \citen. I install hook in
% \@nocite so it applies to \cite, \citen, and \nocite.
%
\AtBeginDocument{\@ifundefined{Hy@backout}{}{%
\@ifundefined{BRorg@citex}{}{\global\let\@citex\BRorg@citex}%
\global\let\BR@citex\@citex
\global\let\@citeorg@nocite\@nocite % use my own hook -> into \@nocite
\gdef\@nocite#1{\@citeorg@nocite{#1}\Hy@backout{#1}}%
}}
% compatability with babel: Prevent it from redefining \@citex
\@ifundefined{@safe@activesfalse}{\let\@safe@activesfalse\relax}{}
\@ifundefined{bbl@cite@choice}{}{\@ifundefined{org@@citex}{}%
{\let\org@@citex\@citex}}% Prevent stomping by babel
\citenum % execute restore-catcodes
% Aliases:
\def\citenum{\citen}
\def\citeonline{\citen}
\endinput
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
CITE.STY
Modify LaTeX's normal citation mechanism for improved handling of numeric
citations, behaving as follows:
o Put a comma and a small space between each citation number, allowing
line breaks with penalty.
o Compress lists of three or more consecutive numbers, or similar, to a
range which can be split, with difficulty, after the dash.
o Sort citations into ascending order.
o Sortable and compressible citations are numeric like [5-8]; or numbers
with prefix and/or suffix characters like [18a-18c,19] or [A2,Q1,Q3-Q5];
or two numbers with separator like [1.9-1.12,2.2].
o Allow, but discourage, line breaks within the group of citations (after
dashes, and after punctuation).
o Adjust spacing before citation.
o All breaks can be forbidden with the [nobreak] package option.
o With package option [superscript] (or [super] for short), display citations
as superscripts (unless they have optional notes, causing them to be printed
on-line with brackets). Superscripted citations use THE SAME INPUT FORMAT
as ordinary citations; this style will ignore spaces before the \cite command
and move trailing punctuation before the superscript citation. Doubling of
periods (.., ?., !.) is checked for and suppressed.
o Define \citen to get just the numbers without the brackets or superscript
and extra formatting. Aliases are \citenum and \citeonline.
There are several package options for \usepackage{cite}.
[superscript] use superscrpts for cites without optional notes
[super] alias for [superscript] (like natbib)
[nospace] eliminates the spaces after commas in the number list
[space] uses a full inter-word space after the commas
[nobreak] eliminate all line-breaks
[nosort] prevents sorting of the numbers (default is to sort, and the...
[sort] option is provided for completeness).
[nomove] prevents moving the superscript cite after punctuation.
[move] is the default
[noadjust] disables `smart' handling of space before a cite
[adjust] is the default
[nocompress] inhibit compression of consecutive numbers into ranges
[compress] is the default
[ref] uses the format "[Ref.~12, given note]" (useful with [super])
[biblabel] define the bibliography label to match \cite
If your citations are not numeric, then you should probably not use
cite.sty, but if you must, then at least use the [nosort,nocompress]
options.
See more detailed instructions in cite.pdf (cite.ltx).
% Version 1991: Ignore spaces after commas in the parameter list. Move most of
% \citen into \@cmpresscites for speed. Give the proper \spacefactor afterwards.
% Version 1992: make \citepunct hold the punctuation between numbers (for ease
% of changing). Add \/ to allow hyphenation of previous word, and look better
% in italics.
% 1992a: Make it work with NFSS. (Thank you C. Hamlin and Rainer Schoepf)
%
% Version 3.0 (1992): Rewrite, including sorting. Make entries like "4th"
% be treated properly as text.
% 3.1: Bug fixes (and Joerg-Martin Schwarz also convinced me to use \ifcat)
% 3.2: NFSS support was wrong--added \reset@font. Suppress repetitions of
% warnings. Include \@extra@b@citeb hook.
% 3.3: Handle LaTeX2e options. Introduce various customization hooks.
% 3.4: Heuristics to avoid removing \hspace glue before on-line \cite.
% Make \nocite ignore spaces in list, simplify. Aliases for \citen.
% Compatability with amsmath (which defines \over).
% 3.5: Replace \reset@font with \selectfont so italics are preserved
% Include \G@refundefinedtrue. Fix cite-with-note bug (Lars Engebretsen).
% 3.6: Add nosort option.
% 3.7: Add nomove option; catcode preservation and global \@no@sparg for
% french.sty; warnings in \nocite.
% 3.8: \citedash hook, fix token look-ahead (Heiko Selber), noadjust, babel.
% 3.9: More babel-compatibility hacks. Punctuation move with \frencspacing.
% 4.0: Combine overcite with cite: [superscript] option. Also add [nocompress]
% option and \CiteMoveChars; multibib hooks.
% 4.01 \bf -> \bfseries
% 4.02 Bury undouble action in a separate macro to avoid extra \fi error.
% 5.0 Hyperref and backref compatability! Penalty parameters and [nobreak].
% Letter prefix and suffix sorting! Stop suppressing multiple warnings.
% 5.1 Fix a missing "b@" (disappearing named cites), fix nosort
% 5.2 More robust treatment of non-numbers
% 5.3 Handle sort/compress of compound citation numbers (number by chapter)
% such as 3.18 or 5-3. Note that these compounds cannot have prefix or
% suffix letters (not enough bits in the maximum TeX number).
% 5.4 Only ignore spaces at begin and end of tag (LaTeX ignores at begin)
% 5.5 Improve handling of \frenchspacing. Option rearrangements.
%
% TODO: other sorting, like dictionary or roman numeral
% TODO: create special "final punct" that could be ", and " and likewise
% a "single punct" that could be " and "
%
% Send problem reports to asnd@triumf.ca
Test file integrity: ASCII 32-57, 58-126: !"#$%&'()*+,-./0123456789
:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~