我对VBA脚本很陌生。我正在使用TeX转换器将GrindEq文件转换为Word文档。在这个TeX文件中有多个\href命令。这里的内容只出现在MS-Word文件(即. https://doi.org/10.1016/0167-6423(87)90036-0)中。到目前为止,我使用python在内容<LaTeX-href-http>https://doi.org/10.1016/0167-6423(87)90036-0</LaTeX-href-http>的前后放置标记。通过这个内容,在MS-Word文件中生成了带有标记的内容。
类似地,对于转换为小Caps字体,转换为单空间字体,我已经记录了宏和修改根据我自己的需要和使用。
Sub XXX_SmallCaps()
'
' XXX_SmallCaps Macro
'
'
Selection.Find.ClearFormatting
Selection.Find.Replacement.ClearFormatting
With Selection.Find.Replacement.Font
.SmallCaps = True
.AllCaps = False
End With
With Selection.Find
.Text = "\<LaTeX-SmallCaps\>(*@)\</LaTeX-SmallCaps\>"
.Replacement.Text = "\1"
.Forward = True
.Wrap = wdFindContinue
.Format = True
.MatchCase = False
.MatchWholeWord = False
.MatchAllWordForms = False
.MatchSoundsLike = False
.MatchWildcards = True
End With
Selection.Find.Execute Replace:=wdReplaceAll
'
' XXX_Serif Macro
'
'
Selection.Find.ClearFormatting
Selection.Find.Replacement.ClearFormatting
Selection.Find.Replacement.Font.Size = 13
Selection.Find.Replacement.Font.Name = "Calibri"
With Selection.Find
.Text = "\<LaTeX-SerifFont\>(*@)\</LaTeX-SerifFont\>"
.Replacement.Text = "\1"
.Forward = True
.Wrap = wdFindContinue
.Format = True
.MatchCase = False
.MatchWholeWord = False
.MatchAllWordForms = False
.MatchSoundsLike = False
.MatchWildcards = True
End With
Selection.Find.Execute Replace:=wdReplaceAll
'
' XXX_MonoSpace
'
'
Selection.Find.ClearFormatting
Selection.Find.Replacement.ClearFormatting
Selection.Find.Replacement.Font.Size = 12
Selection.Find.Replacement.Font.Name = "Courier New"
With Selection.Find
.Text = "\<LaTeX-MonospaceFont\>(*@)\</LaTeX-MonospaceFont\>"
.Replacement.Text = "\1"
.Forward = True
.Wrap = wdFindContinue
.Format = True
.MatchCase = False
.MatchWholeWord = False
.MatchAllWordForms = False
.MatchSoundsLike = False
.MatchWildcards = True
End With
Selection.Find.Execute Replace:=wdReplaceAll
End Sub但是如何为<LaTeX-href-http>...</LaTeX-href-http>和<LaTeX-href-http>之间的内容提供超链接,使用VBA中需要删除的</LaTeX-href-http>标记呢?请参考我的DOC文件的图像。

发布于 2022-06-11 13:47:05
例如(包括清理其他代码):
Sub ReformatLaTeX()
Application.ScreenUpdating = False
Dim StrLnk As String
With ActiveDocument.Range
With .Find
.ClearFormatting
.Replacement.ClearFormatting
.Format = False
.Forward = True
.Wrap = wdFindContinue
.MatchWildcards = True
.Replacement.Text = "\1"
.Replacement.Font.SmallCaps = True
.Text = "\<LaTeX-SmallCaps\>(*@)\</LaTeX-SmallCaps\>"
.Execute Replace:=wdReplaceAll
.Replacement.ClearFormatting
.Replacement.Font.Size = 13
.Replacement.Font.Name = "Calibri"
.Text = "\<LaTeX-SerifFont\>(*@)\</LaTeX-SerifFont\>"
.Execute Replace:=wdReplaceAll
.Replacement.Font.Size = 12
.Replacement.Font.Name = "Courier New"
.Text = "\<LaTeX-MonospaceFont\>(*@)\</LaTeX-MonospaceFont\>"
.Execute Replace:=wdReplaceAll
.Replacement.ClearFormatting
.Text = "\<LaTeX-href-http\>*@\<\/LaTeX-href-http\>"
.Replacement.Text = ""
.Wrap = wdFindStop
End With
Do While .Find.Execute
StrLnk = Split(Split(.Text, "</LaTeX-href-http>")(0), "<LaTeX-href-http>")(1)
.Hyperlinks.Add Anchor:=.Duplicate, Address:=StrLnk, TextToDisplay:=StrLnk
.Start = .Hyperlinks(1).Range.End
Loop
End With
Application.ScreenUpdating = True
End Subhttps://stackoverflow.com/questions/72582813
复制相似问题