Zotero在word中插入带超链接的参考文献/交叉引用/跳转参考文献

这篇具有很好参考价值的文章主要介绍了Zotero在word中插入带超链接的参考文献/交叉引用/跳转参考文献。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

Zotero以其丰富的插件而闻名,使用起来十分的带劲,最重要的是它是免费的、不卡顿,不像某专业软件。

然而Zotero在word插入参考文献时,无法为参考文献添加超链接,这是一个不得不提的遗憾。

不过,有大佬已经写出了基于Word VBA语言的代码,可以为Zotero在Word中的参考文献一键增加超链接!源代码如下所示:

Word: Possibility to link references and bibliography in a document? - Zotero ForumsZotero is a free, easy-to-use tool to help you collect, organize, cite, and share research.https://forums.zotero.org/discussion/comment/148343/#Comment_148343

参考教程:

Zotero-word中引用跳转到参考文献/建立超链接-引用格式文章浏览阅读7.4k次,点赞10次,收藏25次。该方法根据标题将作者日期或数字样式引用链接到他们的参考文献条目。https://blog.csdn.net/weixin_47244593/article/details/129072589

不过,这个代码在运行的时候,我遇到了一些严重的问题:

-1. 当一个位置同时引用的参考文献>2,就只能为前两个文献添加超链接,且第3个以及之后的参考文献。

-2. 引用了同一个作者的两篇及以上的参考文献,只能给第一个文献添加超链接,第二个就无法添加。

-3. 部分参考文献添加超链接失败,提示Add BookMarks失败。

作为对VBA语言一窍不通的我,硬着头皮啃了一下源代码,对于问题1和问题2,终于发现了问题所在:在同一位置的参考文献添加链接时,原代码无法正常更新下一处要添加超链接的位置,最关键的是其中pos变量。为此,我增加了对同一位置参考文献的不同引用的定位代码,然后将定位结果复制给pos变量,让代码循环执行时可以正确找到应该添加参考文献的位置

对于第3个问题,有些人说是文献原始的标题有误,我照着这个思路对代码进行了调试,然而事情并不是这样,有的文章标题里面就是有一些特殊符号,比如'#',':'。那么是否可能是这些特殊符号会带来bug?事实证明,会的。原代码的titleAnchor在生成短标题的时候就是用Replace把这些特殊符号以及空格全部用'_'代替,然后Add为Bibliography的BookMark。在Bibliography中可以有这些特殊符号,但是作为BookMark,就不能有这些特殊符号。原代码没有将'#'替换为'_',因此增加一下就解决了。

修改后的代码如下:文章来源地址https://www.toymoban.com/news/detail-786185.html

Public Sub ZoteroLinkCitation()
Dim nStart&, nEnd&
nStart = Selection.Start
nEnd = Selection.End
Application.ScreenUpdating = False
Dim title As String
Dim titleAnchor As String
Dim style As String
Dim fieldCode As String
Dim numOrYear As String
Dim pos&, n1&, n2&

ActiveWindow.View.ShowFieldCodes = True
Selection.Find.ClearFormatting
With Selection.Find
    .Text = "^d ADDIN ZOTERO_BIBL"
    .Replacement.Text = ""
    .Forward = True
    .Wrap = wdFindContinue
    .Format = False
    .MatchCase = False
    .MatchWholeWord = False
    .MatchWildcards = False
    .MatchSoundsLike = False
    .MatchAllWordForms = False
End With
Selection.Find.Execute
With ActiveDocument.Bookmarks
    .Add Range:=Selection.Range, name:="Zotero_Bibliography"
    .DefaultSorting = wdSortByName
    .ShowHidden = True
End With
ActiveWindow.View.ShowFieldCodes = False


