当使用 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
。在本例中,\nolinkurl
Biblatex 使用 来仅打印 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>