跳转至

13

使作者列表中某些作者加粗,加星而且刷新后不变

在写简历或申报项目时,如果需要附上自己已经发表的论文,自己的名字往往需要加粗, 而通讯作者需要加*,NSFC并列第一作者还需要加#,一般的做法是在生成参考文献列表 后手动将需要的名字加粗,加星,加#,但这样做在更新文献(例如你有了新大作) 时加的这些标记会消失,需要重新加。下面提供一个稍为省事的办法:

实现的原理是通过批量替换的方式在作者的姓名前后加上加粗的标记, 如:\<b>作者\</b>,而通讯作者,加#也是替换为名字后面加*或#。 如果不需要这个功能了,则再替换为以前的就可以了。 但这样替换也存在一个问题,使用名字缩写的csl时,加的*和#会被省略。

在Zotero选中需要修改作者的条目。然后 依次点击:, 将以下代码复制到Code窗口中:

var oldName = "Minyi Han";   //原来的姓名,名在前,姓在后
            var newFirstName = "<b>Minyi</b>"; //新的名字,加*
            var newLastName = "<b>Han</b>"; //新的姓

            var rn = 0; //计数替换条目个数
            await Zotero.DB.executeTransaction(async function () {
                zoteroPane = Zotero.getActiveZoteroPane();
                items = zoteroPane.getSelectedItems();
                    for (item of items) {
                    let creators = item.getCreators();
                    let newCreators = [];
                    for (let creator of creators) {
                        if (`${creator.firstName} ${creator.lastName}`.trim() == oldName) {
                            creator.firstName = newFirstName;
                            creator.lastName = newLastName;
                            creator.fieldMode = newFieldMode;
                                    rn+=1;
                        }
                        newCreators.push(creator);

                    }
                    item.setCreators(newCreators);

                    await item.save();

                    }

                }); 
                return rn + " item(s) updated";

点击,则符合条件的作者姓名前后会加上\<b>和\</b>。 然后再Word中插入此条文献时,作者就会加粗,自己替换时需要修改的作者姓名。

也可以使用下面代码,不是对所选择的条目有效,需要结合标签(tag)使用, 在本例中标签(tag)的名称为”通讯作者”。

var oldName = "Minyi Han";
                        var newFirstName = "<b>Minyi</b>";
                        var newLastName = "<b>Han</b>";
                        var newFieldMode = 0; // 0: two-field, 1: one-field (with empty first name)

                        var s = new Zotero.Search();
                        s.libraryID = ZoteroPane.getSelectedLibraryID();
                        var tagName = '通讯作者'; //添加标签
                        s.addCondition('tag', 'is', tagName);
                        s.addCondition('creator', 'is', oldName);

                        var ids = await s.search();
                        if (!ids.length) {
                        return "No items found";
                        }
                        await Zotero.DB.executeTransaction(async function () {
                        for (let id of ids) {
                        let item = await Zotero.Items.getAsync(id);
                        let creators = item.getCreators();
                        let newCreators = [];
                        for (let creator of creators) {
                        if (`${creator.firstName} ${creator.lastName}`.trim() == oldName) {
                        creator.firstName = newFirstName;
                        creator.lastName = newLastName;
                        creator.fieldMode = newFieldMode;
                        }
                        newCreators.push(creator);
                        }
                        item.setCreators(newCreators);
                        await item.save();
                        }
                        });
                        return ids.length + " item(s) updated";

上面的JavaSc代码实现的功能利用Zotero Update IFs也可实现, 下载地址:https://github.com/redleafnew/zotero-updateifs, 插件安装方法见3.3) 本节的操作也可见 Zotero使参考文献列表中某些作者名字加粗,加星,刷新后保留


最后更新: 2022-07-31 20:47:38