我有一个详尽的参考文献列表(主要是期刊文章),它从 Mendeley 自动导出到 .bib 文件。
我目前遇到的问题是 IEEE 样式使用句子大小写,因此我的标题中的首字母缩略词没有大写。考虑以下示例,
@article{Paik2007,
author = {Paik, Bu Geun and Kim, Jin and Park, Young Ha and Kim, Ki Sup and Yu, Kwon Kyu},
doi = {10.1016/j.oceaneng.2005.11.022},
isbn = {00298018},
issn = {00298018},
journal = {Ocean Engineering},
keywords = {Convection velocity,Phase-averaging,Propeller wake,Swirling strength,Tip vortex,Trailing vorticity,Two-frame PIV},
mendeley-groups = {Msc Research},
pages = {594--604},
title = {Analysis of Wake Behind a Rotating Propeller using PIV Technique in a Cavitation Tunnel},
url = {http://202.114.89.60/resource/pdf/679.pdf},
volume = {34},
year = {2007}
}
我使用以下设置biblatex
\usepackage[url=false, % Ignore url field
backend=biber, % Not bibtex
sorting=none, % Order of appearence in text
bibencoding=utf8, % For those special characters
maxbibnames=10, % Use et all only for more than 10
style =numeric-comp]{biblatex}
将 biblatex 样式设置为ieee
,标题生成为
使用空化风洞中的 piv 技术分析旋转螺旋桨后的尾流
我希望标题表示为
利用 PIV 技术在空化风洞中分析旋转螺旋桨尾流
如果我将样式更改为numeric-comp
,则标题字段将与 bib 文件完全一致,但 bib 文件的标准并不统一。有些期刊遵循句子大小写,而有些则不遵循。
我确实知道我可以手动编辑 bib 文件并将所有首字母缩略词包装起来{}
以保留大小写,但是如果标题中有两个或更多后续大写字母,有没有更智能的方法来自动保持大小写?
答案1
我完全同意乔恩参考书目文件需要投入大量的心思和人力,以确保信息尽可能准确;有很多微妙之处和极端情况是脚本或其他自动化无法捕捉到的。我也完全同意他的建议
投入时间(即使不是为了这项任务)来培养一个好的、符合要求的参考书目。从其他来源获取的大多数数据都存在微妙和不那么微妙的缺陷……
也就是说,可以使用 Biber 的源映射和正则表达式来保护带有花括号的首字母缩略词
\DeclareSourcemap{
\maps[datatype=bibtex]{
\map{
\step[fieldsource=title, match=\regexp{\b([A-Z]{2,})\b}, replace={{}{$1}}]
}
}
}
这将匹配所有由单词分隔符(空格、换行符等)包围的两个或多个大写字母的组合,并将它们包裹在花括号中(由于某种原因,需要空组才能工作,天知道为什么)。
平均能量损失
\documentclass[american]{article}
\usepackage{babel}
\usepackage[style=ieee, backend=biber]{biblatex}
\usepackage{filecontents}
\begin{filecontents*}{\jobname.bib}
@article{Paik2007,
author = {Paik, Bu Geun and Kim, Jin and Park, Young Ha and Kim, Ki Sup and Yu, Kwon Kyu},
doi = {10.1016/j.oceaneng.2005.11.022},
journal = {Ocean Engineering},
pages = {594--604},
title = {Analysis of Wake Behind a Rotating Propeller using PIV and CIV Technique in a Cavitation Tunnel},
url = {http://202.114.89.60/resource/pdf/679.pdf},
volume = {34},
year = {2007}
}
@article{un,
author = {Ban Ki-moon},
journal = {Ocean Engineering},
title = {I Quite like the UN},
year = {2007}
}
@article{faq,
author = {Anne Uthor},
journal = {Ocean Engineering},
title = {FAQ and Other Questions Answered},
year = {2007}
}
\end{filecontents*}
\addbibresource{\jobname.bib}
\DeclareSourcemap{
\maps[datatype=bibtex]{
\map{
\step[fieldsource=title, match=\regexp{\b([A-Z]{2,})\b}, replace={{}{$1}}]
}
}
}
\begin{document}
\nocite{*}
\printbibliography
\end{document}
奖金,
sed "s/\([A-Z]\{2,\}\)/{\1}/g" <file>
应该做与脚本相同的事情sed
。