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{|}~