summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/tex/latex/pagerange
diff options
context:
space:
mode:
authorKarl Berry <karl@freefriends.org>2009-12-17 23:52:16 +0000
committerKarl Berry <karl@freefriends.org>2009-12-17 23:52:16 +0000
commite359d674f651a5bec03fb71d8ce17c22fca3b6dc (patch)
tree5f5483ff521eb29581e56bf31aa486178c32eb72 /Master/texmf-dist/tex/latex/pagerange
parentde6510b7405894d19b970120bca0e3891d1aeb44 (diff)
pagerange 0.3 (16dec09)
git-svn-id: svn://tug.org/texlive/trunk@16438 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master/texmf-dist/tex/latex/pagerange')
-rw-r--r--Master/texmf-dist/tex/latex/pagerange/pagerange-guide.cfg6
-rw-r--r--Master/texmf-dist/tex/latex/pagerange/pagerange.sty129
2 files changed, 80 insertions, 55 deletions
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&#3#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&#3#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<pagerange>{tie}
+\ExecuteOptionsX<pagerange>{tie,defaultfirstpage,defaultlastpage}
\ProcessOptionsX*<pagerange>\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