texlive[61362] Master/texmf-dist: backlinks for biblatex, tex4hr

commits+karl at tug.org commits+karl at tug.org
Mon Dec 20 23:50:40 CET 2021


Revision: 61362
          http://tug.org/svn/texlive?view=revision&revision=61362
Author:   karl
Date:     2021-12-20 23:50:40 +0100 (Mon, 20 Dec 2021)
Log Message:
-----------
backlinks for biblatex, tex4hr r1037

Revision Links:
--------------
    http://tug.org/svn/texlive?view=revision&revision=1037

Modified Paths:
--------------
    trunk/Master/texmf-dist/source/generic/tex4ht/ChangeLog
    trunk/Master/texmf-dist/source/generic/tex4ht/tex4ht-4ht.tex
    trunk/Master/texmf-dist/tex/generic/tex4ht/biblatex.4ht

Modified: trunk/Master/texmf-dist/source/generic/tex4ht/ChangeLog
===================================================================
--- trunk/Master/texmf-dist/source/generic/tex4ht/ChangeLog	2021-12-20 22:35:08 UTC (rev 61361)
+++ trunk/Master/texmf-dist/source/generic/tex4ht/ChangeLog	2021-12-20 22:50:40 UTC (rev 61362)
@@ -1,5 +1,8 @@
 2021-12-20  Michal Hoftich  <michal.h21 at gmail.com>
 
+	* tex4ht-4ht.tex (biblatex.4ht): added support for back links.
+	https://github.com/michal-h21/make4ht/issues/58
+
 	* tex4ht-4ht.tex (backref.4ht): removed spurious space.
 
 2021-12-19  Michal Hoftich  <michal.h21 at gmail.com>

Modified: trunk/Master/texmf-dist/source/generic/tex4ht/tex4ht-4ht.tex
===================================================================
--- trunk/Master/texmf-dist/source/generic/tex4ht/tex4ht-4ht.tex	2021-12-20 22:35:08 UTC (rev 61361)
+++ trunk/Master/texmf-dist/source/generic/tex4ht/tex4ht-4ht.tex	2021-12-20 22:50:40 UTC (rev 61362)
@@ -1,4 +1,4 @@
-% $Id: tex4ht-4ht.tex 1036 2021-12-20 12:42:58Z michal_h21 $
+% $Id: tex4ht-4ht.tex 1037 2021-12-20 22:36:14Z michal_h21 $
 % tex tex4ht-4ht   or   ht tex tex4ht-4ht
 %
 % Copyright 2009-2021 TeX Users Group    
@@ -1909,6 +1909,7 @@
    |<shared config biblatex|>
    |<biblatex-crosslinking|>
    |<biblatex AtEndPreamble|>
+   |<biblatex backlinks|>
 \Hinput{biblatex}
 \endinput
 >>>        \AddFile{6}{biblatex}
@@ -2753,6 +2754,60 @@
    {\egroup\EndP\HCode{</dt><dd\Hnewline class="description">}}
 >>>
 
