BibTeX 的一个特点是它会丢弃参考文献标题中的所有大写字母。这个不需要的功能可以通过在要大写的文本周围添加花括号(即 {})来解决。这个过程应该逐一完成。幸运的是,有一个宏可以用来完成这个任务,这个宏是
%SCRIPT
c = cursor
c.movePosition(1, cursorEnums.StartOfWord)
c.insertText('{')
c.movePosition(1, cursorEnums.NextCharacter, cursorEnums.KeepAnchor)
c.replaceSelectedText(c.selectedText().toUpperCase())
c.clearSelection()
c.insertText('}')
此类宏或等效宏(可在互联网上找到)可逐一完成任务。我需要一些想法,如何为整个文件实现该任务,在每个 BibTeX 条目中搜索“title”,并在标题周围添加一对额外的括号。示例:
Title = {someTitle}
应该成为
Title = {{someTitle}}
要点:1. “Title”或“title”与“=”之间的空格数不清楚。2. 最好不要修改那些已经有双括号的。3. 只需修改上述格式的行。4. 行末可能有逗号(,),通常情况下,应该保留。
答案1
这是一个尝试。在 TeXstudio 中创建一个新的宏/用户脚本并粘贴以下内容:
%SCRIPT
function onFoundTitle(c){
var t = c.selectedText();
var dblOp = t.indexOf('{{'), dblCl = t.indexOf('}}');
if (dblOp<0 || dblCl<0){
var op = t.indexOf('{');
var cl = t.lastIndexOf('}')+2;
t = t.substr(0, op) + '{' + t.substr(op);
t = t.substr(0,cl) + '}' + t.substr(cl);
}
c.replaceSelectedText(t);
}
editor.search(/^\s*([tT]itle)\s*=\s*\{.*[(\},)\}]\s*$/,"g",onFoundTitle)
该脚本使用正则表达式查找(及其各种其他组合)的所有实例,并调用在标题周围添加括号的title={...}
函数。onFoundTitle
以下是我用来在各种场景中测试脚本的一些 bib 条目(请参阅 bib 条目键以获取有关我正在测试的内容的线索):
@article{capitalT,
author = {C.Schillings and A.M.Stuart},
Title = {{Analysis of the ensemble Kalman filter for inverse problems}},
}
@article{dblbrackets,
author={Alvin Blue},
title = {{some {tests} within brackets{again}}},
journal = {Physical Review}
}
@article{nospaceNcomma,
author={Girvan, Michelle and Newman, Mark EJ},
title={{Community structure in social and biological networks}}
}
@article{alreadyBrackets,
title ={{Community structure in social networks}},
author ={Girvan, Michelle}
}
注意:如果我误解了问题的要求,请给我提供更具体的例子(就像我上面提到的那样)。