\NeedsTeXFormat{LaTeX2e}
\def\Fileversion$#1: #2 ${\gdef\fileversion{#2}}
\def\Filedate$#1: #2-#3-#4 #5 #6 #7 ${\gdef\filedate{#2/#3/#4}}
\Fileversion$Rev: 187 $
\Filedate$LastChangedDate: 2012-08-18 15:06:35 +0530 (Sat, 18 Aug 2012) $
\ProvidesPackage{numcompress}
[\filedate\space\fileversion\space numcompress (CVR)]
\PackageWarningNoLine{numcompress}
{****************************************\MessageBreak
Package numcompress v,\fileversion\space loaded\MessageBreak
[Compress numbers (CVR)]\MessageBreak
****************************************}
\newif\ifdots \dotsfalse
\newif\ifnumcompress \numcompresstrue
\DeclareOption{dots}{\global\dotstrue}
\DeclareOption{nodots}{\global\dotsfalse}
\DeclareOption{compress}{\global\numcompresstrue}
\DeclareOption{nocompress}{\global\numcompressfalse}
\ProcessOptions
\def\removeDot#1{\def\tmp{#1}
\ifx\tmp\@empty\else\@removeDot#1\@nil\fi}
\def\@removeDot#1\@nil{\edef\fchar{\expandafter\@car#1\@nil}
\edef\rchar{\expandafter\@cdr#1!\@nil}
\def\@xmltempa{.}\def\@xmltempb{!}
\ifx\fchar\@xmltempb\relax\else
\ifx\fchar\@xmltempa\relax\else
\fchar\ignorespaces\fi\removeDot{\rchar}\fi}
\def\First[#1]{\csname First#1\endcsname}
\def\Second[#1]{\csname Second#1\endcsname}
\def\parseFirstPage#1{\@tempcnta=0
\@tfor\@digits:=#1\do{
{\global\advance\@tempcnta by 1
\expandafter\xdef\csname
First\the\@tempcnta\endcsname{\@digits}
\xdef\flength{\the\@tempcnta}}}}
\def\parseSecondPage#1{\@tempcnta=0
\@tfor\@digits:=#1\do{
{\global\advance\@tempcnta by 1
\expandafter\xdef\csname
Second\the\@tempcnta\endcsname{\@digits}
\xdef\llength{\the\@tempcnta}}}}
\newif\ifdissimilar\dissimilarfalse
\def\checkequal#1#2{\edef\Farg{#1}\edef\Sarg{#2}
\edef\One{A}
\ifcat\One\Farg \relax\else
\ifdissimilar\Sarg\else
\ifnum\Farg=\Sarg\relax\else\Sarg\dissimilartrue\fi\fi\fi}
\let\@@fpage\@empty
\let\@@lpage\@empty
\def\fpage@compress#1{
\gdef\@@fpage{#1}
\edef\llength{0}
\parseFirstPage{#1}
\ifnum\flength=\llength
\gdef\@fpage{\@@fpage}
\gdef\@lpage{
\@ifundefined{Second1}{}{\checkequal{\First[1]}{\Second[1]}}
\@ifundefined{Second2}{}{\checkequal{\First[2]}{\Second[2]}}
\@ifundefined{Second3}{}{\checkequal{\First[3]}{\Second[3]}}
\@ifundefined{Second4}{}{\checkequal{\First[4]}{\Second[4]}}
\@ifundefined{Second5}{}{\checkequal{\First[5]}{\Second[5]}}
}
\else
\gdef\@fpage{\@@fpage}
\gdef\@lpage{\@@lpage}
\fi}
\def\lpage@compress#1{
\gdef\@@lpage{#1}
\parseSecondPage{#1}
\ifnum\flength=\llength
\gdef\@fpage{\@@fpage}
\gdef\@lpage{
\edef\One{A}
\edef\xFirst{\First[1]}
\edef\xSecond{\Second[1]}
\ifcat\One\xSecond\relax
\ifx\xFirst\xSecond
\@ifundefined{Second1}{}{\checkequal{\First[1]}{\Second[1]}}
\@ifundefined{Second2}{}{\checkequal{\First[2]}{\Second[2]}}
\@ifundefined{Second3}{}{\checkequal{\First[3]}{\Second[3]}}
\@ifundefined{Second4}{}{\checkequal{\First[4]}{\Second[4]}}
\@ifundefined{Second5}{}{\checkequal{\First[5]}{\Second[5]}}
\else#1\fi
\else
\ifx\xFirst\xSecond
\@ifundefined{Second1}{}{\checkequal{\First[1]}{\Second[1]}}
\@ifundefined{Second2}{}{\checkequal{\First[2]}{\Second[2]}}
\@ifundefined{Second3}{}{\checkequal{\First[3]}{\Second[3]}}
\@ifundefined{Second4}{}{\checkequal{\First[4]}{\Second[4]}}
\@ifundefined{Second5}{}{\checkequal{\First[5]}{\Second[5]}}
\else#1\fi
\fi
}
\else
\gdef\@fpage{\@@fpage}
\gdef\@lpage{
\edef\Targ{#1}
\edef\One{A}
\edef\xFirst{\First[1]}
\edef\xSecond{\Second[1]}
\ifx\xFirst\xSecond
\ifcat\One\xSecond\relax\else\@@lpage\fi
\else#1\fi
}
\fi}
\gdef\@@lpage@compress#1--#2\@nil{\lpage@compress{#1}}
\gdef\@@@pages#1#2{\def\next{#2}
\fpage@compress{#1}
\@@lpage@compress#2\@nil
{\@fpage\ifx\next\@empty\relax\else
--\@lpage\fi}\resetall}
\gdef\@@@page#1{#1\resetall}
\def\mk@empty#1{\@tempcnta=1
\loop\ifnum\@tempcnta<6
\expandafter\let\csname#1\the\@tempcnta\endcsname\relax
\advance\@tempcnta by 1 \repeat}
\def\resetall{\let\@lpage\@empty\let\@fpage\@empty
\def\flength{0}\def\llength{0}
\let\@@fpage\@empty\let\@@lpage\@empty
\mk@empty{First}\mk@empty{Second}}
\ifdots
\gdef\xfnm[#1]{\unskip\space#1}
\def\bibinfo#1#2{\@ifnextchar.{\@@bibinfo{#1}{#2}}{\@@@bibinfo{#1}{#2}}}
\def\@@@bibinfo#1#2{\def\next{#1}
\def\@@@pg{pages}\def\@@@au{author}
\ifx\next\@@@pg\bibpages{#2}\else
\ifx\next\@@@au\bibauthor{#2}\else
#2\fi\fi}
\def\@@bibinfo#1#2.{\def\next{#1}
\def\@@@pg{pages}\def\@@@au{author}
\ifx\next\@@@pg\bibpages{#2}.\else
\ifx\next\@@@au\bibauthor{#2}\else
#2.\fi\fi}
\else
\gdef\xfnm[#1]{\unskip\space\removeDot{#1}}
\def\bibinfo#1#2{\def\next{#1}
\def\@@@pg{pages}\def\@@@au{author}
\ifx\next\@@@pg\bibpages{#2}\else
\ifx\next\@@@au\bibauthor{#2}\else
#2\fi\fi}
\fi
\ifnumcompress
\def\bibpages#1{\@@bibpages#1--\\\@nil}
\def\@@bibpages#1--#2\@nil{
\ifx\\#2\relax\@@@page{#1}\else
\@@@pages{#1}{#2}\fi}
\else
\def\bibpages#1{#1}
\fi
\def\bibauthor#1{#1}
\endinput