+Fix backlink support in BibLaTeX
+
+\<biblatex backlinks\><<<
+\pend:defI\blx at backref{%
+  % prevent duplicate backlink on the same page
+  \ifcsdef{bk##1\thepage}{}{%
+    % insert link to the page
+    \html:addr\Link-{}{|<haddr prefix|>\last:haddr}\EndLink%
+    % save link to the .xref file
+    \Tag{)Q##1\thepage}{|<haddr prefix|>\last:haddr}%
+    % we need to save the link destination in .xref file
+    % too, otherwise \Link command would issue warning
+    \Tag{)Q|<haddr prefix|>\last:haddr}{\FileNumber}%
+  }%
+  % declare this backlink destination as used, so we don't
+  % declare another one with the same name
+  \expandafter\gdef\csname bk##1\thepage\endcsname{}%
+}
+
+% version of \hyperlink that links back to saved link in citation
+% on the given DVI page
+\def\bbx:hyperlink#1#2{
+  % first argument is destination used by Hyperref, second is page number
+  % test if we saved link to the current bibitem and page
+  \ifTag{)Q\abx at field@entrykey#2}{%
+      \Link{\LikeRef{)Q\abx at field@entrykey#2}}{}#2\EndLink%
+  }%
+  {#2}% print just page number if there is no saved link
+  }
+
+% we need to redefine pageref format, which is used for printing of
+% back link page numbers. custom \hyperlink command is used
+\DeclareListFormat{pageref}{%
+  % we redefine \hyperlink command to link page numbers in backreferences
+  % back to the citations on the given pages
+  \let\orig:hyperlink\hyperlink%
+  \let\hyperlink\bbx:hyperlink%
+  \ifnumless{\abx at pagerefstyle}{0}
+    {\usebibmacro{list:plain}%
+     \ifhyperref
+       {\hyperlink{page.#1}{#1}}
+       {#1}}
+    {\ifnumequal{\value{listcount}}{1}
+       {\usebibmacro{pageref:init}}
+       {}%
+     \usebibmacro{pageref:comp}{#1}%
+     \ifnumequal{\value{listcount}}{\value{liststop}}
+       {\usebibmacro{pageref:dump}}
+       {}}
+  \let\hyperlink\orig:hyperlink%
+}
+
+>>>
+
 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%  
 \SubSection{backref.4ht}
 

Modified: trunk/Master/texmf-dist/tex/generic/tex4ht/biblatex.4ht
===================================================================
--- trunk/Master/texmf-dist/tex/generic/tex4ht/biblatex.4ht	2021-12-20 22:35:08 UTC (rev 61361)
+++ trunk/Master/texmf-dist/tex/generic/tex4ht/biblatex.4ht	2021-12-20 22:50:40 UTC (rev 61362)
@@ -1,4 +1,4 @@
-% biblatex.4ht (2021-08-14-14:10), generated from tex4ht-4ht.tex
+% biblatex.4ht (2021-12-20-14:48), generated from tex4ht-4ht.tex
 % Copyright 2007-2009 Eitan M. Gurari
 % Copyright 2009-2021 TeX Users Group
 %
@@ -17,7 +17,7 @@
 %
 % If you modify this program, changing the
 % version identification would be appreciated.
-\immediate\write-1{version 2021-08-14-14:10}
+\immediate\write-1{version 2021-12-20-14:48}
 
    \def\make:blx:ver#1.#2#3\relax{%
    %\ifdim#1pt< 3pt \xdef\blx:ver:no{2}\else\xdef\blx:ver:no{3}\fi%
@@ -598,6 +598,56 @@
     \@fntORI}%                frenchle
 \let\do\:temp
 
+   \pend:defI\blx at backref{%
+  % prevent duplicate backlink on the same page
+  \ifcsdef{bk##1\thepage}{}{%
+    % insert link to the page
+    \html:addr\Link-{}{x\last:haddr}\EndLink%
+    % save link to the .xref file
+    \Tag{)Q##1\thepage}{x\last:haddr}%
+    % we need to save the link destination in .xref file
+    % too, otherwise \Link command would issue warning
+    \Tag{)Qx\last:haddr}{\FileNumber}%
+  }%
+  % declare this backlink destination as used, so we don't
+  % declare another one with the same name
+  \expandafter\gdef\csname bk##1\thepage\endcsname{}%
+}
+
+% version of \hyperlink that links back to saved link in citation
+% on the given DVI page
+\def\bbx:hyperlink#1#2{
+  % first argument is destination used by Hyperref, second is page number
+  % test if we saved link to the current bibitem and page
+  \ifTag{)Q\abx at field@entrykey#2}{%
+      \Link{\LikeRef{)Q\abx at field@entrykey#2}}{}#2\EndLink%
+  }%
+  {#2}% print just page number if there is no saved link
+  }
+
+% we need to redefine pageref format, which is used for printing of
+% back link page numbers. custom \hyperlink command is used
+\DeclareListFormat{pageref}{%
+  % we redefine \hyperlink command to link page numbers in backreferences
+  % back to the citations on the given pages
+  \let\orig:hyperlink\hyperlink%
+  \let\hyperlink\bbx:hyperlink%
+  \ifnumless{\abx at pagerefstyle}{0}
+    {\usebibmacro{list:plain}%
+     \ifhyperref
+       {\hyperlink{page.#1}{#1}}
+       {#1}}
+    {\ifnumequal{\value{listcount}}{1}
+       {\usebibmacro{pageref:init}}
+       {}%
+     \usebibmacro{pageref:comp}{#1}%
+     \ifnumequal{\value{listcount}}{\value{liststop}}
+       {\usebibmacro{pageref:dump}}
+       {}}
+  \let\hyperlink\orig:hyperlink%
+}
+
+
 \Hinput{biblatex}
 \endinput
 



More information about the tex-live-commits mailing list.