Zotero Word中插入带超链接的参考文献

Zotero 超链接

找了好多原代码,最接近能实施的为:
https://blog.csdn.net/weixin_47244593/article/details/129072589
但是,就是向他说的一样会报错,我修改了代码,遇见报错的地方会直接跳过不执行,事后找出自己在单独添加较为特殊文章即可,代码如下:

Public Sub ZoteroLinkCitation()
    On Error Resume Next ' Add this line to enable error handling
    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
            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(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
                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
                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 = Len(numOrYear)
                
                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

超链接颜色变化

在这里也给出全盘改变超链接颜色的代码:
参考链接如下:https://zhuanlan.zhihu.com/p/680291144

Sub CitingColor()
    For i = 1 To ActiveDocument.Fields.Count '遍历文档所有域
        ' Word 自带的交叉引用的域代码起始 4 位是 " REF" (注意空格)
        ' Endnote 插入的引用域代码的起始 14 位是 " ADDIN EN.CITE"
        ' Zotero 插入的引用域代码的起始 31 位是 " ADDIN ZOTERO_ITEM CSL_CITATION",可根据需求添加其他类型
        If Left(ActiveDocument.Fields(i).Code, 4) = " REF" Or Left(ActiveDocument.Fields(i).Code, 14) = " ADDIN EN.CITE" Or Left(ActiveDocument.Fields(i).Code, 31) = " ADDIN ZOTERO_ITEM CSL_CITATION" Then
        ActiveDocument.Fields(i).Select ' 选中上述几类域
        Selection.Font.Color = wdColorBlue ' 设置字体颜色为蓝色,可改为其他颜色,如 RGB(255,0,0)
        End If
    Next
End Sub

给doi插入超链接

参考链接

Sub AddHyperlinksToDOIs()
    Dim doc As Document
    Dim rng As Range
    Dim field As field
    Dim doi As String
    Dim test As String
    Set doc = ActiveDocument
    Set rng = doc.Range
    
    With rng.Find
        .ClearFormatting
        .Text = "doi:*^13"
        .MatchWildcards = True
        .Wrap = wdFindStop
        .Forward = True
        
        Do While .Execute
            rng.MoveEnd wdCharacter, -1
            doi = rng.Text
            doi = Mid(doi, 6, Len(doi) - 6)
            rng.Hyperlinks.Add Anchor:=rng, Address:="https://doi.org/" & doi
            ' 移动到下一个匹配项
            rng.Collapse wdCollapseEnd
            rng.MoveStart wdCharacter, 1
        Loop
        
    End With
End Sub
```vb

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/595012.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

今日arXiv最热大模型论文:首个面向AI的python编程框架,提升大模型编程能力新思路

高级编程语言Python有两个受众:一是编译和执行程序的机器,二是阅读、理解和编写程序的人类。机器关注程序的语义操作,而人类更强调代码的可读性。Python在语法中融入了许多以人类为中心的设计元素,以“可读性至上”为设计原则&…

【蓝桥杯备赛国赛】5-5

文章目录 求阶乘双子数 求阶乘 求阶乘 分析k的范围,10的18次方。这个数字很大 想要末尾有0的存在必须要2和5,但是通过分析2的数目应该是远远多于5的,所以只要5的数目够多即可。所以for循环的层次也是10的九次方以上,必然会超时&…

项目|保障房房产管理系统,政务房产解决方案

一、系统概况 保障房管理系统是是为了落实中央关于住房保障的相关政策,实现对低收入家庭住房状况的调查管理、保障计划及落实管理、保障申请及审核管理、保障户和保障房源档案管理等。 针对政府保障房产管理的一站式解决方案,专注于为解决复杂、繁琐的…

python+barcode快速生成条形码(电商测试小工具)

背景 需要测试自助收银机,每次都要在线生成条码,而且生成次数还有限制 需求 满足自定义条形码,可以生成条形码图片 方案 python 3.8以上 barcode 1.0.4 python-barcode 0.15.1 代码 用于生成Code128条形码…

FTP和NFS

一、FTP 1.FTP原理 FTP(file Transfer Protocol,文件传输协议),是典型的C/S架构的应用层协议,由客户端软件和服务端软件两个部分共同实现文件传输功能,FTP客户端和服务器之间的连接时可靠的,面…

【题解】NowCoder Fibonacci数列

题目来源:牛客 题目链接:Fibonacci数列 Fibonacci数列 题目描述: Fibonacci 数列是这样定义的: F[0] 0 F[1] 1 for each i ≥ 2 : F[i] F[i-1] F[i-2] 因此,Fibonacci 数列就形如:0, 1, 1, 2, 3, 5…

uniapp生成二维码(uQRCode)与自定义绘制样式与内容

二维码生成使用了一款基于Javascript环境开发的插件 uQRCode ,它不仅适用于uniapp,也适用于所有Javascript运行环境的前端应用和Node.js。 uQRCode 插件地址:https://ext.dcloud.net.cn/plugin?id1287 目录 1、npm安装 2、通过import引…

HarmonyOS NEXT星河版之模拟图片选择器(下)---使用CustomDialog展示图片

文章目录 一、目标二、开撸2.1 自定义弹窗2.2 主页面事件处理2.3 主页面完整代码 三、小结 一、目标 二、开撸 2.1 自定义弹窗 CustomDialog export struct SinglePreviewDialog {// 弹窗控制器 mustcontroller: CustomDialogController// 展示图片URLimgUrl: ResourceStr b…

C++进阶之路:何为命名空间、缺省参数与函数重载

✨✨ 欢迎大家来访Srlua的博文(づ ̄3 ̄)づ╭❤~✨✨ 🌟🌟 欢迎各位亲爱的读者,感谢你们抽出宝贵的时间来阅读我的文章。 我是Srlua小谢,在这里我会分享我的知识和经验。&am…

JS基础:输出信息的5种方式详解

你好,我是云桃桃。 一个希望帮助更多朋友快速入门 WEB 前端的程序媛。 云桃桃-大专生,一枚程序媛,感谢关注。回复 “前端基础题”,可免费获得前端基础 100 题汇总,回复 “前端基础路线”,可获取完整web基础…

linux部署yum仓库

一. Yum概述 1.yum简介 基于RPM包构建的软件更新机制 可以自动解决依赖关系 所有软件包由集中到YUM软件仓库提供 2.yum工作原理 c/s模式 客户端根据配置文件找到yum仓库服务器的位置 服务端向客户端发送元数据包(包含 软件依赖关系 软件的位置) #相当于软件安装目录 客户…

vue2 中web端播放rtsp视频流 通过ffmpeg(海康威视录像机)

文章目录 一、安装ffmpeg二、配置系统ffmpeg环境变量三、node搭建websocket服务四、vue播放视频 注意:这个方法实现了本地rtsp视频的播放,暂时没考虑服务器部署 参考文章:vue中web端播放rtsp视频流(摄像头监控视频)&am…

书生浦语训练营第2期-第6节作业

一、基础作业 1.1 Lagent Web Demo 使用 1.2 AgentLego 直接使用部分 二、进阶作业 2.1 AgentLego WebUI 使用 2.2 使用 Lagent 自定义工具 2.3 使用AgentLego自定义工具

Unity Navigation 入门(新版)

概述 在游戏的制作过程中,寻路功能一定是非常重要的部分,他可以为主角寻路,也可以运用到敌人追击等,相比于自己实现的难度,使用寻路组件就显得简单的多,那接下来就开始学习这部分的内容吧 1.安装AI Naviga…

【vue+echarts】绘制中国地图,3D地图,省、市、县三级下钻以及回钻,南海诸岛小窗化显示,点位飞线图,点位名称弹窗轮播展示,及一些常见问题

先看效果展示图 目录 准备工作一, 绘制3D地图1,调用官网地址接口获取2,去官网下载中国地图的json数据到本地,本地引入 二, 南海诸岛小窗化显示1, 手动过滤掉,只保留小窗化的南海诸岛2, 代码层面过滤掉,只保留小窗化的南海诸岛 三, 省、市、县三级地图下钻及回钻1, 下钻2, 回钻…

YApi的在IDEA中的使用

1 IDEA中插件下载 2 misc.xml的配置 <component name"yapi"><option name"projectToken">XXXXXXXXXX</option><option name"projectId">47</option><option name"yapiUrl">http://XXXX:3000<…

第10篇:创建Nios II工程之控制单个七段数码管

Q&#xff1a;还记得之前使用Verilog case语句来描述实现七段数码管的逻辑功能。本期我们创建Nios II工程用C语言代码实现相同的功能。 A&#xff1a;基本原理&#xff1a;一个七段数码管由7个发光二极管LED组成&#xff0c;所以控制一个数码管的显示即控制7个LED。我们在之前…

效率工具Cmder与文件拆分

Cmder安装&#xff1a; 网站下载&#xff0c;解压缩&#xff0c;使用管理员身份打开Cmder可执行程序。 Cmder鼠标右键快捷点打开设置 样式图&#xff1a; 命令&#xff1a;以管理员的身份打开Cmder.exe, 输入命令: Cmder.exe /REGISTER ALL 执行完之后回到桌面&#xff0c;…

linux查看ip和端口

1. ip addr ip addr 或者 ip addr show 输出包含了网络接口的名称、状态、MTU&#xff08;Maximum Transmission Unit&#xff09;、链路层地址&#xff08;如MAC地址&#xff09;、IPv4和IPv6地址等信息。 2. 只需要 ip地址 ipV4 ip addr | grep inet ipV6 3.查看端口 s…

国内外主流大模型都具备有哪些特点?

文章目录 ⭐ 火爆全网的大模型起点⭐ 国外主流LLM及其特点⭐ 国内主流LLM及其特点⭐ 全球大模型生态的发展 该章节呢&#xff0c;我们主要是看一下关于国内外主流的大语言模型&#xff0c;通过它们都具备哪些特点&#xff0c;来达成对多模型有一个清晰的认知。对于 “多模型” …
最新文章