Mendeley 允许您使用 HTML 符号强调文章或报告标题中的拉丁名称,如下所示:
A treatise on the ecology of <I>Rattus rattus</I>
使用biblatex
,标签将“逐字”传递,当然 LaTeX 无法理解它们。我想用 替换 all <I>
,用 替换\emph{
all 。</I>
}
我尝试使用\DeclareSourceMap
如下方法:
\DeclareSourcemap{
\maps[datatype=bibtex]{
\map{
\step[fieldsource=title, match={<I>}, replace={\emph{}]
\step[fieldsource=title,match={</I>},replace={}}]
}
}
}
但是 LaTeX 当然会因为额外内容而受阻{
并}
造成混淆。
我应该怎样摆脱括号才能使其工作?
答案1
我发现问题更多的在于让 Biber 接受看起来像 XML 标签的内容,而不是处理\emph
,这可以通过将它们包装在 中\regexp
并用转义符处理。最后我求助于通过字符号指定 < 和 >。
无论如何,这似乎是有效的。
\DeclareSourcemap{
\maps[datatype=bibtex]{
\map{
\step[fieldsource=title,
match=\regexp{\x3cI\x3e},
replace=\regexp{\\emph\{}]
\step[fieldsource=title,
match=\regexp{\x3c/I\x3e},
replace=\regexp{\}}]
}
}
}
当然,正如任何人都知道的那样,使用正则表达式解析 HTML 并不能保证其稳健性。
完整 MWE
\documentclass{article}
\usepackage{filecontents}
\begin{filecontents}{\jobname.bib}
@book{ratty,
author = {Mouse, Michael},
title = {A Treatise on <I>rattus rattus</I>},
publisher = {Rodent Publishers},
date = {2012},
}
\end{filecontents}
\usepackage[style=authoryear,backend=biber]{biblatex}
\DeclareSourcemap{
\maps[datatype=bibtex]{
\map{
\step[fieldsource=title, match=\regexp{\x3cI\x3e}, replace=\regexp{\\emph\{}]
\step[fieldsource=title, match=\regexp{\x3c/I\x3e}, replace=\regexp{\}}]
}
}
}
\addbibresource{\jobname.bib}
\begin{document}
\nocite{*}
\printbibliography
\end{document}