|
楼主 |
发表于 2023-9-15 16:18
|
显示全部楼层
本帖最后由 过客fppt 于 2023-9-15 16:21 编辑
不知道为什么代码总是粘贴不出来
Option ExplicitPublic isyunxing As Boolean
Sub EQ公式转化为LaTeX公式规范上标()
If isyunxing = True Then GoTo line1 End If Dim rng As Range Set rng = IIf(Len(Selection.Range.Text) <= 1, ActiveDocument.Content, Selection.Range)' 显示域代码 rng.Fields.ToggleShowCodes Call 全部替换("[0-9]", "#s#up3(^&)", True, True) Call 全部替换("#", "\", False, True) rng.Fields.ToggleShowCodes
MsgBox "第一步已完成,请依次次进行以下操作后,再运行代码:" & vbCrLf & _ "1. 用MathType转化公式" & vbCrLf & _ "2. 用MathType切换TeX" '& vbCrLf & vbCrLf & _ isyunxing = True Exit Subline1: Call 全部替换("\[", "$", False) Call 全部替换("\]", "$", False) Call 全部替换("eth", "pi", False) MsgBox "第二步完成,请进行以下操作:" & vbCrLf & _ "1、用MathType切换TeX" isyunxing = False MsgBox "第三步,请最后一次进行以下操作:" & vbCrLf & _ "1、用MathType切换TeX"
End SubFunction 全部替换(原文字, 替换为, 通配符, Optional ByVal 上标 As Boolean = False)
' 宏由 ZPL 录制,时间: 2022/12/07
Dim rng As Range
Set rng = IIf(Len(Selection.Range.Text) <= 1, ActiveDocument.Content, Selection.Range)
rng.Find.ClearFormatting
With rng.Find
.Font.Superscript = 上标
.Text = 原文字
.Forward = True
.Wrap = wdFindStop 'Wrap = wdFindAsk(找到会弹出提示框)'Wrap = wdFindStop(完成替换会停止)
.MatchCase = False 'True 指定要查找的文本应区分大小写。
.MatchByte = False '搜索期间区分全角和半角字母或字符,则此属性返回 True ;否则返回 False 。 将属性值设置为 True 或 False 以启用或禁用该功能。
.MatchWildcards = 通配符 '通配符开关
.MatchWholeWord = False '真 要查找只整个单词,全字匹配。
.MatchFuzzy = False '确定 Microsoft Word 在搜索过程中是否对日语文本使用非特定搜索选项
.Replacement.Text = 替换为
End With
rng.Find.Execute Replace:=wdReplaceAll
rng.Find.Replacement.Text = 替换为
rng.Find.ClearFormatting
End Function
|
|