一般来说,我们可以通过设置语言输入每个 .bib 条目并使用\DeclareBibliographyStrings
(BibLaTeX 文档,第 204 页)。
门德利可以生成 .bib 资源,但无法包含语言在每个条目中键入。
我的问题是如何在没有语言钥匙。
我知道 BibTeX 可以获取多个 .bib 资源。BibLaTeX 可以在每个 .bib 资源中使用不同的格式设置吗?或者,有没有建议可以在没有语言钥匙?
答案1
显然,Mendeley 最好只允许添加该langid
字段以方便语言切换。
如果你无法做到这一点,你可以.bib
按语言在文件中组织你的参考书目。然后你可以langid
像这样为每个条目添加字段
\DeclareSourcemap{
\maps[datatype=bibtex]{
\map{
\perdatasource{\jobname-en.bib}
\step[fieldset=langid, fieldvalue={english}]
}
\map{
\perdatasource{\jobname-de.bib}
\step[fieldset=langid, fieldvalue={ngerman}]
}
\map{
\perdatasource{\jobname-fr.bib}
\step[fieldset=langid, fieldvalue={french}]
}
}
}
我们用它\perdatasource
来限制到适当文件的映射.bib
。
平均能量损失
\documentclass[ngerman,french,english,british]{article}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage{babel}
\usepackage[style=authoryear, backend=biber, abbreviate=false, autolang=other]{biblatex}
\usepackage{filecontents}
\begin{filecontents*}{\jobname-en.bib}
@book{abook,
author = {Ann Uthor},
editor = {Emily Ditor},
translator = {Tracy R. Anslator},
title = {A Fancy Title},
date = {2015},
}
\end{filecontents*}
\begin{filecontents*}{\jobname-de.bib}
@book{einbuch,
author = {Andrea Torin},
editor = {Herbert R. Ausgeber},
title = {Ein Titel},
date = {2014},
}
\end{filecontents*}
\begin{filecontents*}{\jobname-fr.bib}
@book{livre,
author = {Amelie Uteur},
editor = {R. Édactrice},
title = {Titre},
date = {2014},
}
\end{filecontents*}
\addbibresource{\jobname-en.bib}
\addbibresource{\jobname-de.bib}
\addbibresource{\jobname-fr.bib}
\DeclareSourcemap{
\maps[datatype=bibtex]{
\map{
\perdatasource{\jobname-en.bib}
\step[fieldset=langid, fieldvalue={english}]
}
\map{
\perdatasource{\jobname-de.bib}
\step[fieldset=langid, fieldvalue={ngerman}]
}
\map{
\perdatasource{\jobname-fr.bib}
\step[fieldset=langid, fieldvalue={french}]
}
}
}
\nocite{*}
\begin{document}
\printbibliography
\end{document}
请注意,所有条目的语言都不同。
或者 - 感谢 @jon 的想法 - 您还可以向可以导出到的字段添加唯一字符串。在我们的示例中,我们添加[[<langid>]]
到title
字段(其中<langid>
应该扩展为语言标识符biblatex
或更确切地说babel
/polyglossia
可以应对)。然后将语言字符串添加到字段langid
并从中删除title
。
这里的映射如下所示
\DeclareSourcemap{
\maps[datatype=bibtex]{
\map{
\step[fieldsource=title, match=\regexp{\s*\[\[(.+)\]\]}, final]
\step[fieldset=langid, fieldvalue=\regexp{$1}]
\step[fieldsource=title, match=\regexp{\s*\[\[(.+)\]\]}, replace={}]
}
}
}
.bib
然后像这样将语言添加到条目中
@book{einbuch,
author = {Andrea Torin},
editor = {Herbert R. Ausgeber},
title = {Ein Titel[[ngerman]]},
date = {2014},
}
平均能量损失
\documentclass[ngerman,french,english,british]{article}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage{babel}
\usepackage[style=authoryear, backend=biber, abbreviate=false, autolang=other]{biblatex}
\usepackage{filecontents}
\begin{filecontents*}{\jobname.bib}
@book{abook,
author = {Ann Uthor},
editor = {Emily Ditor},
translator = {Tracy R. Anslator},
title = {A Fancy Title [[english]]},
date = {2015},
}
@book{einbuch,
author = {Andrea Torin},
editor = {Herbert R. Ausgeber},
title = {Ein Titel[[ngerman]]},
date = {2014},
}
@book{livre,
author = {Amelie Uteur},
editor = {R. Édactrice},
title = {Titre [[french]]},
date = {2014},
}
\end{filecontents*}
\addbibresource{\jobname.bib}
\DeclareSourcemap{
\maps[datatype=bibtex]{
\map{
\step[fieldsource=title, match=\regexp{\s*\[\[(.+)\]\]}, final]
\step[fieldset=langid, fieldvalue=\regexp{$1}]
\step[fieldsource=title, match=\regexp{\s*\[\[(.+)\]\]}, replace={}]
}
}
}
\nocite{*}
\begin{document}
\printbibliography
\end{document}