From e359d674f651a5bec03fb71d8ce17c22fca3b6dc Mon Sep 17 00:00:00 2001 From: Karl Berry Date: Thu, 17 Dec 2009 23:52:16 +0000 Subject: pagerange 0.3 (16dec09) git-svn-id: svn://tug.org/texlive/trunk@16438 c570f23f-e606-0410-a88d-b1316a301751 --- .../tex/latex/pagerange/pagerange-guide.cfg | 6 +- .../texmf-dist/tex/latex/pagerange/pagerange.sty | 129 ++++++++++++--------- 2 files changed, 80 insertions(+), 55 deletions(-) (limited to 'Master/texmf-dist/tex/latex/pagerange') diff --git a/Master/texmf-dist/tex/latex/pagerange/pagerange-guide.cfg b/Master/texmf-dist/tex/latex/pagerange/pagerange-guide.cfg index 623df949a11..1647320f8b5 100644 --- a/Master/texmf-dist/tex/latex/pagerange/pagerange-guide.cfg +++ b/Master/texmf-dist/tex/latex/pagerange/pagerange-guide.cfg @@ -1,5 +1,7 @@ \ProvidesFile{pagerange-guide.cfg}% - [2009/11/07 v0.2 Configuration file for pagerange-guide.tex (A.Musa)] + [2009/12/10 v0.3 Configuration file for pagerange-guide.tex (A.Musa)] +\usepackage{mathpazo} +\usepackage[scaled=0.9]{helvet} \usepackage{xspace} \usepackage{xcolor} \usepackage{shortvrb} @@ -46,4 +48,4 @@ \definecolor{xgreen}{rgb}{0.00,0.59,0.00} \newcommand*\result[1]{\textcolor{xgreen}{#1}} -\endinput \ No newline at end of file +\endinput \ No newline at end of file diff --git a/Master/texmf-dist/tex/latex/pagerange/pagerange.sty b/Master/texmf-dist/tex/latex/pagerange/pagerange.sty index 36d7b3ca408..97d2b9361c7 100644 --- a/Master/texmf-dist/tex/latex/pagerange/pagerange.sty +++ b/Master/texmf-dist/tex/latex/pagerange/pagerange.sty @@ -1,5 +1,5 @@ %+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++% -% This is file 'pagerange.sty', version 0.2. % +% This is file 'pagerange.sty', version 0.3. % % % % This work may be distributed and/or modified under the conditions % % of the LaTeX Project Public License, either version 1.3 of this % @@ -17,68 +17,82 @@ % Copyright (c) 2009 Ahmed Musa (a.musa@rocketmail.com). % %+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++% -\ProvidesPackage{pagerange}[2009/11/10 v0.2 Split page ranges intelligently] +\ProvidesPackage{pagerange}% + [2009/11/10 v0.3 Split page ranges intelligently (Ahmed Musa)] \NeedsTeXFormat{LaTeX2e}[1996/12/01] \def\prg@warn#1{\PackageWarningNoLine{pagerange}{#1}} \def\prg@err#1{\PackageError{pagerange}{#1}{\@ehc}} -\RequirePackage{lastpage}[1994/06/25] -\RequirePackage{xkeyval}[2008/08/13] -\ifcase\ifx\eTeXversion\@undefined\@ne\else - \ifnum\eTeXversion<\tw@\@ne\fi\fi\z@ +\@ifpackageloaded{lastpage}{}{\RequirePackage{lastpage}[1994/06/25]} +\@ifpackageloaded{xkeyval}{}{\RequirePackage{xkeyval}[2008/08/13]} +\ifcase0% + \ifx\eTeXversion\@undefined 1\else\ifnum\eTeXversion<\tw@ 1\fi\fi \else - \prg@err{This package requires eTeX version 2 or later}% + \prg@err{eTeX not loaded or old version.\MessageBreak + This package requires eTeX version 2 or later.} \fi \def\prg@ifdef#1{\csname @\ifdefined#1\expandafter first\else \expandafter second\fi oftwo\endcsname } \def\prg@ifundef#1{% - \prg@ifdef#1{\csname @\ifx#1\relax\expandafter first\else + \prg@ifdef{#1}{\csname @\ifx#1\relax\expandafter first\else \expandafter second\fi oftwo\endcsname}{\@firstoftwo}% } +\def\prg@ifcsundef#1{\expandafter\prg@ifundef\csname#1\endcsname} \def\prg@check@ifdef#1{% - \expandafter\prg@ifundef\csname#1\endcsname{}{% + \prg@ifcsundef{#1}{}{% \prg@err{\expandafter\noexpand\csname#1\endcsname already defined}}% \prg@check@ifdef } -\prg@check@ifdef{pagerange}{pagestart}{pageend}{orighyphencode}% +\prg@check@ifdef{pagerange}{pagestart}{pageend}{getpagenumber}% \iffalse\fi\fi\endcsname{}{} -\newcount\orighyphencode\orighyphencode=\the\catcode45\relax -\AtEndOfPackage{\catcode45=\orighyphencode} -\@makeother\- -\chardef\active=13\relax -\begingroup - \catcode`\&=3\relax - \long\gdef\prg@ifblank#1{% credit: ifmtarg.sty - \prg@ifblank@i#1&&\@secondoftwo\@firstoftwo:} - \long\gdef\prg@ifblank@i#1#2#4#5:{#4} -\endgroup -\long\def\prg@xifblank#1{\begingroup - \protected@edef\@tempa{\endgroup\noexpand\prg@ifblank{#1}}% - \@tempa +\edef\prg@restorecodes{% + \catcode45=\the\catcode45\relax % - + \catcode38=\the\catcode38\relax % & } -\define@boolkeys[KV]{pagerange}[prg@]{acceptempty,hyperlink}[true] -\define@cmdkey[KV]{pagerange}[prg@]{tie}[-]{% - \edef\prg@tie{\prg@tie}% - \prg@ifmacro\prg@tie +\AtEndOfPackage{\prg@restorecodes} +\catcode38=3\relax +\@makeother\-% +\long\gdef\prg@ifblank#1{% macro credit: ifmtarg.sty + \prg@ifblank@aux#1&&\@secondoftwo\@firstoftwo:} +\long\gdef\prg@ifblank@aux#1#2#4#5:{#4} +\long\def\prg@xifblank#1{\begingroup + \protected@edef\x{\endgroup\noexpand\prg@ifblank{#1}}\x% } +\chardef\active=13\relax \def\prg@ifmacro#1{% - \prg@ifdef#1{% - \expandafter\def\expandafter\getparameter - \detokenize{macro}:##1->##2##3@stop{\prg@ifblank{##1}{% - \prg@ifblank{##3}{}{\prg@ismacro@err#1}}{\prg@ismacro@err#1} + \prg@ifdef{#1}\relax{\prg@err{\string#1 undefined}}% + \begingroup + \edef\x{\endgroup + \noexpand\def\noexpand\getparameter####1\detokenize{macro}:####2&{% + \noexpand\prg@ifblank{####2}{\noexpand\@secondoftwo}% + {\noexpand\@firstoftwo}% }% - \expandafter\getparameter\meaning#1@stop - }{\prg@err{\string#1 undefined}}% + \noexpand\expandafter\noexpand\getparameter% + \noexpand\meaning\noexpand#1\detokenize{macro}:&% + }\x +} +\def\prg@ismacro@err#1{% + \prg@err{% + Illegal tie '#1'.\MessageBreak + Note that the 'tie' has been fully expanded \MessageBreak + and may be different from what you submitted.\MessageBreak + Perhaps you've used an active character as 'tie' + }% +} +\define@boolkeys[KV]{pagerange}[prg@]{acceptempty}[true] +\define@cmdkey[KV]{pagerange}[prg@]{tie}[-]{% + \edef\prg@tie{\prg@tie}% + \expandafter\prg@ifmacro\prg@tie{\prg@ismacro@err\prg@tie}{} } -\def\prg@ismacro@err#1{\prg@err{Illegal 'tie'}} +\define@cmdkey[KV]{pagerange}[prg@]{defaultfirstpage}[1]{} +\define@cmdkey[KV]{pagerange}[prg@]{defaultlastpage}[\getpagenumber{LastPage}]{} \DeclareOptionX*{\prg@warn{Unknown option '\CurrentOption' ignored}} -\ExecuteOptionsX{tie} +\ExecuteOptionsX{tie,defaultfirstpage,defaultlastpage} \ProcessOptionsX*\relax \gdef\pagerangeoptions#1{\setkeys[KV]{pagerange}{#1}} \long\def\prg@forall#1#2\do#3{% #3{#1}% - \begingroup\expandafter\expandafter\expandafter\endgroup - \ifx\relax#2\relax% + \ifx\\#2\\% \relax \else \prg@forall#2\do{#3}% @@ -90,7 +104,7 @@ \long\def\prg@split@pagerange#1{% \def\reserved@a{#1}% \ifx\reserved@a\prg@tie - \advance\prg@cntx\@ne + \advance\prg@cntx\@ne\relax \fi \ifnum\prg@cntx=\z@ \g@addto@macro\pagestart{#1}% @@ -99,7 +113,8 @@ \g@addto@macro\pageend{#1}% \fi \else\ifnum\prg@cntx>\@ne - \prg@err{Multiple ties in page range} + \prg@err{Multiple ties in page range.\MessageBreak + Please use only one tie}% \fi\fi\fi } \newcount\prg@cnta\prg@cnta=\z@\relax @@ -112,38 +127,46 @@ \ifprg@acceptempty \prg@warn{Blank page range supplied:\MessageBreak I've therefore set the range as 1-1 and continued} - \def\pagestart{1}% - \def\pageend{1}% + \let\pagestart\prg@defaultfirstpage + \let\pageend\prg@defaultlastpage \else - \prg@err{Blank page range} + \prg@err{Blank page range.\MessageBreak + If you really mean blank pagerange,\MessageBreak + then also use 'acceptempty' boolean option + }% \fi }{% - \begingroup - \edef\@tempa{\endgroup% + \begingroup\edef\@tempa{\endgroup% \noexpand\prg@forall#1\noexpand\do{\noexpand\prg@split@pagerange}}% \@tempa }% \ifx\@empty\pagestart \ifnum\prg@cntx=\@ne - \def\pagestart{1}% + \let\pagestart\prg@defaultfirstpage \fi \fi - \prg@cnta=\pagestart\relax + \prg@cnta=\number\pagestart\relax \ifx\@empty\pageend - \prg@cntb=100000\relax + \prg@cntb=\@M\relax \ifnum\prg@cntx=\@ne - \ifprg@hyperlink - \def\pageend{\pageref{LastPage}}% - \else - \def\pageend{\pageref*{LastPage}}% - \fi + \let\pageend\prg@defaultlastpage \fi \else \prg@cntb=\number\pageend\relax \fi \ifnum\prg@cnta>\prg@cntb - \prg@err{Inconsistent page range} + \prg@err{Inconsistent page range: Page \pageend\space > \pagestart}% \fi } +\def\prg@carr#1#2#3\@nil{% + \ifx\relax#3\relax\prg@err{Problem with page reference}\fi + #2% +} +\def\getpagenumber#1{% + \prg@ifcsundef{r@#1}{\prg@defaultfirstpage}{% + \expandafter\expandafter\expandafter\prg@carr + \csname r@#1\endcsname\prg@defaultfirstpage\@nil + }% +} \endinput \ No newline at end of file -- cgit v1.2.3