summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKarl Berry <karl@freefriends.org>2010-02-05 01:24:29 +0000
committerKarl Berry <karl@freefriends.org>2010-02-05 01:24:29 +0000
commit205f178e5bd86f9fd729a2df7d01b0562b11cffe (patch)
tree4f4e287ce3718319369f4e30a4e390f4deff1d4c
parent981cab55c6e13da401f41e77d2a80b5286736404 (diff)
pagerange update (4feb10)
git-svn-id: svn://tug.org/texlive/trunk@16915 c570f23f-e606-0410-a88d-b1316a301751
-rw-r--r--Master/texmf-dist/doc/latex/pagerange/README6
-rw-r--r--Master/texmf-dist/doc/latex/pagerange/pagerange-guide.pdfbin82727 -> 93677 bytes
-rw-r--r--Master/texmf-dist/doc/latex/pagerange/pagerange-guide.tex54
-rw-r--r--Master/texmf-dist/tex/latex/pagerange/pagerange-guide.cfg36
-rw-r--r--Master/texmf-dist/tex/latex/pagerange/pagerange.sty183
5 files changed, 184 insertions, 95 deletions
diff --git a/Master/texmf-dist/doc/latex/pagerange/README b/Master/texmf-dist/doc/latex/pagerange/README
index 878888e88d7..c3d220d17a4 100644
--- a/Master/texmf-dist/doc/latex/pagerange/README
+++ b/Master/texmf-dist/doc/latex/pagerange/README
@@ -1,4 +1,4 @@
-This is the README file for 'pagerange' package, version 0.3.
+This is the README file for 'pagerange' package, version 0.5.
When a given page range xx-yy (simple/plain characters) or
\pages (command token, eg, \def\pages{xx-yy}) is submitted to the macro
@@ -29,6 +29,6 @@ either expressed or implied, including, but not limited to, the
implied warranties of merchantability and fitness for a particular
purpose.
-Copyright (c) 2009 Ahmed Musa (a.musa@rocketmail.com).
+Copyright (c) 2010 Ahmed Musa (a.musa@rocketmail.com).
-End of README file. \ No newline at end of file
+End of README file.
diff --git a/Master/texmf-dist/doc/latex/pagerange/pagerange-guide.pdf b/Master/texmf-dist/doc/latex/pagerange/pagerange-guide.pdf
index c0e5e1e1767..00f3ac14c4a 100644
--- a/Master/texmf-dist/doc/latex/pagerange/pagerange-guide.pdf
+++ b/Master/texmf-dist/doc/latex/pagerange/pagerange-guide.pdf
Binary files differ
diff --git a/Master/texmf-dist/doc/latex/pagerange/pagerange-guide.tex b/Master/texmf-dist/doc/latex/pagerange/pagerange-guide.tex
index db78f40c054..6ca29217971 100644
--- a/Master/texmf-dist/doc/latex/pagerange/pagerange-guide.tex
+++ b/Master/texmf-dist/doc/latex/pagerange/pagerange-guide.tex
@@ -7,14 +7,14 @@
\label{page:first}
\MakeShortVerb{\+}
-\title{\textbf{The {\tt pagerange} Package}\\[1ex] Version 0.3}
+\title{\textbf{The {\tt pagerange} Package}\\[1ex] Version 0.5}
\author{Ahmed Musa\\[.5ex]University of Central Lancashire\\
Preston, United Kingdom\\[1ex]\email{a.musa@rocketmail.com}
}
\maketitle
\section{Introduction}
-This package emerged from my desire to resolve page ranges in the +draftmark+ package, but it may be useful to other \LaTeX{} enthusiasts.
+This package emerged from my desire to resolve page ranges in the +draftmark+ package, but it may be useful to other \texorlatex enthusiasts and users.
\section{Usage}
@@ -25,19 +25,35 @@ If you specify a range consisting of a hyphen (or any tie) but with one or two e
\item A range of the form ``+-34+'' is taken to mean pages +defaultfirstpage+ to 34. The default value of +defaultfirstpage+ is 1; it can be changed via +\pagerangeoptions+.
\item A range of the form ``+12-+'' is taken to mean page~12 to +defaultlastpage+, where the default value of +defaultlastpage+ is the document's last page.
\item A range of the form ``+-+'' (\ie, only hyphen and no pages) is taken to mean from +defaultfirstpage+ to +defaultlastpage+.
-\item An empty or blank page range (\ie, containing no argument and no hyphen/tie) is taken to mean the range +defaultfirstpage+ to +defaultlastpage+, or it may prompt a fatal error, depending on whether the boolean +acceptempty+ is set true or false (respectively).
+\item A blank page range (\ie, containing no argument and no hyphen/tie) is taken to mean the range +defaultfirstpage+ to +defaultlastpage+, or it may prompt a fatal error, depending on whether the boolean +acceptempty+ is set true or false (respectively).
\end{compactenum}
Page ranges containing more than one hyphen/tie cause fatal error.
If the upper limit of the page range is smaller than the lower limit, a fatal error is flagged.
-The tie between the pages in the page range can be any single non-active character; its default is the hyphen character ``+-+''. It can be changed in the call to the package (\eg, +\usepackage[tie=*]{pagerange}+) or at any moment through +\pagerangeoptions{tie=*}+. Active characters can't, unfortunately, be used as ties. The package easily terminates with a warning when an active character is passed as +tie+. It wouldn't be safe to change the catcode of an active character submitted as +tie+ through +\pagerangeoptions+, since at the time the macro +\pagerangeoptions+ is invoked, the page may already be in the process of being built.
+The tie between the pages in the page range can be any single non-active character; its default is the hyphen character ``+-+''. It can be changed in the call to the package (\eg, +\usepackage[tie=*]{pagerange}+) or at any moment through +\pagerangeoptions{tie=*}+.
Because of the need for the last page of the document, at least~2 runs/passes are needed to obtain the correct last page.
This package has been tested with the +hyperref+ package, which redefines the label used by the +lastpage+ package.
+\subsection{Using an active character as the ``tie''}
+
+Active characters can't, unfortunately, be used as ties. The package easily terminates with a fatal error when an active character is passed as +tie+. It wouldn't be safe to change the catcode of an active character submitted as +tie+ through +\pagerangeoptions+, since at the time the macro +\pagerangeoptions+ is invoked, the page may already be in the process of being built.
+
+To use an active character (say \string~) as a tie, it is necessary to first locally change its catcode, \eg, as follows:
+
+\begin{pverbatim}
+\begingroup
+\catcode`\~=11
+\pagerangeoptions{tie=~}
+\pagerange{1~4}
+\endgroup
+\end{pverbatim}
+
+which gives \pgresult{Pages 1 to 4}.
+
\section{Package options}\label{sec:package-options}
The package options are as follows:
@@ -60,7 +76,7 @@ Pages~\pagestart\space to\space\pageend
\end{pverbatim}
\pagerange{123-456}
-produces \result{Pages~\pagestart\space to\space\pageend}.
+produces \pgresult{Pages~\pagestart\space to\space\pageend}.
\pgexample{}
@@ -71,7 +87,7 @@ The following
\end{pverbatim}
\pagerange{12345-67890}
-produces \result{Pages~\pagestart\space to\space\pageend}.
+produces \pgresult{Pages~\pagestart\space to\space\pageend}.
\pgexample{}
The following
@@ -81,7 +97,7 @@ The following
\end{pverbatim}
\pagerange{123-4567}
-produces \result{Pages~\pagestart\space to\space\pageend}.
+produces \pgresult{Pages~\pagestart\space to\space\pageend}.
\pgexample{}
The following
@@ -91,7 +107,7 @@ The following
\end{pverbatim}
\pagerange{600-601}
-produces \result{Pages~\pagestart\space to\space\pageend}.
+produces \pgresult{Pages~\pagestart\space to\space\pageend}.
\pgexample{}
The following
@@ -101,7 +117,7 @@ The following
\end{pverbatim}
\pagerange{-34}
-produces \result{Pages~\pagestart\space to\space\pageend}.
+produces \pgresult{Pages~\pagestart\space to\space\pageend}.
\pgexample{No page numbers given}
The following
@@ -112,7 +128,7 @@ The following
\pagerange{-}
\par\medskip\noindent
-produces \result{Pages~\pagestart\space to\space\pageend}.
+produces \pgresult{Pages~\pagestart\space to\space\pageend}.
\pgexample{}
The following logs a warning message or issues fatal error, depending on the status of +acceptempty+ option:
@@ -177,7 +193,7 @@ The following works because the +\pagerange+ is fully expanded before splitting:
\def\Xone{-}
\def\Xtwo{\Xone}
\pagerange{22\Xtwo 23}
-This produces \result{Pages~\pagestart\space to\space\pageend}.
+This produces \pgresult{Pages~\pagestart\space to\space\pageend}.
\pgexample{}
The following also works because the +\pagerange+ is fully expanded before splitting:
@@ -193,7 +209,7 @@ The following also works because the +\pagerange+ is fully expanded before split
\def\Y{2222}
\def\Z{3333}
\pagerange{\Y\X\Z}
-This produces \result{Pages~\pagestart\space to\space\pageend}.
+This produces \pgresult{Pages~\pagestart\space to\space\pageend}.
\pgexample{}
The following also works because the +\pagerange+ and +tie+ are fully expanded before splitting page range:
@@ -207,7 +223,7 @@ The following also works because the +\pagerange+ and +tie+ are fully expanded b
\def\X{-}
\pagerangeoptions{tie=\X}
\pagerange{123\X 234}
-This produces \result{Pages~\pagestart\space to\space\pageend}.
+This produces \pgresult{Pages~\pagestart\space to\space\pageend}.
\pgexample{}
The following works because infinite nesting of +tie+ and +\pagerange+ are permitted:
@@ -223,7 +239,7 @@ The following works because infinite nesting of +tie+ and +\pagerange+ are permi
\def\Xtwo{\Xone}
\pagerangeoptions{tie=\Xtwo}
\pagerange{444\Xtwo 555}
-This yields \result{Pages~\pagestart\space to\space\pageend}.
+This yields \pgresult{Pages~\pagestart\space to\space\pageend}.
\pgexample{}
The following gives incorrect (in fact, weird) result because the prevailing +tie+ is not a star:
@@ -233,7 +249,7 @@ The following gives incorrect (in fact, weird) result because the prevailing +ti
\end{pverbatim}
%\pagerange{33*44}
-%It produces \result{Pages~\pagestart\space to\space\pageend}.
+%It produces \pgresult{Pages~\pagestart\space to\space\pageend}.
\pgexample{}
The +tie+ can be changed to a star (or any non-active character) as follows:
@@ -245,7 +261,7 @@ The +tie+ can be changed to a star (or any non-active character) as follows:
\pagerangeoptions{tie=*}
\pagerange{2233*3344}
-This correctly produces \result{Pages~\pagestart\space to\space\pageend}.
+This correctly produces \pgresult{Pages~\pagestart\space to\space\pageend}.
\pgexample{}
In the following the +tie+ is changed to letter ``T'':
@@ -257,7 +273,7 @@ In the following the +tie+ is changed to letter ``T'':
\pagerangeoptions{tie=T}
\pagerange{1234T1235}
-It produces \result{Pages~\pagestart\space to\space\pageend}.
+It produces \pgresult{Pages~\pagestart\space to\space\pageend}.
\pgexample{}
The following
@@ -269,7 +285,7 @@ The following
\pagerangeoptions{tie=X}
\pagerange{2034X2135}
-correctly yields \result{Pages~\pagestart\space to\space\pageend}.
+correctly yields \pgresult{Pages~\pagestart\space to\space\pageend}.
\section{Using page labels}
@@ -285,7 +301,7 @@ From version 0.3 of the package, it has been possible to obtain page ranges from
\label{page:last}
\pagerangeoptions{tie=-}
\pagerange{\getpagenumber{page:first}-\getpagenumber{page:last}}
-which yields \result{Pages~\pagestart\space to\space\pageend}.
+which yields \pgresult{Pages~\pagestart\space to\space\pageend}.
The command +\getpagenumber+ is provided in the package and may, in general, be used to convert page labels into page numbers even in expansion contexts, where +\pageref+ will normally fail. If the page label or reference is undefined, the default start page number (+defaultfirstpage+) is used. The +defaultfirstpage+ is a package option (see Section~\ref{sec:package-options}).
diff --git a/Master/texmf-dist/tex/latex/pagerange/pagerange-guide.cfg b/Master/texmf-dist/tex/latex/pagerange/pagerange-guide.cfg
index 1647320f8b5..959799e6989 100644
--- a/Master/texmf-dist/tex/latex/pagerange/pagerange-guide.cfg
+++ b/Master/texmf-dist/tex/latex/pagerange/pagerange-guide.cfg
@@ -1,6 +1,6 @@
\ProvidesFile{pagerange-guide.cfg}%
- [2009/12/10 v0.3 Configuration file for pagerange-guide.tex (A.Musa)]
-\usepackage{mathpazo}
+ [2010/02/03 v0.5 Configuration file for pagerange-guide.tex (A.Musa)]
+\makeatletter
\usepackage[scaled=0.9]{helvet}
\usepackage{xspace}
\usepackage{xcolor}
@@ -10,11 +10,13 @@
\usepackage{paralist}
\usepackage{fancyhdr}
\usepackage{tabularx}
+\usepackage{ltablex}
+\keepXColumns
\usepackage[draft,allpages]{draftmark}
-\draftmarksetup{mark={\color{red}\framebox[22.3cm][c]{}\\[15.4cm]
- \color{red}\framebox[22.3cm][c]{}},angle=90,scale=1,
- xcoord=-.5,ycoord=-1.5}
-\ifx\pagerange\relax\usepackage[acceptempty,hyperlink]{pagerange}\fi
+\draftmarksetup{mark={\color{red}\framebox[22.2cm][c]{}\\[15.4cm]
+ \color{red}\framebox[22.2cm][c]{}},angle=90,scale=1,
+ xcoord=-.2,ycoord=-1.5}
+\ifx\pagerange\relax\usepackage[acceptempty]{pagerange}\fi
\ifx\lastpage\relax\usepackage{lastpage}\fi
\usepackage{hyperref}
\hypersetup{colorlinks=true,linkcolor=red,pdfpagemode=UseThumbs,
@@ -23,10 +25,11 @@
\CustomVerbatimEnvironment{pverbatim}{Verbatim}{numbers=left,
numberblanklines=false,firstnumber=last,frame=single,rulecolor=\color{yellow},
framerule=2pt,framesep=2pt, fillcolor=\color{magenta},formatcom=\color{blue},
- xrightmargin=-0pc,commandchars=\|\(\),commentchar=W}
-\providecommand*\eg{e.g.\xspace}
-\providecommand*\ie{i.e.\xspace}
-\newcommand*\email[1]{\href{mailto:#1}{#1}}
+ xrightmargin=-0pc,commandchars=\|\(\),commentchar=\&}
+\def\ie{\@ifnextchar.{i.e}{i.e.}\xspace}
+\def\eg{\@ifnextchar.{e.g}{e.g.}\xspace}
+\def\etc{\@ifnextchar.{etc}{etc.}\xspace}
+\providecommand*\email[1]{\href{mailto:#1}{#1}}
\newcommand*\pgtxtt{\fontfamily{txtt}\selectfont\scshape\color{brown}}
\fancyhf{}
\fancyhfoffset[R,L]{\dimexpr\marginparsep+\marginparwidth\relax}
@@ -42,10 +45,15 @@
\refstepcounter{examplecnt}%
\endgraf\vspace*{0.5\baselineskip}%
\textbf{\textcolor{purple}{Example~\thesection.\theexamplecnt\enspace}#1}%
- \endgraf\nobreak
+ \endgraf\nobreak\@nobreakfalse
}
-\providecommand\space{ }
+\providecommand*\space{ }
\definecolor{xgreen}{rgb}{0.00,0.59,0.00}
-\newcommand*\result[1]{\textcolor{xgreen}{#1}}
+\@ifdefinable\pgresult{\def\pgresult#1{\textcolor{xgreen}{#1}}}
+\newcommand*\La{\leavevmode L\raise.42ex\hbox{\footnotesize\kern-.35em A}}
+\newcommand*\TeXorLaTeX{\hbox{(\/\La\kern-.15em\/)\kern-.1em\TeX}}
+\newcommand*\texorlatex{\TeXorLaTeX\xspace}
-\endinput \ No newline at end of file
+\endinput
+
+%%% End of file pagerange-guide.cfg %%% \ 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 97d2b9361c7..c6be8784aec 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.3. %
+% This is file 'pagerange.sty', version 0.5. %
% %
% This work may be distributed and/or modified under the conditions %
% of the LaTeX Project Public License, either version 1.3 of this %
@@ -14,85 +14,147 @@
% implied warranties of merchantability and fitness for a particular %
% purpose. %
% %
-% Copyright (c) 2009 Ahmed Musa (a.musa@rocketmail.com). %
+% Copyright (c) 2010 Ahmed Musa (a.musa@rocketmail.com). %
%+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++%
-
+\begingroup
+\catcode064 11\relax% @
+\catcode123 01\relax% {
+\catcode125 02\relax% }
+\def\prg@tempa{\endgroup
+ \edef\prg@restorecodes{%
+ \catcode035 \the\catcode035\relax% #
+ \catcode064 \the\catcode064\relax% @
+ \catcode123 \the\catcode123\relax% {
+ \catcode125 \the\catcode125\relax% }
+ \catcode061 \the\catcode061\relax% =
+ \catcode038 \the\catcode038\relax% &
+ }%
+}
+\prg@tempa
+\catcode061 12\relax% =
+\catcode035 06\relax% #
+\catcode064 11\relax% @
+\catcode123 01\relax% {
+\catcode125 02\relax% }
+\catcode038 03\relax% &
+\AtEndOfPackage{\prg@restorecodes}
\ProvidesPackage{pagerange}%
- [2009/11/10 v0.3 Split page ranges intelligently (Ahmed Musa)]
+ [2010/02/04 v0.5 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}}
\@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{eTeX not loaded or old version.\MessageBreak
- This package requires eTeX version 2 or later.}
+ \@latex@error{eTeX not loaded or old version.\MessageBreak
+ This package requires eTeX version 2 or later.}\@ehc
\fi
-\def\prg@ifdef#1{\csname @\ifdefined#1\expandafter first\else
- \expandafter second\fi oftwo\endcsname
+\newcommand*\prg@ifdefinable[1]{%
+ \edef\reserved@a{\expandafter\@gobble\string#1}%
+ \begingroup
+ \ifdefined#1%
+ \aftergroup\@notdefinable
+ \else
+ \edef\reserved@b{\expandafter\@carcube\reserved@a xxx\@nil}%
+ \ifx\reserved@b\@qend
+ \aftergroup\@notdefinable
+ \else
+ \ifx\reserved@a\@qrelax
+ \aftergroup\@notdefinable
+ \else
+ \aftergroup\@firstofone
+ \fi
+ \fi
+ \fi
+ \endgroup
}
+\prg@ifdefinable\prg@protect@relax\relax
+\prg@ifdefinable\prg@star@or@long\relax
+\prg@ifdefinable\prg@pdef\relax
+\prg@ifdefinable\prg@@def\relax
+\def\prg@star@or@long#1{%
+ \@ifstar{\let\prg@protect@relax\protected#1}%
+ {\def\prg@protect@relax{\protected\long}#1}%
+}
+\let\prg@protect@relax\protected
+\protected\def\prg@pdef{\prg@star@or@long\prg@@def}
+\def\prg@@def#1{\prg@ifdefinable#1{\prg@protect@relax\def#1}}
+\prg@pdef\prg@warn#1{\PackageWarningNoLine{pagerange}{#1}}
+\prg@pdef\prg@err#1{\PackageError{pagerange}{#1}\@ehc}
+\prg@ifdefinable\prg@tempcnta{\newcount\prg@tempcnta}
+\prg@ifdefinable\prg@tempcntb{\newcount\prg@tempcntb}
+\prg@ifdefinable\prg@tempcntc{\newcount\prg@tempcntc}
+\def\prg@c@r#1#2{%
+ \unless\ifx#2\null
+ \prg@err{Inadmissible multiple arguments '\string#1\string#2'
+ \MessageBreak for '\string\prg@ifdef' test}%
+ \fi
+}
+\prg@ifdefinable\prg@ifdef\relax
+\def\prg@ifdef#1{%
+ \prg@c@r#1\null
+ \csname @\ifdefined#1\expandafter first\else
+ \expandafter second\fi oftwo\endcsname
+}
+\prg@ifdefinable\prg@ifundef\relax
\def\prg@ifundef#1{%
\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{%
+\prg@pdef*\prg@check@ifdef#1{%
\prg@ifcsundef{#1}{}{%
- \prg@err{\expandafter\noexpand\csname#1\endcsname already defined}}%
+ \prg@err{\expandafter\noexpand\csname#1\endcsname already defined}%
+ }%
\prg@check@ifdef
}
\prg@check@ifdef{pagerange}{pagestart}{pageend}{getpagenumber}%
- \iffalse\fi\fi\endcsname{}{}
-\edef\prg@restorecodes{%
- \catcode45=\the\catcode45\relax % -
- \catcode38=\the\catcode38\relax % &
+ {pagerangeoptions}\iffalse\fi\fi\endcsname{}{}
+\prg@pdef\prg@ifblank#1{\prg@ifbl@nk#1&&\@secondoftwo\@firstoftwo:}
+\long\def\prg@ifbl@nk#1#2&#3#4#5:{#4}
+\prg@pdef\prg@xifblank#1{\begingroup
+ \protected@edef\prg@tempa{\endgroup\noexpand\prg@ifblank{#1}}%
+ \prg@tempa
}
-\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}\relax{\prg@err{\string#1 undefined}}%
+\prg@pdef\prg@ifmacro#1{%
\begingroup
- \edef\x{\endgroup
- \noexpand\def\noexpand\getparameter####1\detokenize{macro}:####2&{%
+ \edef\prg@tempa{\endgroup
+ \def\noexpand\getparameter####1\detokenize{macro}:####2&{%
\noexpand\prg@ifblank{####2}{\noexpand\@secondoftwo}%
{\noexpand\@firstoftwo}%
}%
- \noexpand\expandafter\noexpand\getparameter%
+ \noexpand\expandafter\noexpand\getparameter%
\noexpand\meaning\noexpand#1\detokenize{macro}:&%
- }\x
+ }\prg@tempa
}
\def\prg@ismacro@err#1{%
\prg@err{%
Illegal tie '#1'.\MessageBreak
- Note that the 'tie' has been fully expanded \MessageBreak
+ Note that the 'tie' has been expanded once\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\@tempa{\expandafter\noexpand\prg@tie}%
\edef\prg@tie{\prg@tie}%
- \expandafter\prg@ifmacro\prg@tie{\prg@ismacro@err\prg@tie}{}
+ \let\@@protect\protect\let\protect\@empty
+ \expandafter\prg@ifmacro\expandafter{\prg@tie}{%
+ \restore@protect\prg@ismacro@err\@tempa
+ }{}%
+ \restore@protect
}
+\define@boolkey[KV]{pagerange}[prg@]{acceptempty}[true]{}
\define@cmdkey[KV]{pagerange}[prg@]{defaultfirstpage}[1]{}
-\define@cmdkey[KV]{pagerange}[prg@]{defaultlastpage}[\getpagenumber{LastPage}]{}
+\define@cmdkey[KV]{pagerange}[prg@]{defaultlastpage}%
+ [\getpagenumber{LastPage}]{}
\DeclareOptionX*{\prg@warn{Unknown option '\CurrentOption' ignored}}
\ExecuteOptionsX<pagerange>{tie,defaultfirstpage,defaultlastpage}
\ProcessOptionsX*<pagerange>\relax
-\gdef\pagerangeoptions#1{\setkeys[KV]{pagerange}{#1}}
-\long\def\prg@forall#1#2\do#3{%
+\long\def\pagerangeoptions#1{\setkeys[KV]{pagerange}{#1}}
+\prg@pdef\prg@forall#1#2\do#3{%
#3{#1}%
- \ifx\\#2\\%
+ \expandafter\ifx\expandafter\@empty\detokenize{#2}\@empty%
\relax
\else
\prg@forall#2\do{#3}%
@@ -100,29 +162,28 @@
}
\let\pagestart\@empty
\let\pageend\@empty
-\newcount\prg@cntx\prg@cntx=\z@\relax
-\long\def\prg@split@pagerange#1{%
+\prg@tempcntc=\z@
+\prg@pdef*\prg@split@pagerange#1{%
\def\reserved@a{#1}%
\ifx\reserved@a\prg@tie
- \advance\prg@cntx\@ne\relax
+ \advance\prg@tempcntc\@ne
\fi
- \ifnum\prg@cntx=\z@
+ \ifnum\prg@tempcntc=\z@
\g@addto@macro\pagestart{#1}%
- \else\ifnum\prg@cntx=\@ne
+ \else\ifnum\prg@tempcntc=\@ne
\ifx\reserved@a\prg@tie\else
\g@addto@macro\pageend{#1}%
\fi
- \else\ifnum\prg@cntx>\@ne
+ \else\ifnum\prg@tempcntc>\@ne
\prg@err{Multiple ties in page range.\MessageBreak
Please use only one tie}%
\fi\fi\fi
}
-\newcount\prg@cnta\prg@cnta=\z@\relax
-\newcount\prg@cntb\prg@cntb=\z@\relax
+\prg@tempcnta=\z@\prg@tempcntb=\z@
\def\pagerange#1{%
\let\pagestart\@empty
\let\pageend\@empty
- \prg@cntx=\z@\relax
+ \prg@tempcntc=\z@
\prg@xifblank{#1}{%
\ifprg@acceptempty
\prg@warn{Blank page range supplied:\MessageBreak
@@ -136,30 +197,32 @@
}%
\fi
}{%
- \begingroup\edef\@tempa{\endgroup%
- \noexpand\prg@forall#1\noexpand\do{\noexpand\prg@split@pagerange}}%
- \@tempa
+ \begingroup\edef\prg@tempa{\endgroup%
+ \prg@forall#1\noexpand\do{\prg@split@pagerange}}%
+ \prg@tempa
}%
\ifx\@empty\pagestart
- \ifnum\prg@cntx=\@ne
+ \ifnum\prg@tempcntc=\@ne
\let\pagestart\prg@defaultfirstpage
\fi
\fi
- \prg@cnta=\number\pagestart\relax
+ \prg@tempcnta=\number\pagestart\relax
\ifx\@empty\pageend
- \prg@cntb=\@M\relax
- \ifnum\prg@cntx=\@ne
+ \prg@tempcntb=\@M
+ \ifnum\prg@tempcntc=\@ne
\let\pageend\prg@defaultlastpage
\fi
\else
- \prg@cntb=\number\pageend\relax
+ \prg@tempcntb=\number\pageend\relax
\fi
- \ifnum\prg@cnta>\prg@cntb
+ \ifnum\prg@tempcnta>\prg@tempcntb
\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
+ \expandafter\ifx\expandafter\relax\detokenize{#3}\relax
+ \prg@err{Problem with page reference}
+ \fi
#2%
}
\def\getpagenumber#1{%
@@ -169,4 +232,6 @@
}%
}
-\endinput \ No newline at end of file
+\endinput
+
+%%% End of file pagerange.sty %%% \ No newline at end of file