我翻译了一篇德语文本,其中包含许多带有 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 A
Unicode 代码点,即 Unicode Plane 1 字符。如果您对其应用粗体,它将被( )U+1D434
替换。MATHEMATICAL BOLD ITALIC CAPITAL A
U+1D468
在我看来,Word 的“查找/替换”对话框确实应该为您完成所有这些工作,但是正如您所见,它并没有这样做,所以问题是如何让它做到这一点。
如果您只需要进行少量替换(例如 A、B、C),您可以继续使用“查找/替换”对话框,但在框中插入正确的数学粗体斜体字符Replace with
。在这种情况下,A
您可以通过键入1D468
然后按 来执行此Alt-X
操作。当您这样做时,Word 还会选中对话框中的框 - 这似乎是匹配成功的必要条件。也许与 Word 使用两个 Unicode 代理代码点(例如)Match prefix
来表示这些字符有关。U+D835
U+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 字符,然后用正确的替换替换每个字符。代码有点复杂,我认为上面的代码可能更容易修改和使用。