htlatex 的 doi 链接错误 --> biber --> htlatex

htlatex 的 doi 链接错误 --> biber --> htlatex

当使用 pdflatex --> biber --> pdflatex 编译以下 MWE 时,会生成正确的 doi 链接:

https://doi.org/10.1016/j.automatica.2013.06.002

但是,当使用 htlatex --> biber --> htlatex 进行编译时,会生成不完整(因此是错误的)的 doi 链接:

10.1016/j.automatica.2013.06.002 

仔细查看生成的 html 文件,发现正确的链接被不完整(错误)的链接覆盖了:

<a href="https://doi.org/10.1016/j.automatica.2013.06.002" ><a 
href="10.1016/j.automatica.2013.06.002" class="url" ><span 
class="cmtt-10">10.1016/j.automatica.2013.06.002</span></a></a>.

这是一个严重的问题,会在具有多个条目的文件中产生错误链接。

这是 MWE

\documentclass{article}
\usepackage{filecontents}
\begin{filecontents*}{\jobname.bib}   
@Article{b,
  date =     2003,
  author =   {Author, Amy},
  title =    {Title},
  journaltitle = {Journal},
  volume =   10,
  number =   4,
  doi = {10.1016/j.automatica.2013.06.002},
  pages =    {100-141}}   
\end{filecontents*}

\usepackage[backend=biber]{biblatex}
\usepackage{hyperref}
\addbibresource{\jobname.bib}   
\begin{document}
    \nocite{*}
    \printbibliography[]
\end{document}

答案1

似乎 TeX4ht 已将\nolinkurl重新定义为\url。在本例中,\nolinkurlBiblatex 使用 来仅打印 DOI 的一部分并\href输出完整地址。这会导致双重链接,其中不指向任何地方的部分链接包含在正确的链接中。不幸的是,浏览器选择了错误的链接。要解决此问题,您可以保存 的原始含义\nolinkurl并覆盖 TeX4ht 配置。

尝试这个配置文件:

\let\orignolinkurl\nolinkurl
\Preamble{xhtml}
\begin{document}
\EndPreamble
\let\nolinkurl\orignolinkurl

它产生更好的输出:

<p class='noindent'><a id='cite.0@b'></a>Amy Author. “Title”. In: <span class='cmti-10'>Journal </span>10.4 (2003), pp. 100–141. <span class='cmcsc-10'><span class='small-caps'>doi</span></span>: <a href='https://doi.org/10.1016/j.automatica.2013.06.002'><span class='cmtt-10'>10.1016/
    </span><span class='cmtt-10'>j.automatica.2013.06.002</span></a>.</p>

相关内容