Zotero 或 Mendeley 等程序中的自定义引用键

Zotero 或 Mendeley 等程序中的自定义引用键

我正在寻求建议。

我正在尝试寻找“最佳”(:>) 程序来管理我的 bibtex 库,该程序可以让我创建子组并以我的方式格式化引用键,例如ref:[author][year][a-z];egref:后跟作者,后跟年份,后跟字母 a、b、c(如果有键重复)。

首先是 JabRef。它应该还可以,但我在 CentOS 上工作,不幸的是 JabRef 在这个系统上运行不佳。

我尝试了 KBibTeX,它很好,但有点太简单了。格式化引用键没问题,但它不能处理重复项。我不得不将标题的首字母添加到键中:(ref:authorYearFLOT标题的首字母)。如果标题很长,那么键也会很长。另一个问题是没有组和子组管理。

Zetero 具有群组管理、云同步功能,但必须手动将参考书目导出到 bibtex 文件。它还具有不方便的引用键格式“author_year_firstwordoftitle”。它以某种方式处理重复项,但这不是我想要的方式。我更喜欢在我的关键引用中使用“ref:”前缀。

Mendeley 有处理 BibTeX 的选项,通过将单独的文件夹同步到单独的 *.bib 文件中,这很好。如果缺少引用键,它会使用“AuthorYear[abc...]”格式提供它,但有时它会给出其他内容,例如“Author:VMM1998475:word1:word2”。我找不到如何编辑引用键应遵循的样式。

Mendeley 有没有可以处理自定义引用的插件?

谢谢您的任何建议。

编辑。尽管 Mendeley 可以将参考文献(在我的情况下是文件夹)与 bibtex 文件同步,但我仍然不知道它们究竟何时同步。由于我找到了 Zotero 的解决方法(请参阅我的答案),我将切换到此程序。目前,参考文献必须手动导出,但至少我可以控制它!

答案1

您可以使用 Zotero 完成所有这些操作更好的 BibTeX插件 - 预发布版本很稳定,只是功能不完整。但您描述的内容已经准备就绪,不需要手动编辑翻译器文件,因为 Zotero 更新这些文件时可能会重置这些文件。

答案2

好的。我希望我的解决方法能够成为答案。

我稍微研究了一下 Zotero,发现我们可以提供自己的翻译器。它们是用 JavaScript 编写的,我对此了解不多。因为我无法制作自己的导出翻译器,所以我更改了现有的翻译器:BibTeX,作者:Simon Kornblith、Richard Karnesky 和 ​​Emiliano heyns,当我输入这段代码时,版本为 2.1.9。

BiBteX.js处理导出到 的过程中*.bib,有以下一行:

var citeKeyFormat = "%a_%t_%y";

这是引用关键字的占位符,格式如下smith_firstword_2017。我将其改为以下代码:

var citeKeyFormat = "ref:%a%y";

将 citationkey 导出为类似的东西ref:smith2017

有一个函数buildCiteKey (item,citekeys)可以检查重复项,并在引用键中添加后缀,如-1-2等。结果如下:

smith_firstword_2017
smith_firstword_2017-1
smith_firstword_2017-2
...

我也不喜欢它。我决定将原始脚本生成的数字转换为字母序列,例如a, b, ..., z, aa, ab, ... az等。我找到了一个可以帮我完成这个的代码这里请注意,由于注释行,墨水下的代码会产生错误 -#应更改为//):

function convertToNumberingScheme(number) {
  var baseChar = ("a").charCodeAt(0);
  letters  = "";
  do {
    number -= 1;
    letters = String.fromCharCode(baseChar + (number % 26)) + letters;
    number = (number / 26) >> 0;
  } while(number > 0);

  return letters;
}

我在 JSON 序列之后(脚本的最顶部)插入了该函数,并更改了以下行:

citekey = basekey + "-" + i;

进入

citekey = basekey + convertToNumberingScheme(i);

现在,脚本根据我的格式生成引用密钥:

smith2017
smith2017a
smith2017b
...
smith2017aa

希望这个答案可以帮助其他人制作自己的格式。我猜有些人更喜欢保留标题的第一个字。我认为需要%t在变量中保留占位符:citeKeyFormat

相关内容