word中mathtype公式变形问题解决方法

Word 里第三方插件生成的公式变形了咋整?

很多人都用第三方插件在 Word 文档中添加、编辑公式,然而,这些人几乎都会遇到同一个问题:公式为什么自己变形了?这种变形还是随机的,首先是时间上的随机,一开始好好的,写着写着,过几天再一看就不对劲了;其次是分布上的随机,一个文档中不是所有的公式都会变形,只有部分公式会变形;最后是方式上的随机,每个公式形变方式都不同,有被拉长的,也有被压扁的。

至于原因,我感觉可能是 Word 自己的原因,因为很多公式的插件都会出现这个问题。文章 [1] 的作者也持同样的观点。

Our investigation reveals there's nothing you or MathType are doing to cause this; it's being caused by Word. This bug affects not only MathType equations in Word, but other embedded objects, such as charts and pictures. Below, we'll describe the process to fix the equation display ratio, and to minimize the possibility of it happening in the future.
文章 [1] 的作者同时也给出了针对 MathType 的解决方案,就是利用 MathType 提供的“公式转换”功能,具体的操作见文章 [1],本文不做详述。本文给出一个相对通用的解决方案,可以自动还原形变的公式,而且何种公式编辑器都适用。

首先放出一张图,请强迫症暂时回避。

看出什么问题没?倒数第二行的 \infty 略微变形了!最后一段第二行的 f 也变形了。什么?你说我胡说?

你萌自己看,虽然是微小的形变,但是对于某些人来说却犹如风油精一样辣眼睛,必须除之而后快!好了,我们还是直接上 vba 代码吧。代码很好理解:遍历所有的域,如果域的代码是 EMBED Equation.Ribbit 的话,就把这个域对应的图片还原成原始尺寸。

Sub ResizeEquations()
    For Each Field In ActiveDocument.Fields
        If Trim(Field.Code) = "EMBED Equation.Ribbit" Then
            With Field.InlineShape
                .LockAspectRatio = msoFalse
                .ScaleWidth = 100
                .ScaleHeight = 100
            End With
        End If
    Next Field
End Sub

运行代码,再来看看处理后的文档,对比之前的图,是不是云泥之别?

你说没区别?出门左转关注 眼科学,再见。

注意代码中的第三行,为了防止误伤,我这里添加了条件判断,只会处理域代码是 EMBED Equation.Ribbit 的图片。这个代码是插件 Aurora 的域代码,MathType 的代码不同,如果你是 MathType 的用户我建议你<s>直接使用“公式转换”功能</s>先按 Alt +F9 查看 MathType 公式的域代码,再将代码中的第三行改为:

If Trim(Field.Code) = "EMBED Equation.DSMT4" Then

好了,我萌下期再见。

参考文献

[1]. MathType: Equations are randomly re-sized in Word

猜你喜欢

转载自blog.csdn.net/xkl7111/article/details/80076490