Newsgroups: comp.text.tex Path: utzoo!utgpu!news-server.csri.toronto.edu!rpi!zaphod.mps.ohio-state.edu!wuarchive!m.cs.uiuc.edu!news From: reingold@emr.cs.uiuc.edu (Edward M. Reingold) Subject: Re: short form references like [1-4] In-Reply-To: symons@imec.be's message of 25 Mar 91 15:40:48 GMT Message-ID: <1991Mar26.214011.7266@m.cs.uiuc.edu> Sender: news@m.cs.uiuc.edu (News Database (admin-Mike Schwager)) Nntp-Posting-Host: emr.cs.uiuc.edu Organization: University of Illinois at Urbana-Champaign References: <880@imec.UUCP> Date: 26 Mar 91 15:35:54 Lines: 93 In article <880@imec.UUCP> symons@imec.be (Jan Symons) writes: with LaTeX, the \cite{key1,key2,key3,key4} puts a [1,2,3,4] reference in the text. However, what I want to see is more like [1-4]. Can somebody please explain how this can be achieved with LaTeX ? Here is rangecite.sty that we cobbled together for just this purpose: -----------------------------rangecite.sty--------------------------------- % RANGECITE DOCUMENT-STYLE OPTION FOR ANY STYLE WITH NUMERIC CITATIONS % % This redefines the LaTex \@cite macro to gather consecutive citation numbers % i,i+1,...,j into a range i-j % % Nachum Dershowitz (nachum@cs.uiuc.edu) % Edward M. Reingold (reingold@cs.uiuc.edu) % % These macros are in the public domain. You may use them and copy them at % will, provided you retain the authorship information. We wrote these for % temporary use in a single paper, so use them at your own risk! % % Written 12 Apr 1990 % % \newif\if@first% \newcounter{@@@first}% \newcounter{@@@state}% % % A simple four-state finite automaton: % State 0: No references in current range % State 1: One reference in current range % State 2: Two references in current range % State 3: More than two references in current range % \newcounter{@@@next}% \newcounter{@@@cur}% \newcounter{@@@curt}% \newcommand{\b@@@ENDLIST}{9999}% \def\@citex[#1]#2{% \if@filesw\immediate\write\@auxout{\string\citation{#2}}\fi% \def\@citea{}% \@cite{% \@firsttrue% \setcounter{@@@state}{0}% \@for\@citeb:=#2,@@ENDLIST\do{% \@ifundefined{b@\@citeb}% {{\bf ?}% \@warning{Citation `\@citeb' on page \thepage \space undefined}}% % else% {\setcounter{@@@next}{\csname b@\@citeb\endcsname}% \ifcase\the@@@state% % state 0: \setcounter{@@@state}{1}% \or% state 1: \ifnum\value{@@@next}=\value{@@@curt}% \setcounter{@@@state}{2}% \setcounter{@@@first}{\value{@@@cur}}% \else% \if@first{}\else{,\ }\fi% \the@@@cur% \@firstfalse% \fi% \or% state 2: \ifnum\value{@@@next}=\value{@@@curt}% \setcounter{@@@state}{3}% \else% \setcounter{@@@state}{1}% \if@first{}\else{,\ }\fi% \the@@@first,\ \the@@@cur% \@firstfalse% \fi% \or% state 3: \ifnum\value{@@@next}=\value{@@@curt}% \else% \setcounter{@@@state}{1}% \if@first{}\else{,\ }\fi% \the@@@first-\the@@@cur% \@firstfalse% \fi% \fi% \setcounter{@@@cur}{\value{@@@next}}% \setcounter{@@@curt}{\value{@@@cur}}% \addtocounter{@@@curt}{1}}}}% {#1}}% -- Professor Edward M. Reingold reingold@cs.uiuc.edu Department of Computer Science (217) 333-6733 University of Illinois at Urbana-Champaign 1304 W. Springfield Ave. Urbana, IL 61801-2987 USA