我正在开发一个项目,我必须将Word文档转换为latex。我现在遇到的一个问题是,例如我想用文本段落和对应的latex命令替换所有斜体文本段落。所以看起来如下:
搜索: &LT * GT;
替换: \\ textit {*}
示例:
test - > \\ textit {测试}
现在这个命令存在一些问题。首先< *> olny寻找单词,但我想找到全文的段落。我还没有发现如何做到这一点。在替换行中,Word总是抱怨\字符的用法。我只是不能把它放在那里。我已经读过你需要使用它来排除通配符,所以我使用了其中两个,但这不起作用。正如你所看到的,我也希望在它之间使用斜体文本 两个括号,但在这里Word不承认*作为通配符。
这是我第一次使用通配符,所以我真的不知道。我已经搜索了很多(这导致我到这个网站顺便说一句),但我不能帮助自己。
答案 0 :(得分:1)
在多次对您的问题进行分类后,我终于相信我明白了您的要求,答案是您无法单独使用“查找/替换”。
可以使用格式/字体查找格式为斜体的所有连续文本范围,并选择斜体。这可以在没有通配符的情况下完成,它将使用此格式选择所有连续文本(多个单词)。
你的问题出现在你想要放置东西的地方"周围"你发现了什么。只有在搜索特定术语时才可以这样做。只要您使用*等占位符,您只能替换找到的内容 - 它就无法重复使用。所以此时需要宏代码。
以下示例搜索斜体,然后查找停止。然后在找到的范围内插入之前和之后的代码,重置搜索范围并循环操作,直到找不到斜体的实例。
Sub FindReplaceLatex()
Dim rngSearch As word.Range
Dim rngFound As word.Range
Dim sBefore As String, sAfter As String
Dim bFound As Boolean
sBefore = "\\textit{"
sAfter = "}"
Set rngSearch = ActiveDocument.content
rngSearch.Find.ClearFormatting
rngSearch.Find.Font.Italic = True
Do
bFound = rngSearch.Find.Execute(wrap:=word.wdFindStop, Format:=True)
If bFound Then
Set rngFound = rngSearch.Duplicate
rngSearch.Collapse wdCollapseEnd
rngSearch.End = ActiveDocument.content.End
rngSearch.MoveStart wdCharacter, 1
rngFound.InsertBefore sBefore
rngFound.InsertAfter sAfter
End If
Loop While bFound
End Sub
答案 1 :(得分:0)
您不需要使用通配符或宏。实际上,您甚至不需要指定“查找”文本。您只需要一个普通的查找/替换,在其中您将Font:Italic指定为Find参数,对于替换文本,请使用:\ textit {^&}