From 47d688b3f0de132c50103bd25fbd617dc7e213f0 Mon Sep 17 00:00:00 2001 From: Karl Berry Date: Wed, 4 Mar 2015 00:12:44 +0000 Subject: cite (3mar15) git-svn-id: svn://tug.org/texlive/trunk@36428 c570f23f-e606-0410-a88d-b1316a301751 --- Master/texmf-dist/tex/latex/cite/cite.sty | 379 +++++++++-------------- Master/texmf-dist/tex/latex/cite/overcite.sty | 423 +------------------------- 2 files changed, 149 insertions(+), 653 deletions(-) (limited to 'Master/texmf-dist/tex/latex/cite') diff --git a/Master/texmf-dist/tex/latex/cite/cite.sty b/Master/texmf-dist/tex/latex/cite/cite.sty index e8187781788..44c37a841df 100644 --- a/Master/texmf-dist/tex/latex/cite/cite.sty +++ b/Master/texmf-dist/tex/latex/cite/cite.sty @@ -1,27 +1,30 @@ % C I T E . S T Y % -% version 5.3 (Sep 2010) +% 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-2010 by Donald Arseneau +% 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 follow \endinput. +% Instructions in cite.pdf and follow \endinput. % ------------------------------------ % First, ensure that some catcodes have the expected values -\edef\citenum{% to restore funny codes +\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 +\catcode`\_ 8 % This is UNusual \catcode`\: 12 % Prepare for optional variations: @@ -62,11 +65,8 @@ \providecommand\OverciteFont{\fontsize\sf@size\baselineskip\selectfont} -% Do not repeat warnings. [verbose] reverses -\let\oc@verbo\relax - -% Default is to move punctuation: -\def\oc@movep#1{\futurelet\@tempb\@citey} +% [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 @@ -108,8 +108,8 @@ \endcsname\relax % undefined: output ? and warning \@citea {\bfseries ?}\let\@citea\citepunct \G@refundefinedtrue \@warning {Citation `\@citeb' on page \thepage\space undefined}% - %% \oc@verbo \global\@namedef{b@\@citeb\@extra@b@citeb}{?}% ??? - \else % defined % remove previous line to repeat warnings + %% always verbose \oc@verbo \global\@namedef{b@\@citeb\@extra@b@citeb}{?}% + \else % defined \@cite@nonhyper@sanitize \@addto@cite@list \fi} @@ -164,7 +164,7 @@ % \def\@cite@add@letnumC#1{\@if@printable@char% {\@cite@add@letnumD{#1}}% continue with prefix (perhaps zero) - {\@cite@gobbledump@now}% else abandon fancy processing + {\@cite@gobbledump@now}% else abandon fancy processing and output citation } % Save prefix (if any) numerically in \@tempcnta, test next character for being @@ -174,7 +174,7 @@ \@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 output citation + {\@cite@gobbledump@now}% No number so just output citation } % Have collected number. Now look for a non-number suffix or separator. @@ -192,7 +192,7 @@ }} % Have everything up to a suffix or separator character. Check -% following to see which. Three possibilites are (1) noting => +% 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 @@ -297,7 +297,7 @@ \@tempcnta#1\let\@citea\citepunct } -% Make \cite choose superscript or normal +% Ordinary on-line \cite command \DeclareRobustCommand{\cite}{% \@ifnextchar[{\@tempswatrue\@citex}{\@tempswafalse\@citex[]}} @@ -323,49 +323,8 @@ \ifnum\spacefactor>\@m \ \else \hskip\@tempskipa \fi \endgroup} - \edef\@zero@skip{\the\z@skip} -% 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) - -% Move trailing punctuation before the citation: -% -\def\@citey{\let\@tempc\@tempa - % Watch for double periods and suppress them - \ifx\@tempb.\ifnum\spacefactor<\@bigSfactor\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} - -% Replacement for \@cite which defines the formatting normally done -% around the citation list. This uses superscripts with 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}}}$}} - % \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). @@ -379,16 +338,21 @@ \@esphack} \def\@nocite#1{\begingroup\let\protect\string% normalize active chars - \xdef\@no@sparg{\expandafter\@ignsp#1 \: }\endgroup% and remove ALL spaces + \xdef\@no@sparg{\expandafter\@cite@ignsp#1,\: ,\:}% remove spaces \if@filesw \immediate\write\@newciteauxhandle % =\@auxout, except with multibib {\string\citation {\@no@sparg}}\fi - } + \endgroup} -% for ignoring *ALL* spaces in the input. This presumes there are no -% \outer tokens and no \if-\fi constructs in the parameter. Spaces inside -% braces are retained. +% 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\@ignsp#1 {\ifx\:#1\@empty\else #1\expandafter\@ignsp\fi} +\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 @@ -432,8 +396,9 @@ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % option processing - -\DeclareOption{verbose}{\def\oc@verbo#1#2#3#4{}} +\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 @@ -449,27 +414,90 @@ % Likewise set flag for [nocompress] \DeclareOption{nocompress}{\let\@compress@cite\@empty} \DeclareOption{compress}{}% default -\DeclareOption{nomove}{\def\oc@movep{\@tempa}\let\@citey\oc@movep} -\DeclareOption{move}{}% default +\DeclareOption{nomove}{\def\oc@movep{no}}% Flag for later definition +\DeclareOption{move}{\def\oc@movep{YY}}% default \DeclareOption{super}{\ExecuteOptions{superscript}} -\DeclareOption{superscript}{% - \DeclareRobustCommand{\cite}{% - \@ifnextchar[{\@tempswatrue\@citex}{\@tempswafalse\@citew}} -} +\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}{\def\@biblabel#1{\@citess{#1}\kern-\labelsep\,}} -\ProvidesPackage{cite}[2010/09/10 \space v 5.3] +\DeclareOption{biblabel}{\let\@biblabel\def}% see below +\ProvidesPackage{cite}[2015/02/27 \space v 5.5] \ProcessOptions -\ifx\@citey\oc@movep\else % we are moving punctuation; must ensure sfcodes - \mathchardef\@bigSfactor3000 - \expandafter\def\expandafter\frenchspacing\expandafter{\frenchspacing - \mathchardef\@bigSfactor1001 - \sfcode`\.\@bigSfactor \sfcode`\?\@bigSfactor \sfcode`\!\@bigSfactor }% - \ifnum\sfcode`\.=\@m \frenchspacing \fi +\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 @@ -516,9 +544,6 @@ \gdef\@nocite#1{\@citeorg@nocite{#1}\Hy@backout{#1}}% }} -% compatability with ooold LaTeX -\@ifundefined{G@refundefinedtrue}{\let\G@refundefinedtrue\relax}{} - % compatability with babel: Prevent it from redefining \@citex \@ifundefined{@safe@activesfalse}{\let\@safe@activesfalse\relax}{} \@ifundefined{bbl@cite@choice}{}{\@ifundefined{org@@citex}{}% @@ -539,112 +564,39 @@ 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. The option - [nospace] removes that space, and the option [space] replaces it with - an ordinary inter-word space. - -o Compress lists of three or more consecutive numbers to one number range - which can be split, with difficulty, after the dash. All numbers should - be greater than zero. E.g., if you used to get the (nonsense) list - [7,5,6,?,4,9,8,Einstein,6], then this style will give [?,Einstein,4-6,6-9]. - Compression of ranges is disabled by the [nocompress] package option. - -o Sort citations into ascending order (this is the default, but may also - be declared with the package option [sort]). The [nosort] package option - turns off sorting. Sortable citations must fit one of these forms: - 1. - 2. - 3. - Forms 1 and 2 are really the same, and they mix well, but form 3 is - separate and if used simultaneously with form 1 the citations become, - ummm, mixed. Non-sortable forms (those not listed) are printed before - all sortable forms. Here means a positive integer (natural - number) less than some limit (different for each form), - is a single printable character (or nothing), and is also - a single printable character. - -o Sorting of citations with prefix and/or suffix characters is done so so - different prefixes are grouped separately, and suffixes form sub-lists - for the same number. Compression knows about suffixes, so you can get - lists like [18a-18c,19] or [A2,Q1,Q3-Q5]. +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). Penalties are \citepunctpenalty and - \citemidpenalty. - -o Put a high-penalty breakpoint (value \citeprepenalty) before the citation - (unless there is a different penalty specified there). Also, adjust the - spacing: if there is no space or if there is extra space due to some - punctuation, then change to one inter-word space. E.g., - A space will be inserted here\cite{Larry,Curly,Moe}. - -o All breaks can be forbidden with the [nobreak] package option. They can - be adjusted independently by setting the parameters \citeprepenalty, - \citemidpenalty, and \citepunctpenalty. Use \mathchardef to change these - penalty values! E.g., \mathchardef\citeprepenalty=9999 (Yes, that is - obscure but I don't want to use up counters or to pretend they are counters.) - -o With package option [superscript] (or [super] for short), display citation - numbers as superscripts (unless they have optional notes, causing them to - be printed on-line with brackets). Superscripted citations follow these - additional rules: - --> Superscript citations use THE SAME INPUT FORMAT as ordinary citations; this - style will ignore spaces before the citation, and move trailing punctuation - before the superscript citation. For example, "information \cite{source};" - ignores the space before \cite and puts the semicolon before the number, - just as if you had typed "information;$^{12}$". You may switch off movement - with the [nomove] package option (only relevant with [superscript]). - --> The punctuation characters that will migrate before the superscript are - listed in the macro \CiteMoveChars, which you can redefine. The default - set of characters is ".,;:"; Perhaps ! and ? should be included too, but - they weren't listed in the APS style manual I looked at, and I agree with - that design choice because they put too much visual separation between the - cite and what it applies to. Feel free to redefine \CiteMoveChars. Quotes - were listed as coming before the cite notation, but they should be typed - before the \cite command in any case because both on-line and superscript - cites come after what is quoted (when citing a quotation). This gives one - difficulty -- punctuation following quotes won't migrate inside the - quotation: e.g., "``Transition State Theory''\cite{Eyring}." gives out - ``Transition State Theory''.$^8$, but you may want the period inside the - quotes, thus: ``Transition State Theory.''$^8$. - --> Doubling of periods (.., ?., !.) is checked for and suppressed. The spacing - after the citation is set according to the final punctuation mark moved. - There is a problem with double periods after a capitalized abbreviation - or directly after \@ : Both of "N.A.S.A. \cite{space}." and "et al.\@ - \cite{many}." will give doubled periods. These can be fixed as follows: - "N.S.A\@. \cite{space}." and "et al.\ \cite{many}.". The NSA example - gives the wrong spacing when there is no citation. Sorry. Use "\ " after - abbreviations like et al. to get the right spacing within a sentence whether - or not a citation follows. - --> Remember, these rules regarding punctuation only apply when the [super] - or [superscript] option was given (or overcite.sty used) and the [nomove] - option was NOT given. + dashes, and after punctuation). -o Define \citen to get just the numbers without the brackets or superscript - and extra formatting. Aliases are \citenum and \citeonline for easy - conversion to other citation packages. +o Adjust spacing before citation. + +o All breaks can be forbidden with the [nobreak] package option. -o All of \nocite, \cite, and \citen ignore spaces in the input tags. +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. -Although each \cite command sorts its numbers, better compression into -ranges can usually be achieved by carefully selecting the order of the -\bibitem entries or the order of initial citations when using BibTeX. -Having the entries pre-sorted will also save processing time, especially -for long lists of numbers. +o Define \citen to get just the numbers without the brackets or superscript + and extra formatting. Aliases are \citenum and \citeonline. -Customization: -~~~~~~~~~~~~~~ -There are several options for \usepackage{cite}, some already mentioned. +There are several package options for \usepackage{cite}. [superscript] use superscrpts for cites without optional notes [super] alias for [superscript] (like natbib) - [verbose] UNUSED NOW! (do repeat duplicate warnings) - [ref] uses the format "[Ref.~12, given note]" (useful with - the superscript option) [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 @@ -656,71 +608,14 @@ There are several options for \usepackage{cite}, some already mentioned. [adjust] is the default [nocompress] inhibit compression of consecutive numbers into ranges [compress] is the default - [biblabel] define the bibliography label as a superscript + [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. -There are several commands that you may redefine (using \renewcommand -or \def) to change the formatting of citation lists: - -command function default ----------- ----------------------- ---------------------------- -\citeform reformats each number nothing -\citepunct printed between numbers comma + penalty + thin space -\citeleft left delimiter of list [ -\citeright right delimeter of list ] -\citemid printed before note comma + penalty + space -\citedash used in a compressed range endash + penalty -\CiteMoveChars charcters that move .,:; -\OverciteFont font sel. for superscripts \fontsize{\sf@size}... - -The left/mid/right commands don't affect the formatting of superscript -citations. You may use \renewcommand to change any of these. Remember, -these commands are extensions made by this package; they are not regular -LaTeX. Some examples of changes: - -1: \renewcommand\citeform[1]{\romannumeral 0#1}} % roman numerals i,vi -2: \renewcommand\citeform[1]{(#1)} % parenthesized numbers (1)-(5),(9) -3: \renewcommand\citeform{\thechapter.} % by chapter: ^{2.18-2.21} -4: \renewcommand\citepunct{,} % no space and no breaks at commas -5: \renewcommand\citemid{; } % semicolon before optional note -6: \renewcommand\citeleft{(} % parentheses around list with note - \renewcommand\citeright{)} % parentheses around list with note - -The appearance of the whole citation list is governed by \@cite, (for full- -sized cites) and \@citess (for superscripts). For more extensive changes -to the formatting, redefine these. For example, to get brackets around the -list of superscript numbers you can do: - - \def\@citess#1{\textsuperscript{[#1]}} - -after \makeatletter. - -Related Note: The superscript option does not affect the numbering format -of the bibliography; the "[12]" style is still the default. To get -superscripts in the bibliography (at any time) you can define - - \renewcommand\@biblabel[1]{\textsuperscript{#1}} - -Aw, OK, for your convenience, there is the [biblabel] package option that -just performs this definition (sort of). - -Line breaking can be turned off using the [nobreak] option. It can be -controlled more precisely by changing three numeric values, assigned -with \mathchardef, for controlling the line-break penalties: - -\citeprepenalty penalty before cite default \@highpenalty -\citemidpenalty penalty used in \citemid default \@medpenalty -\citepunctpenalty penalty used in \citepunct default 1000 - -(Use \mathchardef assignments like \mathchardef\citemidpenalty=900. -These were chosen so as to not waste registers.) Alternatively, the -commands \citemid, \citedash, and \citepunct can be redefined to use -different penalty parameters, or none at all. - - +See more detailed instructions in cite.pdf (cite.ltx). % Version 1991: Ignore spaces after commas in the parameter list. Move most of @@ -751,12 +646,14 @@ different penalty parameters, or none at all. % 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. +% 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 @@ -765,4 +662,4 @@ different penalty parameters, or none at all. % Send problem reports to asnd@triumf.ca Test file integrity: ASCII 32-57, 58-126: !"#$%&'()*+,-./0123456789 -:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~ \ No newline at end of file +:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~ diff --git a/Master/texmf-dist/tex/latex/cite/overcite.sty b/Master/texmf-dist/tex/latex/cite/overcite.sty index 565ac4cd3aa..ccec9ccdde4 100644 --- a/Master/texmf-dist/tex/latex/cite/overcite.sty +++ b/Master/texmf-dist/tex/latex/cite/overcite.sty @@ -1,422 +1,21 @@ % O V E R C I T E . S T Y % -% version 3.8 (Apr 1999) +% version 4.0 (May 2003) % % Compressed, sorted lists of superscript numerical citations. -% see also CITE.STY and DRFTCITE.STY % -% Copyright (C) 1989-1999 by Donald Arseneau +% Copyright (C) 2003 by Donald Arseneau % These macros may be freely transmitted, reproduced, or modified % provided that this notice is left intact. % -% Instructions follow \endinput. -% ------------------------------------ -% First, ensure that some catcodes have the expected values -\edef\citenum{% to restore funny codes - \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`\` 12 -\catcode`\' 12 -\catcode`\= 12 -\catcode`\_ 8 -\catcode`\: 12 - -% Handle optional variations: -% [ verbose, nospace, space, ref, nosort, nomove, noadjust], -% \citeform,\citeleft,\citeright,\citemid,\citepunct,\citedash -% -% Set defaults: - -% [ on the left. Option [ref] does: [Ref. 12, note] -\@ifundefined{citeleft}{\let\citeleft=[}{} - -% ] on the right: -\@ifundefined{citeright}{\let\citeright=]}{} - -% , (comma space) before note -\@ifundefined{citemid}{\def\citemid{,\penalty\@medpenalty\ }}{} - -% , (comma thin-space) between entries; [nospace] eliminates the space -\@ifundefined{citepunct}{ - \def\citepunct{,\penalty\@m\hskip.13emplus.1emminus.1em}% - }{} - -% -- (endash) designating range of numbers: -% (using \hbox avoids easy \exhyphenpenalty breaks) -\@ifundefined{citedash}{\def\citedash{\hbox{--}\penalty\@m }}{} - -% Each number left as-is: -\@ifundefined{citeform}{\def\citeform{}}{} - -% Do not repeat warnings. [verbose] reverses -\let\oc@verbo\relax - -% Default is to move punctuation: -\def\oc@movep#1{\futurelet\@tempb\@citey} -\let\@citey\oc@movep % Temporary - -\@ifundefined{DeclareOption}{}% -{ \toks@={\def\oc@verbo#1#2#3#4{}} - \DeclareOption{verbose}{\the\toks@} - \DeclareOption{nospace}{\def\citepunct{,\penalty\@m}} - \DeclareOption{space}{\def\citepunct{,\penalty\@highpenalty\ }} - \DeclareOption{ref}{\def\citeleft{[Ref.\penalty\@M\ }} - \DeclareOption{nosort}{\def\@addto@cite@list - {\edef\@cite@list{\@cite@list \@celt{\@B@citeB}}}} - \DeclareOption{sort}{\let\@cite@list\relax}% default! - \DeclareOption{nomove}{\def\oc@movep{\@tempa}}% Don't move punctuation - \DeclareOption{move}{\let\oc@movep\@citey}% default definition - \DeclareOption{noadjust}{\let\cite@adjust\@empty}% Don't change spaces - \DeclareOption{adjust}{\let\cite@adjust\relax}% adjust space before [ ] - \ProvidesPackage{overcite}[1999/04/23 \space v 3.8] - \ProcessOptions -} - -%---------------------- -% \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}." -% -\edef\citen{\noexpand\protect \expandafter\noexpand\csname citen \endcsname} - -\@namedef{citen }#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\@h@ld\relax % nothing held from list yet -\let\@citea\@empty % no punctuation preceding first -\let\@celt\delimiter % an unexpandable, but identifiable, token -\def\@cite@list{}% % empty list to start -\@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 -\let\@celt\@compress@cite \@cite@list % output number list with compression -\@h@ld % output anything held over -\endgroup} - -% For each citation, check if it is defined and if it is a number. -% if a number: insert it in the sorted \@cite@list -% otherwise: output it immediately. -% -\def\@make@cite@list{% - \expandafter\let \expandafter\@B@citeB - \csname b@\@citeb\@extra@b@citeb \endcsname - \ifx\@B@citeB\relax % undefined: output ? and warning - \@citea {\bf{?}}\let\@citea\citepunct \G@refundefinedtrue - \@warning {Citation `\@citeb' on page \thepage\space undefined}% - \oc@verbo \global\@namedef{b@\@citeb\@extra@b@citeb}{?}% - \else % defined % remove previous line to repeat warnings - \ifcat _\ifnum\z@<0\@B@citeB _\else A\fi % a positive number, put in list - \@addto@cite@list - \else % citation is not a number, output immediately - \@citea \citeform{\@B@citeB}% - \let\@citea\citepunct - \fi\fi} - -% Regular definition for adding entry to cite list, with sorting - -\@ifundefined{@addto@cite@list}{% sort option either declared or defaulted - \def\@addto@cite@list{\@tempcnta\@B@citeB \relax - \ifnum \@tempcnta>\@tempcntb % new highest, add to end (efficiently) - \edef\@cite@list{\@cite@list \@celt{\@B@citeB}}% - \@tempcntb\@tempcnta - \else % arbitrary number: insert appropriately - \edef\@cite@list{\expandafter\@sort@celt \@cite@list \@gobble @}% - \fi} -% -% \@sort@celt inserts number (\@tempcnta) into list of \@celt{num} (#1{#2}) -% \@celt must not be expandable; list should end with two vanishing tokens. -% - \def\@sort@celt#1#2{\ifx \@celt #1% parameters are \@celt {num} - \ifnum #2<\@tempcnta % number goes later in list - \@celt{#2}% - \expandafter\expandafter\expandafter\@sort@celt % continue - \else % number goes here - \@celt{\number\@tempcnta}\@celt{#2}% stop comparing - \fi\fi} -}% end sort option definitions -{}% nosort definition is done in options processing - -% Check if each number follows previous and can be put in a range -% -\def\@compress@cite#1{% % This is executed for each number - \advance\@tempcnta\@ne % Now \@tempcnta is one more than the previous number - \ifnum #1=\@tempcnta % Number follows previous--hold on to it - \ifx\@h@ld\relax % first pair of successives - \edef\@h@ld{\@citea \noexpand\citeform{#1}}% - \else % compressible list of successives - \def\@h@ld{\citedash \citeform{#1}}% - \fi - \else % non-successor -- dump what's held and do this one - \@h@ld \@citea \citeform{#1}\let\@h@ld\relax - \fi \@tempcnta#1\let\@citea\citepunct -} - -% Make \cite robust and choose superscript or normal -% -\edef\cite{\noexpand\protect\expandafter\noexpand\csname cite \endcsname} - -\@namedef{cite }{\@ifnextchar[{\@tempswatrue\@citex}{\@tempswafalse\@citew}} - -% \cite command has optional note, so do on line. +% This package is provided for compatibility with the original +% overcite.sty. All it does is invoke cite.sty with the option +% [superscript]. % -\def\@citex[#1]#2{\leavevmode - \cite@adjust - \citeleft{\citen{#2}\citemid{#1}% - \spacefactor\@m % punctuation in note doesn't affect outside - }\citeright} - -% 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. +% It would be a shame to lose this pun. % -\@ifundefined{cite@adjust}{\def\cite@adjust{% - \@tempskipa\lastskip \edef\@tempa{\the\@tempskipa}\unskip - \ifnum\lastpenalty=\z@ \penalty\@highpenalty \fi - \ifx\@tempa\@zero@skip \spacefactor1001 \fi % if no space before, set flag - \ifnum\spacefactor>\@m \ \else \hskip\@tempskipa \fi}}{} - -% No note, so superscript, but check for punctuation first. -% -\def\@citew#1{\begingroup \leavevmode \unskip - \def\@tempa{\@tempcnta\spacefactor - \/% this allows the last word to be hyphenated, and it looks better. - \@cite{\citen{#1}}\spacefactor\@tempcnta\endgroup}% - \oc@movep\relax}% check for following punctuation (depending on options) - -% Move trailing punctuation before the citation: -% -\def\@citey{\let\@tempc\oc@movep - % Watch for double periods and suppress them - \ifx\@tempb.\ifnum\spacefactor<3000 .\fi - % Move other punctuation - \else\ifx\@tempb,,% - \else\ifx\@tempb::% add other punctuation as necessary, - \else\ifx\@tempb;;% with balancing \fi s - \else\let\@tempc\@tempa - \fi\fi\fi\fi - \@tempc}% -% -% Replacement for \@cite which defines the formatting normally done -% around the citation list. This uses superscripts with no brackets. -% HOWEVER, trailing punctuation has already been moved over. The -% format for cites with note is given by \@citex. Redefine \@cite and/ -% or \@citex to get different appearance. I don't use \textsuperscript -% because it is defined badly in compatibility mode. - -\def\@cite#1{\mbox{$\m@th^{\hbox{\@ove@rcfont#1}}$}} - -\@ifundefined{selectfont}{% original LaTeX 2.09 - \def\@ove@rcfont{\the\scriptfont\z@ \def\bf{\the\scriptfont\bffam}} - }{% NFSS - \@ifundefined{fontsize}{% \fontsize undefined: strange NFSS - \def\@ove@rcfont{\the\scriptfont\z@}\let\bf\relax % hope this works - }{% `normal' NFSS LaTeX2e, including compatibility mode - \def\@ove@rcfont{% not needed: \csname S@\f@size\endcsname - \fontsize\sf@size\baselineskip\selectfont} - }} - -\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 \citen. -% -\edef\nocite{\noexpand\protect\expandafter\noexpand\csname nocite \endcsname} - -\@namedef{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{\xdef\@no@sparg{\@ignsp#1 \! }% remove *ALL* spaces - \if@filesw \immediate\write\@auxout {\string\citation {\@no@sparg}}\fi} - -% for ignoring *ALL* spaces in the input. This presumes there are no -% \outer tokens and no \if-\fi constructs in the parameter. Spaces inside -% braces are retained. -% -\def\@ignsp#1 {\ifx\!#1\@empty\else #1\expandafter\@ignsp\fi} - -\let\nocitecount\relax % in case \nocitecount was used for drftcite - -\@ifundefined{@extra@b@citeb}{\def\@extra@b@citeb{}}{} -% in case no fancy bib package (chapterbib) defines this - -\@ifundefined{G@refundefinedtrue}{\let\G@refundefinedtrue\relax}{} - -\citenum % execute restore-catcodes - -% Aliases: -\let\citenum\citen -\let\citeonline\citen - -\endinput -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - - - OVERCITE.STY - -Modify LaTeX's normal citation mechanism to: - -o Display citations as superscript numbers, with a comma and a small space - between each number, and with three or more consecutive numbers compressed - into a range like 3-7. - -o By default, sort citation numbers into ascending order; print non-numbers - before numbers. All numbers should be greater than zero. (The [nosort] - package option turns off sorting.) - -o If an optional note is given, typeset the whole list of citations at regular - size as if cite.sty was in effect. (See cite.sty). - -o Use THE SAME INPUT FORMAT as for ordinary citations; this style will ignore - spaces before the citation, and move trailing punctuation to before the - citation. For example, "...information \cite{source};" ignores the space - before \cite and puts the semicolon before the number, just as if you typed - "...information;$^{12}$". - -o The punctuation that will migrate before the superscript is .,;:. Perhaps - ! and ? should too, but they weren't listed in the APS style manual I looked - at. Quotes were listed, but they should never have to migrate because both - on-line and superscript versions put quotes before the citation. This gives - one difficulty --- punctuation following quotes won't migrate inside the - quotation. For example, "``Transition State Theory''\cite{Eyring}." gives - "``Transition State Theory''.$^8$", but you may want the period inside the - quotes, thus: ``Transition State Theory.''$^8$. - -o Doubling of periods (.., ?., !.) is checked for and suppressed. The spacing - after the citation is set according to the final punctuation mark moved. - There is a problem with double periods after a capitalized abbreviation - or directly after \@ : Both of "N.A.S.A. \cite{space}." and "et al.\@ - \cite{many}." will give doubled periods. These can be fixed as follows: - "N.A.S.A\@. \cite{space}." and "et al.\ \cite{many}.". These work properly - for both cite.sty and overcite.sty, but the NASA example gives the wrong - spacing when there is no citation. Sorry. Use \ after abbreviations like - et al. to get the right spacing within a sentence whether or not a citation - follows. - -o All the special handling of punctuation can be disabled by specifying the - [nomove] option. - -o Define \citen to get just the numbers without the brackets or superscript - and extra formatting. Aliases are \citenum and \citeonline for easy - conversion to other citation packages. - -o `Citation...undefined' warnings are only given once per undefined citation - tag. In the text, missing numbers are represented with a bold `?' at the - first occurrence, and with a normal `?' thenceforth. The package option - [verbose] restores the usual repeated warnings. - -o Make \nocite, \cite, and \citen all ignore spaces in the input tags. - -Although each \cite command sorts its numbers, better compression into -ranges can usually be achieved by carefully selecting the order of the -\bibitem entries or the order of initial citations when using BibTeX. -Having the entries pre-sorted will also save processing time, especially -for long lists of numbers. - -Customization: -~~~~~~~~~~~~~~ -Under LaTeX2e, there are six options for \usepackage{overcite}: - - [verbose] causes warnings for undefined citations to be repeated each time - they are used. - [ref] uses the format `[Ref.~12, optional note]' when \cite[]{} appears. - [nospace] eliminates the spaces after commas in the number list. - [space] uses a full inter-word space with no penalty after the commas - [nosort] prevents sorting of the numbers (default is to sort, and a - [sort] option is provided for completeness). - [nomove] prevents moving the superscript cite after punctuation. - [noadjust] disables `smart' handling of space before a cite with note. - -There are several commands that you may redefine to change the formatting -of citation lists: - -command function default ----------- ----------------------- ---------------------------- -\citeform reformats each number nothing -\citepunct printed between numbers comma + penalty + thin space -\citeleft left delimiter of list [ -\citeright right delimeter of list ] -\citemid printed before note comma + space -\citedash used in a compressed range endash + penalty - -The left/mid/right commands only affect the formatting of citations with -optional notes: \cite[xxx]{yyy}. You may use \renewcommand to change any -of these. Remember, these commands are extensions made by this package; -they are not regular LaTeX. Some examples of changes: - -1: \renewcommand\citeform[1]{\romannumeral 0#1}} % roman numerals ^{i,vi} -2: \renewcommand\citeform[1]{(#1)} % parenthesized numbers ^{(1)-(5)} -3: \renewcommand\citeform{\thechapter.} % by chapter: ^{2.18-2.21} -4: \renewcommand\citepunct{,} % no space and no breaks at commas -5: \renewcommand\citemid{; } % semicolon before optional note -6: \renewcommand\citeleft{(} % parentheses around list with note - \renewcommand\citeright{)} % parentheses around list with note - -The appearance of the whole citation list is governed by \@cite, (for no -note) and \@citex (when a note is given). For more extensive changes to the -formatting, redefine \@cite and/or \@citex. For example, to get brackets -around the list of superscript numbers you can do: - - \def\@cite#1{\mbox{$\m@th^{\hbox{\@ove@rcfont[#1]}}$}} -or - \def\@cite#1{\textsuperscript{[#1]}} - -after \makeatletter. - -Related Note: overcite.sty does not affect the numbering format of -the bibliography; the "[12]" style is still the default. To get -superscripts in the bibliography (at any time) you can include - - \renewcommand\@biblabel[1]{$^{#1}$} - -in your personal style file, or include - - \makeatletter \renewcommand\@biblabel[1]{$^{#1}$} \makeatother - -directly in your document. If this does not work, your LaTeX and/or -document style are very outdated. - -\@extra@b@citeb is a hook for other style files to further specify -citations; for example, to number by chapter (see chapterbib.sty). - -See also cite.sty for enhanced [5-9] type citations, and drftcite.sty -for draft mode citations. - -% 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. -% -% Send problem reports to asnd@Reg.triumf.ca - -Test file integrity: ASCII 32-57, 58-126: !"#$%&'()*+,-./0123456789 -:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~ +% ------------------------------------ + \ProvidesPackage{overcite}[2003/05/27 \space v 4.0] + \DeclareOption*{\PassOptionsToPackage{\CurrentOption}{cite}} + \ProcessOptions + \RequirePackage[superscript]{cite} -- cgit v1.2.3