diff options
Diffstat (limited to 'support/TeX4ht')
-rw-r--r-- | support/TeX4ht/source/ChangeLog | 7 | ||||
-rw-r--r-- | support/TeX4ht/source/tex4ht-4ht.tex | 59 |
2 files changed, 64 insertions, 2 deletions
diff --git a/support/TeX4ht/source/ChangeLog b/support/TeX4ht/source/ChangeLog index faf48e2b6b..21c5b05620 100644 --- a/support/TeX4ht/source/ChangeLog +++ b/support/TeX4ht/source/ChangeLog @@ -1,3 +1,10 @@ +2021-12-20 Michal Hoftich <michal.h21@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@gmail.com> * tex4ht-4ht.tex (minted.4ht): redefine Minted commands that cause issues diff --git a/support/TeX4ht/source/tex4ht-4ht.tex b/support/TeX4ht/source/tex4ht-4ht.tex index 1ba356792b..9acf761cb5 100644 --- a/support/TeX4ht/source/tex4ht-4ht.tex +++ b/support/TeX4ht/source/tex4ht-4ht.tex @@ -1,4 +1,4 @@ -% $Id: tex4ht-4ht.tex 1035 2021-12-19 22:26:51Z 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 @@ and \''\Tg'. |<shared config biblatex|> |<biblatex-crosslinking|> |<biblatex AtEndPreamble|> + |<biblatex backlinks|> \Hinput{biblatex} \endinput >>> \AddFile{6}{biblatex} @@ -2753,6 +2754,60 @@ they caused compilation error when the AUX file is loaded. {\egroup\EndP\HCode{</dt><dd\Hnewline class="description">}} >>> +Fix backlink support in BibLaTeX + +\<biblatex backlinks\><<< +\pend:defI\blx@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@field@entrykey#2}{% + \Link{\LikeRef{)Q\abx@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@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} @@ -2777,7 +2832,7 @@ they caused compilation error when the AUX file is loaded. % we need to save the link destination in .xref file % too, otherwise \Link command would issue warning \Tag{)Q|<haddr prefix|>\last:haddr}{\FileNumber}% - \fi + \fi% % declare this backlink destination as used, so we don't % declare another one with the same name \expandafter\def\csname bk##1\thepage\endcsname{}% |