在 Word 2019 中查找/替换带格式的公式

在 Word 2019 中查找/替换带格式的公式

我翻译了一篇德语文本,其中包含许多带有 Fraktur 符号的方程式。以下是一个例子:

带有 Fraktur 符号的方程示例

现在我想用相应的拉丁字母替换方程中的符号,还将拉丁字母格式化为粗体/斜体(矢量符号)。

查找/替换符号很容易,但 Word 不想同时应用粗体/斜体格式方程式内部(它在普通文本中有效)。

这可能吗?也许使用 VBA?有什么建议吗?

设置:Microsoft® Word 2019 MSO(版本 2403 内部版本 16.0.17425.20176)64 位

编辑 1:这种技术已经有很大帮助:在 Word 2019 中通过公式查找和替换文本

答案1

A这里的问题似乎是,每当您在公式中插入常规字母字符(例如,通常代码点 U+0041,十进制 65)时,公式编辑器 (a) 使用 Cambria Math 字体(或可能是另一种 Math 字体)并且 (b) 将其转换为MATHEMATICAL ITALIC CAPITAL AUnicode 代码点,即 Unicode Plane 1 字符。如果您对其应用粗体,它将被( )U+1D434替换。MATHEMATICAL BOLD ITALIC CAPITAL AU+1D468

在我看来,Word 的“查找/替换”对话框确实应该为您完成所有这些工作,但是正如您所见,它并没有这样做,所以问题是如何让它做到这一点。

如果您只需要进行少量替换(例如 A、B、C),您可以继续使用“查找/替换”对话框,但在框中插入正确的数学粗体斜体字符Replace with。在这种情况下,A您可以通过键入1D468然后按 来执行此Alt-X操作。当您这样做时,Word 还会选中对话框中的框 - 这似乎是匹配成功的必要条件。也许与 Word 使用两个 Unicode 代理代码点(例如)Match prefix来表示这些字符有关。U+D835U+DC68

我看不出您可以在“查找/替换”中使用通配符来实现这一点(发现Fraktur 字符,是的,但插入正确的替换,就不多了)。

因此,另一种方法是使用代码。最简单的方法可能是进行 26 次替换,如下所示:

Sub replaceUCFrakturs()
' Replace uppercase Mathematical Fraktur characters with A,B,C Bold/Italic equivalents
Dim i as Long
Application.ScreenUpdating = False
On Error GoTo problem
With ActiveDocument.Content.Find
  For I = 1 to 26
    .ClearFormatting
    .Replacement.ClearFormatting
    .Text = ChrW(55349) & ChrW(56683 + i)
    .Replacement.Text = ChrW(55349) & ChrW(56423 + i)
    .Forward = True
    .Wrap = wdFindStop
    .Format = False
    .MatchPrefix = True
    .MatchCase = True
    .MatchWholeWord = False
    .MatchKashida = False
    .MatchDiacritics = False
    .MatchAlefHamza = False
    .MatchControl = False
    .MatchByte = False
    .MatchWildcards = False
    .MatchSoundsAlike = False
    .MatchAllWordForms = False
    .Execute Replace:=wdReplaceAll
  Next
End With

problem:
Application.ScreenUpdating = True
End Sub

另一种编程方法可能是一次性查找所有 Fraktur 字符,然后用正确的替换替换每个字符。代码有点复杂,我认为上面的代码可能更容易修改和使用。

相关内容