Overleaf + Mendeley:如何取消 doi 中的转义字符?

Overleaf + Mendeley:如何取消 doi 中的转义字符?

我正在同步使用 Overleaf 和 Mendeley。这非常方便,因为我在 Mendeley 中的图书馆可以直接在文档中的 overleaf 文档中使用references.bib

然而,当导入来自 mendeley 的 DOI 时,_它们会被转义,这似乎{\_}会导致编译文件中的链接断开。

不幸的是,同步文件无法编辑。所以我正在寻找一种方法来取消转义这些特征。

感谢您的帮助 !

分数维:

\documentclass{memoir}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}

\usepackage[doi=true]{biblatex}

\RequirePackage{filecontents}
\begin{filecontents}{ref.bib}
@article{Williamson.1968,
 author = {Williamson, Oliver E.},
 year = {1968},
 title = {Economies as an Antitrust Defense: The Welfare Tradeoffs},
 doi={12.803/bla{\_}327}
}

\end{filecontents}

\addbibresource{ref.bib}

\begin{document}

\nocite{*}

\printbibliography
\end{document}

答案1

声称支持的软件biblatex应该导出不加改变的 DOI 和 URL,并且不进行 LaTeX 转义。(对于支持专用doiurl字段的大多数 BibTeX 样式来说也是如此。永远不需要转义像或这样的_字段中的特殊字符:样式应该使用可以接受的命令来处理这些事情。)向 Mendeley 支持部门投诉。urldoi\url_

如果你必须坚持使用 Mendeley,而他们拒绝修复此问题,你可以使用 Biber 源图来修复损坏的条目

\documentclass{article}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}

\usepackage[doi=true]{biblatex}

\DeclareSourcemap{
  \maps{
    \map{
      \step[fieldsource=doi,
        match=\regexp{\{\\_\}},
        replace=\regexp{_}]
    }
  }
}

\begin{filecontents}{\jobname.bib}
@article{Williamson.1968,
  author = {Williamson, Oliver E.},
  year   = {1968},
  title  = {Economies as an Antitrust Defense: The Welfare Tradeoffs},
  doi    = {12.803/bla{\_}327}
}
\end{filecontents}

\addbibresource{\jobname.bib}

\begin{document}
\nocite{*}

\printbibliography
\end{document}

Oliver E. Williamson。“经济作为反垄断防御:福利权衡”。收录于:(1968 年)。doi:12.803/bla_327。

对于 Mendeley 导出器损坏的所有字符,您都需要类似的一行。

答案2

我最近才发现这个问题,不幸的是,由于软件包不兼容,我无法使用这里介绍的解决方案。我使用的是带有 cite 的软件包backref,但它不适用于biblatex。最后,我可以通过在 overleaf 中使用 latexmkrc 来解决我的问题。我的问题是包含有效内容的标题{$\mathbb{ab}$}变得混乱。这是我的 latexmkrc 代码,希望对其他人有用:

system("sed -i 's/{\\\\textbackslash}/\\\\/g' ./references.bib");
system("sed -i 's/{\\\\}}/}/g' ./references.bib");
system("sed -i 's/{\\\\{}/{/g' ./references.bib");
system("sed -i 's/{\\\\^}/^/g' ./references.bib");
system("sed -i 's/{\\\\^{}}/^/g' ./references.bib");
system(q"sed -i 's/{\\\$}/$/g' ./references.bib");

相关内容