summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/tex/latex/lwarp/lwarp-biblatex.sty
diff options
context:
space:
mode:
Diffstat (limited to 'Master/texmf-dist/tex/latex/lwarp/lwarp-biblatex.sty')
-rw-r--r--Master/texmf-dist/tex/latex/lwarp/lwarp-biblatex.sty113
1 files changed, 112 insertions, 1 deletions
diff --git a/Master/texmf-dist/tex/latex/lwarp/lwarp-biblatex.sty b/Master/texmf-dist/tex/latex/lwarp/lwarp-biblatex.sty
index 0472693e549..760358810f1 100644
--- a/Master/texmf-dist/tex/latex/lwarp/lwarp-biblatex.sty
+++ b/Master/texmf-dist/tex/latex/lwarp/lwarp-biblatex.sty
@@ -18,6 +18,8 @@
\ifdef{\newfloat@addtocontents@ORI}{
\let\addtocontents\newfloat@addtocontents@ORI
}{}
+\AtBeginDocument{\RequirePackage{hyperref}}
+
\LWR@ProvidesPackagePass{biblatex}[2018/03/04]
\AfterPreamble{
@@ -27,6 +29,7 @@
{}
{\listxadd\blx@anchors{\the\c@refsection @\abx@field@entrykey}%
\hypertarget{cite.\the\c@refsection @\abx@field@entrykey}{}}}
+
\protected\def\blx@imc@bibhyperref{%
\@ifnextchar[%]
{\blx@bibhyperref}
@@ -51,7 +54,115 @@
}
\let\blx@imc@ifhyperref\@firstoftwo
-}
+\DeclareListFormat{pageref}{%
+ \ifnumless{\abx@pagerefstyle}{0}
+ {\usebibmacro{list:plain}%
+ \ifhyperref
+ {%
+ \ref{\BaseJobname-autopage-#1}% lwarp
+ }
+ {#1}}
+ {\ifnumequal{\value{listcount}}{1}
+ {\usebibmacro{pageref:init}}
+ {}%
+ \usebibmacro{pageref:comp}{#1}%
+ \ifnumequal{\value{listcount}}{\value{liststop}}
+ {\usebibmacro{pageref:dump}}
+ {}}}
+
+\renewbibmacro*{pageref:comp}[1]{%
+ \numdef\abx@range@prev{\abx@range@prev+1}%
+ \ifinteger{#1}
+ {\def\abx@range@num{#1}%
+ \def\abx@range@this{1}%
+ \ifnumequal{\abx@range@this}{\abx@range@last}
+ {}
+ {\def\abx@range@prev{-1}}}
+ {\ifrmnum{#1}
+ {\numdef\abx@range@num{\rmntonum{#1}}%
+ \def\abx@range@this{2}%
+ \ifnumequal{\abx@range@this}{\abx@range@last}
+ {}
+ {\def\abx@range@prev{-1}}}
+ {\undef\abx@range@num
+ \def\abx@range@this{0}%
+ \def\abx@range@prev{-1}}}%
+ \ifdef\abx@range@num
+ {\ifnumequal{\abx@range@num}{\abx@range@prev}
+ {\def\abx@range@hold{#1}%
+ \numdef\abx@range@diff{\abx@range@diff+1}}
+ {\usebibmacro{pageref:dump}%
+ \ifnumgreater{\abx@range@last}{-1}
+ {\printdelim{multilistdelim}}
+ {}%
+ \ifhyperref
+ {\ref{\BaseJobname-autopage-#1}}% lwarp
+ {#1}}%
+ \edef\abx@range@prev{\abx@range@num}}
+ {\usebibmacro{pageref:dump}%
+ \ifnumgreater{\abx@range@last}{-1}
+ {\printdelim{multilistdelim}}
+ {}%
+ \ifhyperref
+ {\ref{\BaseJobname-autopage-#1}}% lwarp
+ {#1}%
+ \def\abx@range@prev{-1}}%
+ \edef\abx@range@last{\abx@range@this}}
+
+\renewbibmacro*{pageref:dump}{%
+ \ifnumgreater{\abx@range@diff}{0}
+ {\ifcase\abx@pagerefstyle\relax % two
+ \bibrangedash
+ \ifhyperref
+ {\ref{\BaseJobname-autopage-\abx@range@hold}}% lwarp
+ {\abx@range@hold}%
+ \or % three
+ \ifnumless{\abx@range@diff}{2}
+ {\printdelim{multilistdelim}}
+ {\bibrangedash}%
+ \ifhyperref
+ {\ref{\BaseJobname-autopage-\abx@range@hold}}% lwarp
+ {\abx@range@hold}%
+ \or % two+
+ \ifnumless{\abx@range@diff}{2}
+ {\sqspace
+ \ifhyperref
+ {\ref{\BaseJobname-autopage-\abx@range@hold}}% lwarp
+ {\bibstring{sequens}}}
+ {\bibrangedash
+ \ifhyperref
+ {\ref{\BaseJobname-autopage-\abx@range@hold}}% lwarp
+ {\abx@range@hold}}%
+ \or % three+
+ \ifnumless{\abx@range@diff}{2}
+ {\sqspace
+ \ifhyperref
+ {\ref{\BaseJobname-autopage-\abx@range@hold}}% lwarp
+ {\bibstring{sequens}}}
+ {\ifnumless{\abx@range@diff}{3}
+ {\sqspace
+ \ifhyperref
+ {\ref{\BaseJobname-autopage-\abx@range@hold}}% lwarp
+ {\bibstring{sequentes}}}
+ {\bibrangedash
+ \ifhyperref
+ {\ref{\BaseJobname-autopage-\abx@range@hold}}% lwarp
+ {\abx@range@hold}}}%
+ \else % all+
+ \ifnumless{\abx@range@diff}{2}
+ {\sqspace
+ \ifhyperref
+ {\ref{\BaseJobname-autopage-\abx@range@hold}}% lwarp
+ {\bibstring{sequens}}}
+ {\sqspace
+ \ifhyperref
+ {\ref{\BaseJobname-autopage-\abx@range@hold}}% lwarp
+ {\bibstring{sequentes}}}%
+ \fi
+ \def\abx@range@diff{0}}
+ {}}
+
+}% \AfterPreamble
\endinput
%%
%% End of file `lwarp-biblatex.sty'.