summaryrefslogtreecommitdiff
path: root/biblio/bibtex/contrib/inlinebib/pageranges.sty
diff options
context:
space:
mode:
Diffstat (limited to 'biblio/bibtex/contrib/inlinebib/pageranges.sty')
-rw-r--r--biblio/bibtex/contrib/inlinebib/pageranges.sty94
1 files changed, 94 insertions, 0 deletions
diff --git a/biblio/bibtex/contrib/inlinebib/pageranges.sty b/biblio/bibtex/contrib/inlinebib/pageranges.sty
new file mode 100644
index 0000000000..97fa960334
--- /dev/null
+++ b/biblio/bibtex/contrib/inlinebib/pageranges.sty
@@ -0,0 +1,94 @@
+% Copyright (C) 1999 René Seindal (rene@seindal.dk)
+
+% This program can redistributed and/or modified under the terms
+% of the LaTeX Project Public License Distributed from CTAN
+% archives in directory macros/latex/base/lppl.txt; either
+% version 1 of the License, or (at your option) any later version.
+
+ %% Macros for citing.
+
+\let\@DEBUG@CIT\@gobble
+%\let\@DEBUG@CIT\typeout
+
+ %% \@PG does #1={a} -> {p.~a}
+ %% and #1={a-} -> {pp.~a~ff}
+ %% and #1={a-b} -> {pp.~a--b}
+ %% and #1={a b} -> {pp.~a b}
+
+\def\@PG#1{%
+ \@DEBUG@CIT{START: #1}%
+ {\@@PG#1 \@nil}%
+}
+
+\newcommand\pages[2][\@gobble]{#1{, }\@PG{#2}}
+
+\def\@@PG#1 #2\@nil{%
+ \def\@tempa{#1}%
+ \def\@tempb{#2}%
+ \ifx\@tempb\@empty
+ \def\next{\@PGrange#1-\@nil}%
+ \else
+ \let\next\@PGspace
+ \fi
+ \next
+}
+
+ %% argument is "a-b"; tmpa="X" tmpb=void
+
+\def\@PGrange#1-#2\@nil{\hbox{%
+ \@DEBUG@CIT{RANGE: =#1=#2=}%
+ \def\@tempb{#2}%
+ \ifx\@tempb\@empty
+ p.~#1%
+ \else
+ pp.~#1%
+ \edef\@tempb{\@PGundash#2}%
+ \ifx\@tempb\@empty
+ ff%
+ \else
+ --\@tempb
+ \fi
+ \fi
+}}
+
+\def\@PGundash#1-{#1}
+
+
+ %% argument is "a b"; tmpa="a" tmpb="b "
+
+\def\@PGspace{%
+ \@DEBUG@CIT{SPACE: =\@tempa=\@tempb=}%
+ \ifx\@tempb\@empty
+ \else
+ p%
+ \fi
+ p.~\expandafter\@PGdash\@tempa-\@nil%
+ \expandafter\@PGdashloop\@tempb\@nil%
+}
+
+ %% argument is "b"; tmpa="a" tmpb="b "
+
+\def\@PGdashloop#1 #2\@nil{%
+ \@DEBUG@CIT{TEST: =#1=#2=}%
+ \space\@PGdash#1-\@nil%
+ \def\@tempa{#2}%
+ \ifx\@tempa\@empty
+ \else
+ \@PGdashloop#2\@nil%
+ \fi
+}
+
+\def\@PGdash#1-#2\@nil{\hbox{#1%
+ \@DEBUG@CIT{DASH: =#1=#2=}%
+ \def\@tempa{#2}%
+ \ifx\@tempa\@empty
+ \else
+ \edef\@tempa{\@PGundash#2}%
+ \ifx\@tempa\@empty
+ ff%
+ \else
+ --\@tempa
+ \fi
+ \fi
+}}
+