`
lovecontry
  • 浏览: 1036305 次
文章分类
社区版块
存档分类
最新评论

How can extract MathML from GIF image generated by MathType

 
阅读更多

Last two days,I encountereda technical problem. When I extracted MathML from GIF image generated by MathType, there were always junk characters in the MathML text.

I had discussed this problem with my colleague, he told me to replace the MathML text with image.But I thought it was not a perfect solution. Then I tried to get help on the Web. As usual, I searched something in Google. I found an answer in similar question on stackOverFlow :"convert MathML to MathType in MS Word". Fortunately, Bob Mathew who is the developer for MathType answered the question.

Right away, I submitted a question as follows:

How can I convert MathType equation into MathML format?

I want to convert MathType equation saved as GIF format for MathML. Firstly, I opened these GIF files and saved them within MathType 6.7. As a result, MathML text is inserted into the end of GIF files. However, when I extracted MathML text from these GIF files using Perl script, I found some garbled characters in the MathML text as following text:

<mn>xxx</mn>

In the above line, a garbled character  is inserted before 'mn' label. Is this MathType 's BUG? How can I work around this problem? I have uploaded my test GIF files. URL is:http://ubuntuone.com/p/1352/


Then I @ Bob in StackOverFlow. About an hour later,Afwings answered my question and asked me to upload the full block of MathML. Maybe Afwings is nickname for Bob Mathew(Afwings is Bob indeed! 11/07/08). Then I uploaded related MathML text and GIF image. Eventually, Afwings gave me the perfect answer, as below:


MathML text is embedded into a GIF file as an Application Extension Record, which consists of a 14-byte header (Application Extension Descriptor), followed by the MTEF data. The header contains:

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

The data follows this header and is written as a series of blocks each containing 255 bytes or less. Each block starts with a single byte count followed by the data. The end is marked as a block with length 0.

The header is unique enough that the easiest way to extract the data might be to scan the file for the 14-byte header, then expect the MathML data blocks to follow. Properly decoding the GIF records isn't that hard either, but obviously requires you read the GIF specification.


It's a wonderful experience for me. The process for the problem-solvingdemonstratesthe power ofsocial networking which link me to the suitable solver for the problem, and cloud computing through which I uploaded related information into cloud. Meanwhile, it showsthe importance of English that make me have the ability to find answer inabroader space across the wall.


分享到:
评论

相关推荐

    机械设计家用手摇面条机sw18可编辑非常好的设计图纸100%好用.zip

    机械设计家用手摇面条机sw18可编辑非常好的设计图纸100%好用.zip

    机械设计托盘库推车sw12可编辑非常好的设计图纸100%好用.zip

    机械设计托盘库推车sw12可编辑非常好的设计图纸100%好用.zip

    node-v12.18.4-linux-arm64.tar.xz

    Node.js,简称Node,是一个开源且跨平台的JavaScript运行时环境,它允许在浏览器外运行JavaScript代码。Node.js于2009年由Ryan Dahl创立,旨在创建高性能的Web服务器和网络应用程序。它基于Google Chrome的V8 JavaScript引擎,可以在Windows、Linux、Unix、Mac OS X等操作系统上运行。 Node.js的特点之一是事件驱动和非阻塞I/O模型,这使得它非常适合处理大量并发连接,从而在构建实时应用程序如在线游戏、聊天应用以及实时通讯服务时表现卓越。此外,Node.js使用了模块化的架构,通过npm(Node package manager,Node包管理器),社区成员可以共享和复用代码,极大地促进了Node.js生态系统的发展和扩张。 Node.js不仅用于服务器端开发。随着技术的发展,它也被用于构建工具链、开发桌面应用程序、物联网设备等。Node.js能够处理文件系统、操作数据库、处理网络请求等,因此,开发者可以用JavaScript编写全栈应用程序,这一点大大提高了开发效率和便捷性。 在实践中,许多大型企业和组织已经采用Node.js作为其Web应用程序的开发平台,如Netflix、PayPal和Walmart等。它们利用Node.js提高了应用性能,简化了开发流程,并且能更快地响应市场需求。

    YOLOV5 分类实战:7种小麦叶片病害分类

    YOLOV5 实战对小麦叶片病害检测分类数据集,包含代码、数据集、训练好的权重参数,经测试,代码可以直接使用。 【yolov5】项目总大小:300MB 训练了10个epoch,top1准确度分别达到了0.93+。这里仅仅训练了10个epoch,网络还没收敛,加大轮次可以获取更高的网络性能 【如何训练】摆放好datasets数据,即可训练 更多yolov5改进介绍、或者如何训练,请参考: https://blog.csdn.net/qq_44886601/category_12605353.html

    单片机课程实验-秒表实现

    1.了解LED数码管的工作原理,为秒表时钟模块的实现打下基础。 LED数码管是一种常用的数字显示器件,通过控制每个LED的亮灭来显示数字。在秒表时钟模块中,我们需要利用LED数码管的这一特性,通过单片机控制数码管的显示,从而实现时钟的功能。因此,了解LED数码管的工作原理对于实现秒表时钟模块至关重要。 2.掌握51单片机与LED数码管的接口技术,是实现秒表时钟模块的关键。 51单片机是一种常用的微控制器,可以通过接口与外部设备进行通信。在秒表时钟模块中,我们需要通过单片机与LED数码管之间的接口,控制数码管的显示。因此,掌握51单片机与LED数码管的接口技术是实现秒表时钟模块的关键。在实际操作中,我们需要根据接口协议和数据传输方式,编写相应的程序来控制数码管的显示。 3.合理利用定时器/计数器,是实现秒表时钟模块的效率保障。 在秒表时钟模块中,我们需要实现计时功能,这需要使用到定时器/计数器。定时器/计数器可以用来产生计时脉冲,从而控制秒表的计时。通过合理利用定时器/计数器,可以提高秒表时钟模块的计时精度和效率。在实际操作中,我们需要根据具体的应用场景和需求,选择合适的定时器/计数器参

    机械设计2T双轴变位机L型sw12非常好的设计图纸100%好用.zip

    机械设计2T双轴变位机L型sw12非常好的设计图纸100%好用.zip

    node-v10.16.3-sunos-x64.tar.xz

    Node.js,简称Node,是一个开源且跨平台的JavaScript运行时环境,它允许在浏览器外运行JavaScript代码。Node.js于2009年由Ryan Dahl创立,旨在创建高性能的Web服务器和网络应用程序。它基于Google Chrome的V8 JavaScript引擎,可以在Windows、Linux、Unix、Mac OS X等操作系统上运行。 Node.js的特点之一是事件驱动和非阻塞I/O模型,这使得它非常适合处理大量并发连接,从而在构建实时应用程序如在线游戏、聊天应用以及实时通讯服务时表现卓越。此外,Node.js使用了模块化的架构,通过npm(Node package manager,Node包管理器),社区成员可以共享和复用代码,极大地促进了Node.js生态系统的发展和扩张。 Node.js不仅用于服务器端开发。随着技术的发展,它也被用于构建工具链、开发桌面应用程序、物联网设备等。Node.js能够处理文件系统、操作数据库、处理网络请求等,因此,开发者可以用JavaScript编写全栈应用程序,这一点大大提高了开发效率和便捷性。 在实践中,许多大型企业和组织已经采用Node.js作为其Web应用程序的开发平台,如Netflix、PayPal和Walmart等。它们利用Node.js提高了应用性能,简化了开发流程,并且能更快地响应市场需求。

    STM32F4通过串口屏设置ADF4351输出信号频率,HAL库开发

    本项目基于HAL库开发,使用STM32F407作为主控芯片,串口通信过程使用了特殊的帧头帧尾,实现了通过串口触摸屏设置ADF4351输出信号频率。项目包含了陶晶弛串口屏的界面设计。

    金融产品设计报告.docx

    金融产品设计报告.docx

    C++ 实验三 基本图形生成算法

    C++ 实验三 基本图形生成算法

    6金融需求理论.docx

    6金融需求理论.docx

    node-v10.22.1-sunos-x64.tar.xz

    Node.js,简称Node,是一个开源且跨平台的JavaScript运行时环境,它允许在浏览器外运行JavaScript代码。Node.js于2009年由Ryan Dahl创立,旨在创建高性能的Web服务器和网络应用程序。它基于Google Chrome的V8 JavaScript引擎,可以在Windows、Linux、Unix、Mac OS X等操作系统上运行。 Node.js的特点之一是事件驱动和非阻塞I/O模型,这使得它非常适合处理大量并发连接,从而在构建实时应用程序如在线游戏、聊天应用以及实时通讯服务时表现卓越。此外,Node.js使用了模块化的架构,通过npm(Node package manager,Node包管理器),社区成员可以共享和复用代码,极大地促进了Node.js生态系统的发展和扩张。 Node.js不仅用于服务器端开发。随着技术的发展,它也被用于构建工具链、开发桌面应用程序、物联网设备等。Node.js能够处理文件系统、操作数据库、处理网络请求等,因此,开发者可以用JavaScript编写全栈应用程序,这一点大大提高了开发效率和便捷性。 在实践中,许多大型企业和组织已经采用Node.js作为其Web应用程序的开发平台,如Netflix、PayPal和Walmart等。它们利用Node.js提高了应用性能,简化了开发流程,并且能更快地响应市场需求。

    数据结构实验代码行编辑.rar

    数据结构实验代码

    新版广州社区智慧养老解决方案ppt.docx

    新版广州社区智慧养老解决方案ppt

    Python实现Python解释器 优秀课程作业

    python实现python解释器 1.该python解释器是一个模拟堆栈机器的虚拟机 2.基本指令:LOAD_VALUE,将数据压入栈中,STORE_NAME,将栈顶内容存入变量,LOAD_NAME,将变量的内容压入栈中 dis是一个字节码反汇编器 3.LOAD_CONST相当于LOAD_VALUE,STORE_FAST相当于STORE_NAME 4.帧:帧包含了一段代码运行所需要的信息与上下文环境,帧在代码执行时被动态地创建与销毁,每一个帧的创建对应一次函数调用,所以每一个帧都有一个code object与其关联,同时一个code object可以拥有多个帧,因为一个函数可以递归调用自己多次 5.调用栈:每当你在当前函数内调用一次函数就在当前调用栈上压入所调用的函数的帧,在所调用函数返回时再将该帧弹出 数据栈:执行字节码操作时使用的栈 块栈:用于特定的控制流,比如循环与异常处理;每一个帧都拥有自己的数据栈与块栈

    index.vue

    index.vue

    AIGC-Stable Diffusion图片精准高效生成,AI能实现,并能真正落地的电商应用案例-课程网盘链接提取码下载

    课程大纲 真实场景专题(理论+实操) 1)产品AI创意图案例 2)产品图生成真实场景案例 3)AI产品图设计流程思路分享 二、服装模特专题(实操) 1)人台图生成AI模特案例 2)服装图换脸换背景案例 3)平面衣服上身A1模特案例 4)如何精准控制人物姿势 家居场景专题(实操)三、 1)家居产品生成AI场景 2)精准控制更换家具材质 3)家居装修风格快速切换

    App商业化的平衡之道:左手营收,右手用户,如何找到平衡点?.docx

    App商业化的平衡之道:左手营收,右手用户,如何找到平衡点?.docx

    设计沉思录 二手车工具产品设计.docx

    设计沉思录 二手车工具产品设计.docx

    文件预览kkFileView安装包下载【win+Linux】4.0版本

    文件预览kkFileView安装包下载【win+Linux】4.0版本

Global site tag (gtag.js) - Google Analytics