如何使用 MS Word 搜索和替换将找到的文本包含在 LaTeX 环境中?

How to enclose found text in LaTeX-environment using MS Word search & replace?

我正在处理一个项目,我必须将 Word 文档转换为 LaTeX。我现在遇到的问题之一是我想用相应的 LaTeX 环境中包含的文本段落替换所有斜体文本段落。为此,我正在尝试使用通配符。因此,例如这样的事情:

搜索: (<*>)

替换: \textit{\1}

示例:

测试 -> \textit{测试}

这个例子现在有一些问题。首先,<*> 只查找单词,但我想查找整个文本段落。我还没有找到如何做到这一点。在替换字段中,Word 总是抱怨使用“\”字符。我根本不能把它放在那里。我读到你需要使用它来排除通配符,所以我尝试使用两个后续的通配符,但仍然不起作用。

这是我第一次使用通配符,所以我真的不知道。我已经在谷歌上搜索了很多(顺便说一句,我就是这样找到这个网站的),但我只是不知道该怎么做。

在多次整理你的问题后,我终于相信我明白你在问什么,答案是你不能单独使用 Find/Replace。

使用 Format/Font 和 selecting 斜体可以找到所有设置为斜体格式的连续文本范围。这可以在没有通配符的情况下完成,它将 select 所有连续的文本(多个单词)都采用这种格式。

您的问题出在您想要放置一些 "around" 您找到的东西的地方。这仅在搜索特定术语时才有可能。一旦您使用诸如 * 之类的占位符,您就只能替换找到的内容——它不能被重复使用。所以此时需要宏代码。

以下示例搜索斜体,此时 Find 停止。然后将之前和之后的代码插入找到的范围周围,重置要搜索的范围并且操作循环直到找不到更多斜体实例。

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

您不需要使用通配符或宏。实际上,您甚至不需要指定 'Find' 文本。您只需要一个普通的 Find/Replace,其中指定 Font:Italic 作为 Find 参数,对于替换文本,使用:\textit{^&}