2011-07-06 166 views
1

我想將保存爲GIF格式的MathType方程轉換爲MathML。首先,我打開這些GIF文件並將它們保存在MathType 6.7中。結果,MathML文本被插入到GIF文件的末尾。然而,當我使用Perl腳本這些GIF文件中提取文本MATHML,我發現在MATHML一些文字亂碼字符爲以下文字:如何將MathType公式轉換爲MathML格式?

<mn > XXX < /明尼蘇達州>

在上面的行中,在'mn'標籤之前插入了一個亂碼字符。這是MathType的BUG嗎?我該如何解決這個問題?我已經上傳了我的測試GIF文件。網址是:http://ubuntuone.com/p/1352/

更新: 我試圖在這裏粘貼MathML的整個數據塊,但我發現MATHML文本的語法格式是一團糟。所以我在GitHub上粘貼了MathML:https://gist.github.com/1068723

MathML文本的第七行中存在一個亂碼字符:「&#x00A0;&#x00A0;?#x00A0;」。

原來的GIF文件不包含MATHML文本:http://ubuntuone.com/p/13Ba/

Perl腳本,從MathType的生成GIF圖像中提取MATHML:https://gist.github.com/1068749

感謝, thinkhy

+0

@Bob Mathews:我已經閱讀了關於MathType的答案。你能否也請回答我的問題?謝謝。 – thinkhy

+0

GIF文件與GIF圖像一樣嗎? –

+0

@Jason S這些GIF圖像是由MathType 6.7生成的,它包含帶MathType方程格式的額外數據。 – thinkhy

回答

2

感謝thinkhy。這可能是你錯誤地提取數據(我們還沒有看過你的腳本)。只有一個GIF具有MathML - 文件名稱從106R開始的那個。在那一箇中​​,如果你只是從第一個字節中取出所有像MathML一樣的字節直到結束,那麼你會週期性地得到奇數字節,除了最後一個以外,大部分是255。 (然而,這看起來不像是你看到的垃圾角色。)255的原因是MathML分佈在多條評​​論記錄上,每條評論記錄都以記錄中的字節數開始。從MathType的SDK(免費下載;下面的鏈接):


GIF圖像文件

MATHML文本嵌入成一GIF文件作爲應用程序擴展記錄,它由一個14字節的首部的(應用擴展描述符),然後是MTEF數據。標題包含:

Byte Introducer = 0x21; 
Byte ExtensionLabel = 0xFF; 
Byte BlockSize = 0x0B; 
Byte ApplicationId[8] = "MathType"; 
Byte AuthenticationCode[3] = "003"; 

數據在此標題後面,並寫入一系列塊,每個塊包含255個字節或更少。每個塊從單字節計數開始,然後是數據。結尾被標記爲長度爲0的塊。

頭部足夠獨特,最簡單的數據提取方法可能是掃描14字節頭部的文件,然後期望MathML數據塊遵循。正確解碼GIF記錄並不困難,但顯然需要閱讀GIF規範。


您可能已經使用SDK,但你沒有說你是否與否,所以這裏的鏈接:http://www.dessci.com/en/reference/sdk/

+0

Thax爲您的答覆。我剛剛更新了我的帖子。 – thinkhy

+0

非常感謝。現在,我成功提取MathML。正如你所說,我已經使用MathType SDK。但我認爲使用Perl比C/C++更容易。所以我已經更新了我的Perl腳本進行提取:https://gist.github.com/1069127 – thinkhy

+0

這很瞭解;感謝更新。另外,你是否介意在dessci dot com的bobm發郵件給我?這是關於您的腳本的第一個版本。 – afwings