![Biblatex:在指定条件下用自定义条目类型替换标题](https://linux22.com/image/299393/Biblatex%EF%BC%9A%E5%9C%A8%E6%8C%87%E5%AE%9A%E6%9D%A1%E4%BB%B6%E4%B8%8B%E7%94%A8%E8%87%AA%E5%AE%9A%E4%B9%89%E6%9D%A1%E7%9B%AE%E7%B1%BB%E5%9E%8B%E6%9B%BF%E6%8D%A2%E6%A0%87%E9%A2%98.png)
我使用biblatex
+ Biber 来记录我的论文参考书目,但我的主要参考数据库是 EndNote。我有超过 1400 个条目,所以我不会更改它!这不是一个大问题,因为我可以从 EndNote 导出到.bib
适当格式的文件中。
我已经设法解决了诸如 Unicode 字符和希腊字母之类的问题,但仍有一些东西需要调整(例如期刊文章标题中的上标和下标)。这类问题相对较少,所以我想做的是使用 EndNote 中的自定义字段(我们称之为latextitle
)来放置经过 LaTeX 调整的期刊文章标题版本(例如\textsuperscript
) 。所以最后我得出了我的问题:如果字段不为空\textsubscript
,有什么方法可以biblatex
替换latextitle
字段?title
latextitle
我知道这是一个相当“地方性”的问题,所以我已经做好了被批评的充分准备!
答案1
显然,最好有一个格式正确的.bib
文件,即biblatex
Biber 可以顺利处理的文件。但在某些情况下,这实际上是不可能的(甚至不是理想的)。
使用 Biber 可以很容易地即时修改源文件。
在您的情况下,您建议有一个latextitle
用于 LaTeX/ 使用的字段biblatex
和“正常”title
字段,可以使用以下直接映射
\DeclareSourcemap{
\maps[datatype=bibtex]{
\map[overwrite]{
\step[fieldsource=latextitle, final]
\step[fieldset=title, origfieldval]
}
}
}
它将现有的映射latextitle
到title
覆盖后者,如果latextitle
不存在则不执行任何操作。
平均能量损失
\documentclass[a4paper]{article}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage{filecontents}
\usepackage[backend=biber]{biblatex}
\begin{filecontents*}{\jobname.bib}
@article{test,
author = {Arnold Uthor},
title = {Uhh. LaTeX won't like \this},
latextitle = {But we're fine here},
journal = {Journal of Confusing TeX},
date = {2014-10-10},
}
\end{filecontents*}
\addbibresource{\jobname.bib}
\addbibresource{biblatex-examples.bib}
\DeclareSourcemap{
\maps[datatype=bibtex]{
\map[overwrite]{
\step[fieldsource=latextitle, final]
\step[fieldset=title, origfieldval]
}
}
}
\nocite{test,wilde}
\begin{document}
\printbibliography
\end{document}