论文中图一.1修改为图1.1
https://blog.sciencenet.cn/blog-241374-1024463.html
chatgpt3.5
前情提要
论文的标题格式要求为中文一、二、三但是在图的题注要使用1.1 、2.1这类 。word也有很多插件实现,当然大多数都需要付费。想到word中可以使用宏,便开始了宏的编写。
注意事项 \color{red}{注意事项} 注意事项
-
仅适用于"一.1"转为1.1的情况
-
打开的文件
请 先备份 \color{red}{先备份} 先备份打开的文件,避免因word崩溃而使得文档丢失
-
刷新
交叉引用可能不会立即刷新, 需要选中刷新域后按 F 9 进行刷新 {\color{red}{需要选中刷新域后按F9进行刷新}} 需要选中刷新域后按F9进行刷新。 一般来说全选( C t r l + A )后按 F 9 {\color{green}{一般来说全选(Ctrl+A)后按F9}} 一般来说全选(Ctrl+A)后按F9即可。
-
如果你在文中除题注外使用了域代码{ STYLEREF 1 \s },请谨慎使用。
实现宏代码
实现方式
将原文中域代码{ STYLEREF 1 \s }修改为{QUOTE “一九一一年一月{ STYLEREF 1 \s }日” @“D”}即可将一.1修改为1.1。
宏代码
Sub ReplaceFieldCode()
'运行此宏前请先进行备份,有丢失文件的风险
'在论文中将一.1 修改为1.1
Dim myField As Field
Dim myRange As Range
Dim searchCode As String
Dim replaceCode As String
Dim addCodeFields As String
Dim addCode As String
'查找域中的代码
searchCode = " STYLEREF 1 \s "
'替换并添加的代码
replaceCode = "QUOTE ""一九一一年一月"
addCodeFields = "1 \s"
addCode = "日""\@""D"""
test = replaceCode + addCode + addCodeFields + addCode
For Each myField In ActiveDocument.Fields
' Check if the field code contains the search code
If StrComp(myField.Code.Text, searchCode, vbBinaryCompare) = 0 Then
Set myRange = myField.Code
'添加域代码
t = myRange.Fields.Add(myRange, wdFieldStyleRef, addCodeFields)
'在域代码{之前添加文本
t.MoveStart wdCharacter, -1
t.InsertBefore replaceCode
'在域代码}之后添加文本
t.MoveEnd wdCharacter, 1
t.InsertAfter addCode
' Update the field
myField.Update
' Print the modified field code in the Debug window
Debug.Print "Modified field code: " & myField.Code.Text
End If
Next myField
End Sub
如何使用宏
Excel和Word中怎么使用宏? - pimgeek的回答 - 知乎 https://www.zhihu.com/question/22007011/answer/20868711
https://blog.csdn.net/frozleaf/article/details/91785813
简而言之就是
仅打开需要修改的word ->视图->宏->查看宏
->创建宏-> 跳出的编辑窗口 ->复制此文中代码 ->将编辑窗口代码全部替换为本代码
->运行代码