diff options
Diffstat (limited to 'Master/texmf-dist/tex/latex/lwarp/lwarp-biblatex.sty')
-rw-r--r-- | Master/texmf-dist/tex/latex/lwarp/lwarp-biblatex.sty | 111 |
1 files changed, 110 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 79c990761c1..760358810f1 100644 --- a/Master/texmf-dist/tex/latex/lwarp/lwarp-biblatex.sty +++ b/Master/texmf-dist/tex/latex/lwarp/lwarp-biblatex.sty @@ -29,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} @@ -53,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'. |