在Word中给Zotero参考文献的doi添加超链接

最近写论文需要修改把doi修改成可跳转的格式,但是很可恶的是zotero好像没有可以一键勾选的功能(如果有请踢踢我),这一点还是败给EndNote了。。。不过本着死磕到底的原则,本人终于找到了可实现的方法,分享如下。

在“视图”选项卡找到“宏”,并点击“查看宏”,界面如下,点击“创建”

进入下面这个界面,把名字修改成AddHyperlinksToDOIs

宏代码的内容可以参考下面的:

Sub AddHyperlinksToDOIs()
    Dim doc As Document
    Dim rng As Range
    Dim doi As String
    Dim lastChar As String
    
    Set doc = ActiveDocument
    Set rng = doc.Range
    
    With rng.Find
        .ClearFormatting
        .Text = "https://doi.org/*^13"  ' 匹配 DOI 后面跟着标点或空格
        .MatchWildcards = True
        .Wrap = wdFindStop
        .Forward = True
        
        Do While .Execute
            doi = rng.Text
            doi = Left(doi, Len(doi) - 2)
            rng.Hyperlinks.Add Anchor:=rng, Address:=doi
            
            ' 移动到下一个匹配项
            rng.Collapse wdCollapseEnd
            rng.MoveStart wdCharacter, 1
        Loop
    End With
End Sub

 但是使用的时候一定要知道为什么这样写,本人之前就是随便copy了一个大佬的链接,结果一直不成功。需要注意的是下面这几句:

1、超链接文本内容

.Text = "https://doi.org/*^13"  ' 匹配 DOI 后面跟着标点或空格

这句是为了查找给哪句添加超链接。"^13"在word的通用符里表示回车符(可以Ctrl+H查找一下 ,可以发现“https://doi.org/*^13”可以选中所有的doi链接)我的doi格式是这种:

如果是其他格式的话直接自己修改下宏代码中“.Text”的内容即可。

2、跳转的网页地址

doi = Left(doi, Len(doi) - 2)
rng.Hyperlinks.Add Anchor:=rng, Address:=doi

"rng.Hyperlinks.Add"是给doi表示的字符串添加超链接,运行后可以看到原文中的doi变蓝了;“Address:=doi”的含义将超链接到的网页地址赋为doi变量,但是问题来了!!

此时doi其实是“https://doi.org/10.1016/j.rcim.2024.102818 .”,也就是回车符前的所有字符,而带着末尾的句号会使网页地址无效,所以我需要去掉倒数后两个字符,及句号和空格,所以我加了一句“doi = Left(doi, Len(doi) - 2)”,这里大家根据自己的情况确定去掉几位。

其他的不用改,修改好就可以保存宏

然后再回到这个界面,运行我们新定义的宏

至此可以正常跳转啦!!可以试试,也比较简单,就是要明白其中的原理,因地制宜~

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值