summaryrefslogtreecommitdiff
path: root/2004/netfilter-failover-ols2004/OLS2004-proceedings/texmf/tex/latex/combine/combcite.sty
blob: 12e4800d5c993d9fa0105ff38656e2c66ea3acab (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
%%
%% This is file `combcite.sty',
%% generated with the docstrip utility.
%%
%% The original source files were:
%%
%% combine.dtx  (with options: `citepack')
%% 
%%   Author: Peter Wilson (CUA) now at peter.r.wilson@boeing.com
%%                              (or at: pandgwilson at earthlink dot net)
%%   Copyright 2000, 2001, 2002, 2003 Peter R. Wilson
%% 
%%   This work may be distributed and/or modified under the
%%   conditions of the LaTeX Project Public License, either
%%   version 1.3 of this license or (at your option) any
%%   later version.
%%   The latest version of the license is in
%%      http://www.latex-project.org/lppl.txt
%%   and version 1.3 or later is part of all distributions of
%%   LaTeX version 2003/06/01 or later.
%% 
%%   This work has the LPPL maintenance status "author-maintained".
%% 
%%   This work consists of the files listed in the README file.
%% 
\NeedsTeXFormat{LaTeX2e}
\ProvidesPackage{combcite}[2003/11/09 v1.0 combine version of cite package]
\@ifclassloaded{combine}{}{%
  \PackageError{combcite}{The `combine' class is expected}{\@ehc}}

\newif\ifc@lbsuperopt
  \c@lbsuperoptfalse
\DeclareOption{super}{\ExecuteOptions{superscript}}
\DeclareOption{superscript}{\c@lbsuperopttrue
                            \PassOptionsToClass{superscript}{cite}}
\ProcessOptions
\RequirePackageWithOptions{cite}[2003/11/04]

\DeclareRobustCommand\c@lbciten[1]{%
 \begingroup
  \let\@safe@activesfalse\@empty
%%  \c@lb@nocite{#1}% ignores spaces, writes to .aux file, returns #1 in \@no@sparg
  \@nocite{#1}% ignores spaces, writes to .aux file, returns #1 in \@no@sparg
  \@tempcntb\m@ne    % \@tempcntb tracks highest number
  \let\@h@ld\@empty  % 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{\c@lb@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
 \@restore@auxhandle
 }

\def\c@lb@make@cite@list{%
 \expandafter\let \expandafter\@B@citeB
          \csname B?\jobname?@\@citeb\@extra@b@citeb \endcsname
 \ifx\@B@citeB\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?\jobname?@\@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}

\ifc@lbsuperopt
  \DeclareRobustCommand{\c@lbcite}{%
    \@ifnextchar[{\@tempswatrue\c@lb@citex}{\@tempswafalse\c@lb@citew}}
\else
  \DeclareRobustCommand{\c@lbcite}{%
    \@ifnextchar[{\@tempswatrue\c@lb@citex}{\@tempswafalse\c@lb@citex[]}}
\fi

\def\c@lb@citex[#1]#2{\@cite{\c@lbciten{#2}}{#1}}

\def\c@lb@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{\c@lbciten{#1}}\spacefactor\@tempcnta
     \endgroup \@restore@auxhandle}%
  \oc@movep\relax}% check for following punctuation (depending on options)

\DeclareRobustCommand\c@lbnocite[1]{%
 \@bsphack \@nocite{#1}%
 \@for \@citeb:=\@no@sparg\do{\@ifundefined{B?\jobname?@\@citeb\@extra@b@citeb}%
    {\G@refundefinedtrue\@warning{Citation `\@citeb' undefined}%
    \oc@verbo \global\@namedef{B?\jobname?@\@citeb\@extra@b@citeb}{?}}{}}%
 \@esphack}

\def\@nocite#1{\begingroup\let\protect\string% normalize active chars
 \xdef\@no@sparg{\expandafter\@ignsp#1 \: }\endgroup% and remove ALL spaces
 \if@filesw \immediate\write\@newciteauxhandle % = \@auxout, except with multibib
    {\string\citation {\@no@sparg}}\fi
 }

\g@addto@macro{\setuppapers}{\let\cite\c@lbcite}
\g@addto@macro{\setuppapers}{\let\citenum\c@lbciten}
\g@addto@macro{\setuppapers}{\let\citeonline\c@lbciten}

\endinput
%%
%% End of file `combcite.sty'.
personal git repositories of Harald Welte. Your mileage may vary