
luis@24: %     C I T E . S T Y
luis@24: %
luis@24: %     version 4.01  (Nov 2003)
luis@24: %
luis@24: %     Compressed, sorted lists of on-line or superscript numerical citations.
luis@24: %     see also drftcite.sty (And the stub overcite.sty)
luis@24: %
luis@24: %     Copyright (C) 1989-2003 by Donald Arseneau
luis@24: %     These macros may be freely transmitted, reproduced, or modified
luis@24: %     provided that this notice is left intact.
luis@24: %
luis@24: %     Instructions follow \endinput.
luis@24: %  ------------------------------------
luis@24: % First, ensure that some catcodes have the expected values
luis@24: \edef\citenum{% to restore funny codes
luis@24:   \catcode\string`\string ` \the\catcode\string`\`
luis@24:   \catcode\string`\string ' \the\catcode\string`\'
luis@24:   \catcode\string`\string = \the\catcode\string`\=
luis@24:   \catcode\string`\string _ \the\catcode\string`\_
luis@24:   \catcode\string`\string : \the\catcode\string`\:}
luis@24: \catcode\string`\` 12
luis@24: \catcode`\' 12
luis@24: \catcode`\= 12
luis@24: \catcode`\_ 8
luis@24: \catcode`\: 12
luis@24: 
luis@24: %   Handle optional variations:
luis@24: %   [ verbose, nospace, space, ref, nosort, noadjust, superscript, nomove ],
luis@24: %   \citeform,\citeleft,\citeright,\citemid,\citepunct,\citedash
luis@24: %
luis@24: %   Set defaults:
luis@24: 
luis@24: %   [ on the left.  Option [ref] does: [Ref. 12, note]
luis@24: \providecommand\citeleft{[}
luis@24: 
luis@24: %   ] on the right:
luis@24: \providecommand\citeright{]}
luis@24: 
luis@24: %   , (comma space) before note
luis@24: \providecommand\citemid{,\penalty\@medpenalty\ }
luis@24: 
luis@24: %   , (comma thin-space) between entries; [nospace] eliminates the space
luis@24: \providecommand\citepunct{,\penalty\@m\hskip.13emplus.1emminus.1em}%
luis@24: 
luis@24: %   -- (endash) designating range of numbers:
luis@24: % (using \hbox avoids easy \exhyphenpenalty breaks)
luis@24: \providecommand{\citedash}{\hbox{--}\penalty\@m}
luis@24: 
luis@24: %   Each number left as-is:
luis@24: \providecommand\citeform{}
luis@24: 
luis@24: %   punctuation characters to move for overcite
luis@24: \providecommand{\CiteMoveChars}{.,:;}
luis@24: 
luis@24: %   font selection for superscript numbers
luis@24: \providecommand\OverciteFont{\fontsize\sf@size\baselineskip\selectfont}
luis@24: 
luis@24: 
luis@24: %   Do not repeat warnings.  [verbose] reverses
luis@24: \let\oc@verbo\relax
luis@24: 
luis@24: % Default is to move punctuation:
luis@24: \def\oc@movep#1{\futurelet\@tempb\@citey}
luis@24: 
luis@24: %----------------------
luis@24: % \citen uses \@nocite to ignore spaces after commas, and write the aux file
luis@24: % \citation. \citen then loops over the citation tags, using \@make@cite@list
luis@24: % to make a sorted list of numbers.  Finally, \citen executes \@citelist to
luis@24: % compress ranges of numbers and print the list. \citen can be used by itself
luis@24: % to give citation numbers without the brackets and other formatting; e.g.,
luis@24: % "See also ref.~\citen{junk}."
luis@24: %
luis@24: \DeclareRobustCommand\citen[1]{%
luis@24:  \begingroup
luis@24:   \let\@safe@activesfalse\@empty
luis@24:   \@nocite{#1}% ignores spaces, writes to .aux file, returns #1 in \@no@sparg
luis@24:   \@tempcntb\m@ne    % \@tempcntb tracks highest number
luis@24:   \let\@h@ld\@empty  % nothing held from list yet
luis@24:   \let\@citea\@empty % no punctuation preceding first
luis@24:   \let\@celt\delimiter % an unexpandable, but identifiable, token
luis@24:   \def\@cite@list{}% % empty list to start
luis@24:   \@for \@citeb:=\@no@sparg\do{\@make@cite@list}% make a sorted list of numbers
luis@24:   % After sorted citelist is made, execute it to compress citation ranges.
luis@24:   \@tempcnta\m@ne    % no previous number
luis@24:   \let\@celt\@compress@cite \@cite@list % output number list with compression
luis@24:   \@h@ld % output anything held over
luis@24:  \endgroup
luis@24:  \@restore@auxhandle
luis@24:  }
luis@24: 
luis@24: % For each citation, check if it is defined and if it is a number.
luis@24: % if a number: insert it in the sorted \@cite@list
luis@24: % otherwise: output it immediately.
luis@24: %
luis@24: \def\@make@cite@list{%
luis@24:  \expandafter\let \expandafter\@B@citeB
luis@24:           \csname b@\@citeb\@extra@b@citeb \endcsname
luis@24:  \ifx\@B@citeB\relax % undefined: output ? and warning
luis@24:     \@citea {\bfseries ?}\let\@citea\citepunct \G@refundefinedtrue
luis@24:     \@warning {Citation `\@citeb' on page \thepage\space undefined}%
luis@24:     \oc@verbo \global\@namedef{b@\@citeb\@extra@b@citeb}{?}%
luis@24:  \else %  defined               % remove previous line to repeat warnings
luis@24:     \ifcat _\ifnum\z@<0\@B@citeB _\else A\fi % a positive number, put in list
luis@24:        \@addto@cite@list
luis@24:     \else % citation is not a number, output immediately
luis@24:        \@citea \citeform{\@B@citeB}\let\@citea\citepunct
luis@24:  \fi\fi}
luis@24: 
luis@24: % Regular definition for adding entry to cite list, with sorting
luis@24: 
luis@24: \def\@addto@cite@list{\@tempcnta\@B@citeB \relax
luis@24:    \ifnum \@tempcnta>\@tempcntb % new highest, add to end (efficiently)
luis@24:       \edef\@cite@list{\@cite@list \@celt{\@B@citeB}}%
luis@24:       \@tempcntb\@tempcnta
luis@24:    \else % arbitrary number: insert appropriately
luis@24:       \edef\@cite@list{\expandafter\@sort@celt \@cite@list \@gobble @}%
luis@24:    \fi}
luis@24: %
luis@24: % \@sort@celt inserts number (\@tempcnta) into list of \@celt{num} (#1{#2})
luis@24: % \@celt must not be expandable; list should end with two vanishing tokens.
luis@24: %
luis@24: \def\@sort@celt#1#2{\ifx \@celt #1% parameters are \@celt {num}
luis@24:    \ifnum #2<\@tempcnta % number goes later in list
luis@24:       \@celt{#2}%
luis@24:       \expandafter\expandafter\expandafter\@sort@celt % continue
luis@24:    \else % number goes here
luis@24:       \@celt{\number\@tempcnta}\@celt{#2}% stop comparing
luis@24: \fi\fi}
luis@24: 
luis@24: % Check if each number follows previous and can be put in a range
luis@24: %
luis@24: \def\@compress@cite#1{%  % This is executed for each number
luis@24:   \advance\@tempcnta\@ne % Now \@tempcnta is one more than the previous number
luis@24:   \ifnum #1=\@tempcnta   % Number follows previous--hold on to it
luis@24:      \ifx\@h@ld\@empty   % first pair of successives
luis@24:         \expandafter\def\expandafter\@h@ld\expandafter{\@citea 
luis@24:            \citeform{#1}}%
luis@24:      \else               % compressible list of successives
luis@24:         \def\@h@ld{\citedash \citeform{#1}}%
luis@24:      \fi
luis@24:   \else   %  non-successor -- dump what's held and do this one
luis@24:      \@h@ld \@citea \citeform{#1}%
luis@24:      \let\@h@ld\@empty
luis@24:   \fi \@tempcnta#1\let\@citea\citepunct
luis@24: }
luis@24: 
luis@24: % Make \cite choose superscript or normal
luis@24: 
luis@24: \DeclareRobustCommand{\cite}{%
luis@24:   \@ifnextchar[{\@tempswatrue\@citex}{\@tempswafalse\@citex[]}}
luis@24: 
luis@24: % Do \cite command on line.
luis@24: %
luis@24: \def\@citex[#1]#2{\@cite{\citen{#2}}{#1}}
luis@24: 
luis@24: \def\@cite#1#2{\leavevmode \cite@adjust
luis@24:   \citeleft{#1\if@tempswa\@safe@activesfalse\citemid{#2}\fi
luis@24:   \spacefactor\@m % punctuation in note doesn't affect outside
luis@24:   }\citeright
luis@24:  \@restore@auxhandle}
luis@24: 
luis@24: %  Put a penalty before the citation, and adjust the spacing: if no space
luis@24: %  already or if there is extra space due to some punctuation, then change
luis@24: %  to one inter-word space.
luis@24: %
luis@24: \def\cite@adjust{\begingroup%
luis@24:   \@tempskipa\lastskip \edef\@tempa{\the\@tempskipa}\unskip
luis@24:   \ifnum\lastpenalty=\z@ \penalty\@highpenalty \fi
luis@24:   \ifx\@tempa\@zero@skip \spacefactor1001 \fi % if no space before, set flag
luis@24:   \ifnum\spacefactor>\@m \ \else \hskip\@tempskipa \fi
luis@24:   \endgroup}
luis@24: 
luis@24: 
luis@24: \edef\@zero@skip{\the\z@skip}
luis@24: 
luis@24: %  Superscript cite, with no optional note.  Check for punctuation first.
luis@24: %
luis@24: \def\@citew#1{\begingroup \leavevmode
luis@24:   \@if@fillglue \lastskip \relax \unskip
luis@24:   \def\@tempa{\@tempcnta\spacefactor
luis@24:      \/% this allows the last word to be hyphenated, and it looks better.
luis@24:      \@citess{\citen{#1}}\spacefactor\@tempcnta
luis@24:      \endgroup \@restore@auxhandle}%
luis@24:   \oc@movep\relax}% check for following punctuation (depending on options)
luis@24: 
luis@24: %  Move trailing punctuation before the citation:
luis@24: %
luis@24: \def\@citey{\let\@tempc\@tempa
luis@24:    % Watch for double periods and suppress them
luis@24:    \ifx\@tempb.\ifnum\spacefactor<\@bigSfactor\else
luis@24:      \let\@tempb\relax \let\@tempc\oc@movep
luis@24:    \fi\fi
luis@24:    % Move other punctuation
luis@24:    \expandafter\@citepc\CiteMoveChars\delimiter
luis@24:    \@tempc}%
luis@24: 
luis@24: \def\@citepc#1{%
luis@24:    \ifx\@tempb#1\@empty #1\let\@tempc\oc@movep \fi
luis@24:    \ifx\delimiter#1\else \expandafter\@citepc\fi}
luis@24: 
luis@24: %  Replacement for \@cite which defines the formatting normally done
luis@24: %  around the citation list.  This uses superscripts with no brackets.
luis@24: %  HOWEVER, trailing punctuation has already been moved over.  The
luis@24: %  format for cites with note is given by \@cite.  Redefine \@cite and/
luis@24: %  or \@citex to get different appearance.  I don't use \textsuperscript
luis@24: %  because it is defined BADLY in compatibility mode.
luis@24: 
luis@24: \def\@citess#1{\mbox{$\m@th^{\hbox{\OverciteFont{#1}}}$}}
luis@24: 
luis@24: % \nocite: This is changed to ignore *ALL* spaces and be robust.  The
luis@24: % parameter list, with spaces removed, is `returned' in \@no@sparg, which
luis@24: % is used by \citen.
luis@24: %
luis@24: \DeclareRobustCommand\nocite[1]{%
luis@24:  \@bsphack \@nocite{#1}%
luis@24:  \@for \@citeb:=\@no@sparg\do{\@ifundefined{b@\@citeb\@extra@b@citeb}%
luis@24:     {\G@refundefinedtrue\@warning{Citation `\@citeb' undefined}%
luis@24:     \oc@verbo \global\@namedef{b@\@citeb\@extra@b@citeb}{?}}{}}%
luis@24:  \@esphack}
luis@24: 
luis@24: \def\@nocite#1{\begingroup\let\protect\string% normalize active chars
luis@24:  \xdef\@no@sparg{\expandafter\@ignsp#1 \: }\endgroup% and remove ALL spaces
luis@24:  \if@filesw \immediate\write\@newciteauxhandle % = \@auxout, except with multibib
luis@24:     {\string\citation {\@no@sparg}}\fi
luis@24:  }
luis@24: 
luis@24: % for ignoring *ALL* spaces in the input.  This presumes there are no
luis@24: % \outer tokens and no \if-\fi constructs in the parameter.  Spaces inside
luis@24: % braces are retained.
luis@24: %
luis@24: \def\@ignsp#1 {\ifx\:#1\@empty\else #1\expandafter\@ignsp\fi}
luis@24: 
luis@24: % \@if@fillglue{glue}{true}{false}
luis@24: \begingroup
luis@24:  \catcode`F=12 \catcode`I=12\catcode`L=12
luis@24:  \lowercase{\endgroup
luis@24:  \def\@if@fillglue#1{%
luis@24:   \begingroup \skip@#1\relax
luis@24:   \expandafter\endgroup\expandafter 
luis@24:   \@is@fil@ \the\skip@ \relax\@firstoftwo FIL\relax\@secondoftwo\@nil}
luis@24:  \def\@is@fil@ #1FIL#2\relax#3#4\@nil{#3}
luis@24: }
luis@24: 
luis@24: \let\nocitecount\relax  % in case \nocitecount was used for drftcite
luis@24: 
luis@24: % For the time being, just prevent gross errors from using hyperref.
luis@24: % There are no hyper-links.  (I will need to carry the cite tags through
luis@24: % the sorting process, and use \hyper@natlinkstart)
luis@24: 
luis@24: \providecommand\hyper@natlinkstart[1]{}
luis@24: \providecommand\hyper@natlinkend{}
luis@24: \providecommand\NAT@parse{\@firstofone}
luis@24: 
luis@24: %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
luis@24: %                     option processing
luis@24: 
luis@24: \DeclareOption{verbose}{\def\oc@verbo#1#2#3#4{}}
luis@24: \DeclareOption{nospace}{\def\citepunct{,\penalty\@m}}
luis@24: \DeclareOption{space}{\def\citepunct{,\penalty\@highpenalty\ }}
luis@24: \DeclareOption{ref}{\def\citeleft{[Ref.\penalty\@M\ }}
luis@24: \DeclareOption{nosort}{\def\@addto@cite@list
luis@24:    {\edef\@cite@list{\@cite@list \@celt{\@B@citeB}}}}
luis@24: \DeclareOption{sort}{}% default!
luis@24: \DeclareOption{nomove}{\def\oc@movep{\@tempa}\let\@citey\oc@movep}
luis@24: \DeclareOption{move}{}% default
luis@24: \DeclareOption{nocompress}{%
luis@24:   \def\@compress@cite#1{%  % This is executed for each number
luis@24:      \@h@ld \@citea \hyper@natlinkstart\citeform{#1}\hyper@natlinkend
luis@24:      \let\@h@ld\@empty \let\@citea\citepunct}
luis@24: }
luis@24: \DeclareOption{compress}{}% default
luis@24: \DeclareOption{super}{\ExecuteOptions{superscript}}
luis@24: \DeclareOption{superscript}{%
luis@24:   \DeclareRobustCommand{\cite}{%
luis@24:     \@ifnextchar[{\@tempswatrue\@citex}{\@tempswafalse\@citew}}
luis@24: }
luis@24: \DeclareOption{noadjust}{\let\cite@adjust\@empty}% Don't change spaces
luis@24: \DeclareOption{adjust}{}% adjust space before [ ]
luis@24: \DeclareOption{biblabel}{\def\@biblabel#1{\@citess{#1}\kern-\labelsep\,}}
luis@24: \ProvidesPackage{cite}[2003/11/04 \space  v 4.01]
luis@24: \ProcessOptions
luis@24: 
luis@24: \ifx\@citey\oc@movep\else % we are moving punctuation; must ensure sfcodes
luis@24:   \mathchardef\@bigSfactor3000
luis@24:   \expandafter\def\expandafter\frenchspacing\expandafter{\frenchspacing
luis@24:     \mathchardef\@bigSfactor1001
luis@24:     \sfcode`\.\@bigSfactor \sfcode`\?\@bigSfactor \sfcode`\!\@bigSfactor }%
luis@24:   \ifnum\sfcode`\.=\@m \frenchspacing \fi
luis@24: \fi
luis@24: 
luis@24: %  Compatability with chapterbib (see use of \@extra@b@citeb)
luis@24: \@ifundefined{@extra@b@citeb}{\def\@extra@b@citeb{}}{}
luis@24: 
luis@24: %  Compatability with multibib (see use of \@newciteauxhandle) (Yes, this is
luis@24: %  overly messy, but I asked for it...  I can't have multibib putting junk after 
luis@24: %  the cite command because it hides following punctuation, but then I have
luis@24: %  to restore the ordinary meaning of \@newciteauxhandle = \@auxout.)
luis@24: \providecommand\@newciteauxhandle{\@auxout}
luis@24: \AtBeginDocument{\@ifundefined{newcites}{\global\let\@restore@auxhandle\relax}{}}
luis@24: \def\@restore@auxhandle{\def\@newciteauxhandle{\@auxout}}
luis@24: 
luis@24: 
luis@24: \@ifundefined{G@refundefinedtrue}{\let\G@refundefinedtrue\relax}{}
luis@24: 
luis@24: \@ifundefined{@safe@activesfalse}{}{}
luis@24: \@ifundefined{bbl@cite@choice}{}{\@ifundefined{org@@citex}{}%
luis@24:   {\let\org@@citex\@citex}}% Prevent stomping by babel
luis@24: 
luis@24: 
luis@24: \citenum % execute restore-catcodes
luis@24: 
luis@24: % Aliases:
luis@24: \let\citenum\citen
luis@24: \let\citeonline\citen
luis@24: 
luis@24: \endinput
luis@24: %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
luis@24: 
luis@24: 
luis@24:                    CITE.STY
luis@24: 
luis@24: Modify LaTeX's normal citation mechanism to:
luis@24: 
luis@24: o Put a comma and a small space between each citation number. The option
luis@24:   [nospace] removes that space, and the option [space] replaces it with
luis@24:   an ordinary inter-word space.
luis@24: 
luis@24: o Sort citation numbers into ascending order, printing non-numbers before 
luis@24:   numbers.  All numbers should be greater than zero.  The [nosort] package 
luis@24:   option turns off sorting.
luis@24: 
luis@24: o Compress lists of three or more consecutive numbers to one number range
luis@24:   which can be split, with difficulty, after the dash.  All numbers should
luis@24:   be greater than zero.  E.g., if you used to get the (nonsense) list 
luis@24:   [7,5,6,?,4,9,8,Einstein,6], then this style will give [?,Einstein,4-6,6-9].
luis@24:   Compression of ranges is disabled by the [nocompress] package option.
luis@24: 
luis@24: o Allow, but strongly discourage, line breaks within a series of
luis@24:   citations.  Each number is separated by a comma and a small space.
luis@24:   A break at the beginning of an optional note is discouraged also.
luis@24: 
luis@24: o Put a high-penalty breakpoint before the citation (unless you specifically
luis@24:   forbid it with ~ ).  Also, adjust the spacing: if there is no space or if
luis@24:   there is extra space due to some punctuation, then change to one inter-word
luis@24:   space. E.g.,   A space will be inserted here\cite{Larry,Curly,Moe}.
luis@24: 
luis@24: o With package option [superscript] (or [super] for short), display citation
luis@24:   numbers as superscripts (unless they have optional notes, causing them to
luis@24:   be treated as described above).  Superscripted citations follow these
luis@24:   additional rules:
luis@24: 
luis@24: - Superscript citations use THE SAME INPUT FORMAT as ordinary citations; this
luis@24:   style will ignore spaces before the citation, and move trailing punctuation
luis@24:   before the superscript citation.  For example, "information \cite{source};"
luis@24:   ignores the space before \cite and puts the semicolon before the number, just
luis@24:   as if you had typed "information;$^{12}$".  You may switch off movement with
luis@24:   the [nomove] package option (only relevant with [superscript]).
luis@24: 
luis@24: - The punctuation characters that will migrate before the superscript are
luis@24:   listed in the macro \CiteMoveChars, which you can redefine.  The default is
luis@24:   .,;:.   Perhaps ! and ? should too, but they weren't listed in the APS style
luis@24:   manual I looked at, and I agree with that rule to prevent too much visual
luis@24:   separation.  Quotes were listed, but they should never have to migrate
luis@24:   because both on-line and superscript versions put quotes before the citation.
luis@24:   This gives one difficulty --- punctuation following quotes won't migrate
luis@24:   inside the quotation: e.g., "``Transition State Theory''\cite{Eyring}." gives
luis@24:   "``Transition State Theory''.$^8$", but you may want the period inside the
luis@24:   quotes, thus: ``Transition State Theory.''$^8$.
luis@24: 
luis@24: - Doubling of periods (.., ?., !.) is checked for and suppressed. The spacing
luis@24:   after the citation is set according to the final punctuation mark moved.
luis@24:   There is a problem with double periods after a capitalized abbreviation
luis@24:   or directly after \@ : Both of "N.A.S.A. \cite{space}." and "et al.\@
luis@24:   \cite{many}." will give doubled periods.  These can be fixed as follows:
luis@24:   "N.A.S.A\@. \cite{space}." and "et al.\ \cite{many}.". The NASA example 
luis@24:   gives the wrong spacing when there is no citation.  Sorry.  Use \  after
luis@24:   abbreviations like et al. to get the right spacing within a sentence whether
luis@24:   or not a citation follows.
luis@24: 
luis@24: - Remember, these rules regarding punctuation only apply when the [superscript]
luis@24:   option was given (or overcite.sty used) and the [nomove] option was NOT
luis@24:   given.
luis@24: 
luis@24: o Define \citen to get just the numbers without the brackets or superscript
luis@24:   and extra formatting.  Aliases are \citenum and \citeonline for easy
luis@24:   conversion to other citation packages.
luis@24: 
luis@24: o `Citation...undefined' warnings are only given once per undefined citation
luis@24:   tag.  In the text, missing numbers are represented with a bold `?' at the
luis@24:   first occurrence, and with a normal `?' thenceforth.  The package option
luis@24:   [verbose] restores the usual repeated warnings.
luis@24: 
luis@24: o Make \nocite, \cite, and \citen all ignore spaces in the input tags.
luis@24: 
luis@24: Although each \cite command sorts its numbers, better compression into
luis@24: ranges can usually be achieved by carefully selecting the order of the
luis@24: \bibitem entries or the order of initial citations when using BibTeX.
luis@24: Having the entries pre-sorted will also save processing time, especially
luis@24: for long lists of numbers.
luis@24: 
luis@24: Customization:
luis@24: ~~~~~~~~~~~~~~
luis@24: There are several options for \usepackage{cite}, some already mentioned.
luis@24: 
luis@24:  [superscript] use superscrpts for cites without optional notes
luis@24:  [super]       alias for [superscript] (like natbib)
luis@24:  [verbose]     causes warnings for undefined cites to be repeated each time
luis@24:  [ref]         uses the format "[Ref.~12, optional note]" (useful with 
luis@24:                the superscript option)
luis@24:  [nospace]     eliminates the spaces after commas in the number list.
luis@24:  [space]       uses a full inter-word space after the commas
luis@24:  [nosort]      prevents sorting of the numbers (default is to sort, and a
luis@24:  [sort]        option is provided for completeness).
luis@24:  [nomove]      prevents moving the superscript cite after punctuation.
luis@24:  [move]        is the default
luis@24:  [noadjust]    disables `smart' handling of space before a cite
luis@24:  [adjust]      is the default
luis@24:  [nocompress]  inhibit compression of consecutive numbers into ranges
luis@24:  [compress]    is the default
luis@24:  [biblabel]    define the bibliography label as a superscript
luis@24: 
luis@24: There are several commands that you may redefine to change the formatting
luis@24: of citation lists:
luis@24: 
luis@24: command       function                   default
luis@24: ----------    -----------------------    ----------------------------
luis@24: \citeform     reformats each number      nothing
luis@24: \citepunct    printed between numbers    comma + penalty + thin space
luis@24: \citeleft     left delimiter of list     [
luis@24: \citeright    right delimeter of list    ]
luis@24: \citemid      printed before note        comma + space
luis@24: \citedash     used in a compressed range endash + penalty
luis@24: \CiteMoveChars  charcters that move      .,:;
luis@24: \OverciteFont   font selection command for superscripts
luis@24: 
luis@24: The left/mid/right commands don't affect the formatting of superscript
luis@24: citations.  You may use \renewcommand to change any of these.  Remember,
luis@24: these commands are extensions made by this package; they are not regular
luis@24: LaTeX.  Some examples of changes:
luis@24: 
luis@24: 1: \renewcommand\citeform[1]{\romannumeral 0#1}} % roman numerals i,vi
luis@24: 2: \renewcommand\citeform[1]{(#1)} % parenthesized numbers (1)-(5),(9)
luis@24: 3: \renewcommand\citeform{\thechapter.}  % by chapter: ^{2.18-2.21}
luis@24: 4: \renewcommand\citepunct{,} % no space and no breaks at commas
luis@24: 5: \renewcommand\citemid{; }  % semicolon before optional note
luis@24: 6: \renewcommand\citeleft{(}  % parentheses around list with note
luis@24:    \renewcommand\citeright{)} % parentheses around list with note
luis@24: 
luis@24: The appearance of the whole citation list is governed by \@cite, (for full-
luis@24: sized cites) and \@citess (for superscripts).  For more extensive changes 
luis@24: to the formatting, redefine these.  For example, to get brackets around the 
luis@24: list of superscript numbers you can do:
luis@24: 
luis@24:    \def\@citess#1{\textsuperscript{[#1]}}
luis@24: 
luis@24: after \makeatletter.
luis@24: 
luis@24: Related Note:  The superscript option does not affect the numbering format
luis@24: of the bibliography; the "[12]" style is still the default.  To get
luis@24: superscripts in the bibliography (at any time) you can define
luis@24: 
luis@24:    \renewcommand\@biblabel[1]{\textsuperscript{#1}}
luis@24: 
luis@24: Aw, OK, for your convenience, there is the [biblabel] package option that
luis@24: just performs this definition (sort of).
luis@24: 
luis@24: \@extra@b@citeb is a hook for other style files to further specify
luis@24: citations; for example, to number by chapter (see chapterbib.sty).
luis@24: 
luis@24: % Version 1991: Ignore spaces after commas in the parameter list. Move most of
luis@24: % \citen into \@cmpresscites for speed. Give the proper \spacefactor afterwards.
luis@24: % Version 1992: make \citepunct hold the punctuation between numbers (for ease
luis@24: % of changing).  Add \/ to allow hyphenation of previous word, and look better
luis@24: % in italics.
luis@24: % 1992a: Make it work with NFSS.  (Thank you C. Hamlin and Rainer Schoepf)
luis@24: %
luis@24: % Version 3.0 (1992):  Rewrite, including sorting.  Make entries like "4th"
luis@24: % be treated properly as text.
luis@24: % 3.1: Bug fixes (and Joerg-Martin Schwarz also convinced me to use \ifcat)
luis@24: % 3.2: NFSS support was wrong--added \reset@font.  Suppress repetitions of
luis@24: %      warnings.  Include \@extra@b@citeb hook.
luis@24: % 3.3: Handle LaTeX2e options. Introduce various customization hooks.
luis@24: % 3.4: Heuristics to avoid removing \hspace glue before on-line \cite.
luis@24: %      Make \nocite ignore spaces in list, simplify. Aliases for \citen.
luis@24: %      Compatability with amsmath (which defines \over).
luis@24: % 3.5: Replace \reset@font with \selectfont so italics are preserved
luis@24: %      Include \G@refundefinedtrue.  Fix cite-with-note bug (Lars Engebretsen).
luis@24: % 3.6: Add nosort option.
luis@24: % 3.7: Add nomove option; catcode preservation and global \@no@sparg for
luis@24: %      french.sty; warnings in \nocite.
luis@24: % 3.8: \citedash hook, fix token look-ahead (Heiko Selber), noadjust, babel.
luis@24: % 3.9: More babel-compatibility hacks. Punctuation move with \frencspacing.
luis@24: % 4.0: Combine overcite with cite: [superscript] option.  Also add [nocompress]
luis@24: %      option and \CiteMoveChars; multibib hooks.
luis@24: % 4.01 \bf -> \bfseries
luis@24: %
luis@24: % Send problem reports to asnd@triumf.ca
luis@24: 
luis@24: Test file integrity:  ASCII 32-57, 58-126:  !"#$%&'()*+,-./0123456789
luis@24: :;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~




