如何使用 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{^&}
我正在处理一个项目,我必须将 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{^&}