For Each aField In ActiveDocument.Fields
' check if the field is a Zotero in-text reference
    If InStr(aField.Code, "ADDIN ZOTERO_ITEM") > 0 Then
        fieldCode = aField.Code
        pos = 0
        Paper_i = 1
        Do While InStr(fieldCode, """title"":""") > 0
            n1 = InStr(fieldCode, """title"":""") + Len("""title"":""")
            n2 = InStr(Mid(fieldCode, n1, Len(fieldCode) - n1), """,""") - 1 + n1
        
            title = Mid(fieldCode, n1, n2 - n1)
            
            titleAnchor = Replace(Replace(Replace(Replace(Replace(Replace(Replace(Replace(Replace(Replace(Replace(title, " ", "_"), "#", "_"), "&", "_"), ":", "_"), ",", "_"), "-", "_"), ".", "_"), "(", "_"), ")", "_"), "?", "_"), "!", "_")
            titleAnchor = Left(titleAnchor, 40)
            
            Selection.GoTo What:=wdGoToBookmark, name:="Zotero_Bibliography"
            Selection.Find.ClearFormatting
            With Selection.Find
                .Text = Left(title, 255)
                .Replacement.Text = ""
                .Forward = True
                .Wrap = wdFindAsk
                .Format = False
                .MatchCase = False
                .MatchWholeWord = False
                .MatchWildcards = False
                .MatchSoundsLike = False
                .MatchAllWordForms = False
            End With
            '查找引文,Bibliography
            Selection.Find.Execute
            '选中对应引文的这一段
            Selection.Paragraphs(1).Range.Select
            
            With ActiveDocument.Bookmarks
                .Add Range:=Selection.Range, name:=titleAnchor
                .DefaultSorting = wdSortByName
                .ShowHidden = True
            End With
            
            aField.Select
                        
            Selection.Find.ClearFormatting
                
            If pos = 0 Then
                ' 初始化起始位置和数组
                startPosition = 1
                ReDim commaPositions(1 To 1)
                    
                ' 查找逗号的位置(前提是作者和年份之间采用英文逗号分隔符,否则要改为其他符号)
                Do
                    commaPosition = InStr(startPosition, Selection, ",")
                    
                    If commaPosition > 0 Then
                        ' 将逗号的位置添加到数组
                        commaPositions(UBound(commaPositions)) = commaPosition
                        ' 更新起始位置,以便下一次查找
                        startPosition = commaPosition + 1
                        ReDim Preserve commaPositions(1 To UBound(commaPositions) + 1)
                    End If
                Loop While commaPosition > 0
            End If
                ' 输出记录的逗号位置
            'For j = 1 To UBound(commaPositions)
                'Debug.Print "Comma found at position: " & commaPositions(j)
            'Next j
                
            With Selection.Find
                .Text = "^#"
                .Replacement.Text = ""
                .Forward = True
                .Wrap = wdFindContinue
                .Format = False
                .MatchCase = False
                .MatchWholeWord = False
                .MatchWildcards = False
                .MatchSoundsLike = False
                .MatchAllWordForms = False
            End With
            
            Selection.Find.Execute
            
            Selection.MoveLeft Unit:=wdCharacter, Count:=1
            Selection.MoveRight Unit:=wdCharacter, Count:=pos
            
            Selection.Find.Execute
            Selection.MoveLeft Unit:=wdCharacter, Count:=1
            Selection.MoveRight Unit:=wdWord, Count:=1, Extend:=wdExtend
             
            numOrYear = Selection.Range.Text & ""
            
            pos = commaPositions(Paper_i) - 1
            Paper_i = Paper_i + 1
            
            style = Selection.style
                
            '插入超链接
            ActiveDocument.Hyperlinks.Add Anchor:=Selection.Range, Address:="", SubAddress:=titleAnchor, ScreenTip:="", TextToDisplay:="" & numOrYear
            aField.Select
            
            Selection.style = style
            '如果为文中的参考文献引用设定了格式,那么需要取消下面的注释
            'Selection.style = ActiveDocument.Styles("CitationFormating")
            
            fieldCode = Mid(fieldCode, n2 + 1, Len(fieldCode) - n2 - 1)
        
        Loop
    End If
Next aField
ActiveDocument.Range(nStart, nEnd).Select
End Sub


