1. 程式人生 > >word中mathtype公式變形問題解決方法

word中mathtype公式變形問題解決方法

很多人都用第三方外掛在 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

好了,我萌下期再見。

參考文獻