0.效果对比
原来样式:
修改后样式:
1.修改样式
zoteroPane = Zotero.getActiveZoteroPane();
items = zoteroPane.getSelectedItems();
var rn = 0; // 计数替换条目个数
for (item of items) {
if (item.itemType == "preprint") {
// 创建一个新的 journalArticle 条目
var newItem = new Zotero.Item("journalArticle");
// 复制旧条目的基本信息
newItem.setField("title", item.getField("title"));
// newItem.setField("date", item.getField("date"));
newItem.setField("abstractNote", item.getField("abstractNote"));
newItem.setField("extra", item.getField("extra"));
// 获取arXiv编号和年份信息
// 从DOI字段中提取arXiv识别码
var doi = item.getField("DOI");
var arxivId = "";
if (doi) {
var match = doi.match(/arXiv\.([0-9]+\.[0-9]+)/);
if (match) {
arxivId = match[1]; // 提取arXiv识别码
}
}
var year = item.getField("date").split("-")[0]; // 假设日期格式为YYYY-MM-DD
newItem.setField("language", 'en')
// 设置新的字段
// newItem.setField("publicationTitle", "arXiv preprint arXiv");
newItem.setField("volume", "arXiv preprint arXiv");
newItem.setField("pages", arxivId + ", " + year);
// 准备作者信息数组
var newCreators = [];
// 复制作者信息
var creators = item.getCreators();
for (var i = 0; i < creators.length; i++) {
var creator = creators[i];
var newCreator = {};
if (creator.firstName && creator.lastName) {
newCreator.firstName = creator.firstName;
newCreator.lastName = creator.lastName;
} else if (creator.name) {
newCreator.name = creator.name;
} else {
continue; // 跳过格式不正确的作者
}
newCreator.creatorType = "author"; // 指定作者类型
newCreators.push(newCreator); // 将作者对象添加到数组中
}
// 设置新条目的作者信息
newItem.setCreators(newCreators);
// 保存新的条目
await newItem.saveTx();
// 删除旧的 preprint 条目
// await item.eraseTx();
rn += 1;
}
}
return rn + "个条目信息被修改为GB/T 7714-2015格式。";
2.修改CSL文件
将里面的
<if type="article">
<choose>
<if variable="archive">
<text value="A"/>
</if>
<else>
<text value="M"/>
</else>
</choose>
</if>
修改成
<if type="article">
<choose>
<if variable="archive">
<text value="A"/>
</if>
<else>
<text value="J"/>
</else>
</choose>
</if>