到了这里,关于Zotero在word中插入带超链接的参考文献/交叉引用/跳转参考文献的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 朴素,word,任何参考文献导入endnote

    这里的参考文献指的是类似于: 前面的序号有没有无所谓,以及其他的Bibtex等格式均可以。 第一次使用endnote20,单纯一个导入参考文献忙活了一个下午的时间,因为我的参考文献不是一个个PDF格式的,或者说之前从期刊网站上导出的,是 论文大约写好了但是文献太多借用

    2024年02月09日
    浏览(47)
  • word中使用通配符批量将参考文献设置为上角标

    目录 一、word中的通配符匹配规则 二、匹配单个参考文献 三、匹配多个参考文献 四、操作方式 (1)打开word中的替换功能  (2)输入要查找的内容 (3)选择替换格式 (4)点击替换 ? 匹配任何单个字符。 * 匹配任何字符的序列。 [] 匹配在括号中的任何单个字符。 [!] 匹配任

    2024年02月10日
    浏览(65)
  • 计算机毕设参考文献、Java参考文献、MySQL参考文献、jsp参考文献、Python参考文献、微信小程序参考文献、外文参考文献

    编程技术交流、源码分享、模板分享、网课教程 🐧裙:776871563 1.1 Javaweb通用 1.2 Java 1.3 外文通用 1.4 mysql 1.5 Python 1.6 jsp 1.7 微信小程序 1.8 ASP.NET 1.9 springboot参考文献 2.0 vue参考文献

    2024年02月11日
    浏览(38)
  • 近几年计算机毕设之论文参考文献(Java参考文献、MySQL参考文献、jsp参考文献、Python参考文献、微信小程序参考文献、外文参考文献)(10个一组)

    目录   1、Java参考文献 2、JavaWeb参考文献 3、MySQL参考文献 4、Python参考文献 5、微信小程序参考文献 6、Jsp参考文献 7、SpringBoot参考文献 8、vue参考文献 9.ASP.NET参考文献 10、外文参考文献        

    2024年02月20日
    浏览(79)
  • MDPI参考文献引用

    在引参考文献的时候,MDPI论文有一个统一的格式要求,这里是帮助那些不会快速引文献的同学快速引用MDPI格式的参考文献。 【1】首先安装endnote,并创建仓库 【2】下载endnote识别的MDPI输出参考文献格式类型:https://endnote.com/style_download/mdpi/,并放到endnote安装文件夹下(D:sof

    2024年02月04日
    浏览(55)
  • endnote调整参考文献

    endnote调整参考文献 1. 2. 3.自定义GBT7714!!!

    2024年02月06日
    浏览(60)
  • IEEE论文参考文献格式

    本文整理记录IEEE论文的参考文献正确的格式,包括引用书籍、期刊论文、会议论文。参考了IEEE官方颁布的参考文献相关文件。 首先请注意以下几点: 作者姓名的名仅保留首字母,姓全部保留。比如:蔡徐坤(Xukun Cai)写为(X. Cai) 多个作者直接用,隔开,最后一个作者之

    2024年02月09日
    浏览(39)
  • latex数字引用参考文献

    目录 一、latex在正文中引用参考文献 第一种引用: 第二种引用: 二、文末显示参考文献 第一种引用: 第二种数字引用: latex引用参考文献,分为正文里,和文末显示参考文献两部分。 latex在正文中引用参考文献可以分为两种样式,一种是“姓名(年份)”,另一种是“[1]”。

    2023年04月26日
    浏览(58)
  • 16.5 参考文献——深度学习定位

    同济大学 Zhao Y, Gong W, Li L, et al. An Efficient and Robust Fingerprint Based Localization Method for Multi Floor Indoor Environment[J]. IEEEa Internet of Things Journal, 2023. 利用深度神经网络(DNN)模型来解决地板识别和位置估计问题。为了解决多楼层识别问题, Jang等人[18] 设计了一种基于 CNN 的识别模型,该

    2024年01月23日
    浏览(51)
  • 游戏毕业设计参考文献合集

    如今不管是手机游戏还是网络游戏,都受到热捧,游戏设计也由此走入大家的视线中,本文整理了260个中英文\\\"游戏毕业设计参考文献范例\\\",涵盖游戏角色设计、游戏网站设计、游戏动画设计等等,以供参考。 游戏毕业设计参考文献一: [1]曹炜卿。微信平台益智类游戏的设计

    2024年01月17日
    浏览(66)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包