VBA替换中文文献引用出现的et al.和and

news/2024/11/23 3:12:29/

  问题描述:Endnote是常用的文献管理工具,并提供国标模板Chinese Std GBT7714 (numeric).ens,但Endnote在中英文混排上略欠考虑。Chinese Std GBT7714使用序号的形式(******1)对文献进行引用,但有时我们需要以作者-年份的形式进行引用,例如:使用******(张三 等)或者******(张三和李四),而endnote出现的引用经常是******(张三 et al.)或者******(张三 and 李四)。虽然用替换或手动修改也可以解决上述问题,但如果论文篇幅较长(如:学位论文)或者需要反复修改(好不容易把et al.改成了,若需要再插入文献,更新Endnote后又变回et al.了),手动修改或替换就过于繁琐了。

  为了解决该问题,也有博客介绍了:将secondary author填为中文名的方法,具体可参考:

endnote管理中文文献及其双语引用: https://blog.csdn.net/rookieWhoCanProduce/article/details/115326114

  但该方法将中文作者设定为secondary author,背离了Endnote的使用逻辑。而且仅能解决参考文献中的et al.,不能解决文中引用et al.

  本文采用更加直接的思路——编写VBA程序,使用的方法一键修改张三 et al.或者张三 and 李四张三 等或者张三和李四。不仅修改文章引用中的张三 et al.或者张三 and 李四问题,也修改文末中文参考文献中出现的张三, et al.

VBA代码的实现思路:

  1. 模糊查找[中文] et al.的内容,将其替换为[中文] 等.
  2. 模糊查找[中文] and [中文].的内容,将其替换为[中文]和[中文].
  3. 模糊查找[中文], et al.的内容,将其替换为[中文], 等.

VBA代码如下:

Sub UCAS_Thesis_Formate()
Attribute UCAS_Thesis_Formate.VB_ProcData.VB_Invoke_Func = "Normal.NewMacros.宏2"'replace 'et al.' in citation with '等'ActiveDocument.Content.SelectWith Selection.Find.ClearFormatting.Text = "[一-龥] et al.".MatchWildcards = TrueEnd WithWhile Selection.Find.Execute = Truec = Selection.RangeSelection.Range = Left(c, 1) & " 等"Wend'replace 'and' in citation with '和'ActiveDocument.Content.SelectWith Selection.Find.ClearFormatting.Text = "[一-龥] and [一-龥]".MatchWildcards = TrueEnd WithWhile Selection.Find.Execute = Truec = Selection.RangeSelection.Range = Left(c, 1) & "和" & Right(c, 1)Wend'replace 'et al.' in reference with '等'ActiveDocument.Content.SelectWith Selection.Find.ClearFormatting.Text = "[一-龥], et al".MatchWildcards = TrueEnd WithWhile Selection.Find.Execute = Truec = Selection.RangeSelection.Range = Left(c, 1) & " 等"Wend
End Sub

修改前:
在这里插入图片描述
修改后:
在这里插入图片描述
修改的gif动画:
在这里插入图片描述

测试数据如下,以中科院学位论文的参考文献要求为例,包含基于国标GBT7714修改后的Endnote模板修改用的VBA代码测试文档

VBA替换中文文献引用出现的et al.和and——以中科院学位论文的参考文献要求为例


http://www.ppmy.cn/news/58052.html

相关文章

【Mysql】基础篇:DML(data manipulation language)语句:增、删、改数据库数据总结

博主简介:努力学习的大一在校计算机专业学生,热爱学习和创作。目前在学习和分享:数据结构、Go,Java等相关知识。博主主页: 是瑶瑶子啦所属专栏: Mysql从入门到精通近期目标:写好专栏的每一篇文章 目录 一、…

爬取景区源码

import requests import json import csvpostUrl "https://m.ctrip.com/restapi/soa2/13444/json/getCommentCollapseList"# 将景点poiId和名称添加到此处 urls [["75487323","凤凰雾涧江景民宿"],["11052220","古童临江客栈&q…

【容器化应用程序设计和开发】2.2 容器编排和Kubernetes调度

往期回顾: 第一章:【云原生概念和技术】 第二章:2.1 容器化基础知识和Docker容器 第二章:2.2 Dockerfile 的编写和最佳实践 容器化应用程序设计和开发 2.3 容器编排和Kubernetes调度 2.3 容器编排和Kubernetes调度 容器编排是…

超全!超详细!2023大 厂 前端面试题手册

HTML、CSS、浏览器 相关 ................................................................... 1 1.网络中使用最多的图片格式有哪些 ............................................................................................. 1 2. 请简述 css 盒子模型 ........…

laravel-admin安装wang-Editor3之坑

先说坑,一开始不知道哪个步骤配置问题,在富文本中上传图片可以正常传到服务器,但是前端无法回显,一直提示图片上传失败,在admin.php的wang-editor配置项中开启debug后,在浏览器console中也只是显示什么unde…

k8s之审计日志

一、为什么要有审计 Kube-Apiserver 的负载突然变高,大量访问失败,集群中到底发生了什么? 当集群发生问题时,这是Metric一般会失效,为了排查以上问题,k8s 提供了两种原生的日志形式——审计(A…

关于C#中委托的思考与实例

委托的定义:委托是持有一个或多个方法的对象。 delegate void MyDel(int value);//声明委托类型 MyDel del;//声明委托变量委托的实质:委托的实质其实也是类,同样继承System.Object,这也是委托无论在类内还是类外都能被定义的原因…

【计算几何】判断一条线段和一段圆弧是否相交 C++代码实现

文章目录 一、前言二、线段与圆弧的代码表示2.1 线段代码表示2.2 圆弧代码表示 三、实现思路及数学推导3.1 第一步(粗略判断)3.2 第二步3.3 第三步 四、完整代码五、效果展示 一、前言 最近做项目,需要判断一条线段是否和一段圆弧相交&#…