summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/tex/latex/cite/overcite.sty
diff options
context:
space:
mode:
Diffstat (limited to 'Master/texmf-dist/tex/latex/cite/overcite.sty')
-rw-r--r--Master/texmf-dist/tex/latex/cite/overcite.sty423
1 files changed, 412 insertions, 11 deletions
diff --git a/Master/texmf-dist/tex/latex/cite/overcite.sty b/Master/texmf-dist/tex/latex/cite/overcite.sty
index ccec9ccdde4..565ac4cd3aa 100644
--- a/Master/texmf-dist/tex/latex/cite/overcite.sty
+++ b/Master/texmf-dist/tex/latex/cite/overcite.sty
@@ -1,21 +1,422 @@
% O V E R C I T E . S T Y
%
-% version 4.0 (May 2003)
+% version 3.8 (Apr 1999)
%
% Compressed, sorted lists of superscript numerical citations.
+% see also CITE.STY and DRFTCITE.STY
%
-% Copyright (C) 2003 by Donald Arseneau
+% Copyright (C) 1989-1999 by Donald Arseneau
% These macros may be freely transmitted, reproduced, or modified
% provided that this notice is left intact.
%
-% This package is provided for compatibility with the original
-% overcite.sty. All it does is invoke cite.sty with the option
-% [superscript].
-%
-% It would be a shame to lose this pun.
-%
+% Instructions follow \endinput.
% ------------------------------------
- \ProvidesPackage{overcite}[2003/05/27 \space v 4.0]
- \DeclareOption*{\PassOptionsToPackage{\CurrentOption}{cite}}
+% 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
- \RequirePackage[superscript]{cite}
+}
+
+%----------------------
+% \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.
+%
+\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.
+%
+\@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{|}~