问题标签 [mathtype]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
3544 浏览

c# - C# 中的 MathType (OLE)

我正在尝试在 C# 应用程序中运行 MathType ...在表单中使用 OLE 来表示方程式/图像。

这就是我开始编写代码的方式。我得到了数学类型方程的 CLSID 对象。我创建一个新实例并运行一个动词来启动数学类型。在我尝试设置或获取我拥有的 IDataItem 属性的数据之前,这很有效。

代码:

该应用程序现在崩溃并出现以下异常:

System.Runtime.InteropServices.COMException 未处理 Message="Invalid FORMATETC 结构(来自 HRESULT 的异常:0x80040064 (DV_E_FORMATETC))" Source="System" ErrorCode=-2147221404 StackTrace:在 System.Runtime.InteropServices.ComTypes.IDataObject.GetData( FORMATETC& 格式,STGMEDIUM& 中等)

我不确定这意味着什么,但我认为这可能与 formatEtc.cfFormat = (Int16)dataFormatMathMLPres.Id; 该 ID 是 50000 并且不适合短(cfFormat 是短)有关,因此它会溢出到 -15000 之类的东西。

0 投票
1 回答
1937 浏览

python - 在 Mac 上将 MathType 对象转换为 MathML

我正在使用 Python 中的MathType SDK从 MathType 对象中获取 MathML。在 Windows 中,MTXFormEqn()可以将剪贴板上的 MathType OLE 对象替换为其转换后的等效对象。这似乎是标准方法。

我正在尝试将其移植到 OSX,但我无法弄清楚要传递哪些数据MTXFormEqn()。调用上面的代码简单返回mtOKMTXFormGetStatus()报告一般错误。

该图表表明源必须是“文件”。文档将“PICT”列为可能的输入格式。MTEquationOnClipboard()将 MathType 剪贴板对象报告为 WMF ( 2) 类型,但我可以PICT使用NSPasteboard.

有没有人成功地用来MTXFormEqn()在 Mac 上翻译 MathType 对象?我找不到任何使用 Windows 标准剪贴板到剪贴板方法的示例(在文档中或在线)。


这是工作 Windows 代码的精简版。为简洁起见,省略了错误检查和 const 定义。

0 投票
1 回答
327 浏览

formula - 如何在 MathType 中证明此符号的合理性

我在下面附加了一个 MathType 公式。但我无法证明 $+\infty$ 符号的位置。我希望它出现在 "${$" 之后并与第二个术语的左侧对齐。

谢谢您的帮助。

方程

乳胶代码:

${{R} {1}}\left( {{x} {pi}},{{G} {q}},{{x} {qj}} \right)=\,\left{ \begin{矩阵} +\infty & p=q \ \underset{l=1}{\overset{d}{\mathop \sum }}\,({{x} {pi}}\left[ l \right]-{ {x} {qj}}\left[ l \right])\left( 2\left( {{x} {qj}}\left[ l \right]-{{{\bar{x}}} {q }}\left[ l \right] \right)+({{x} {pi}}\left[ l \right]-{{x} {qj}}\left[ l \right])(\left| {{G} {q}} \right|-1)/|{{G} {q}}| \right) & p\ne q \ \end{matrix} \right.$

0 投票
1 回答
2395 浏览

html - 使用 MathPage MathML 导出 MathType Word 文档

如果有数学方程式,我需要将 ms-word 2003 文档转换为包含 MathML 的 HTML。我目前找到的快速解决方案是使用 MathType 插件使用 MathML 的“发布到 MathPage”功能将整个文档导出为 HTML。

但是,它无法正确进行转换。文档中的大部分方程仍然是图像格式,而不是 MathML。奇怪的是,它将逗号转换为 MathML,而不是方程式。

原word文档: https ://dl.dropbox.com/u/4625393/test12.doc

转换后的html源码关键部分: https ://gist.github.com/katat/5091021

这是 MathType 的错误吗?

0 投票
0 回答
3149 浏览

c# - 从 OLE 二进制字符串中解析 MathType MTEF 数据

需要将 MS-WORD 2003 或更低版本中的 MathType 方程转换为 MathML,以便在 Web 上很好地呈现。MathType 的内置函数“Publish to MathPage”可以很好地完成这项工作,但我想将方程转换过程集成到我的 C# 应用程序中。因为我找不到任何关于 MathPage 导出接口是由 MathType SDK 提供的 API 引用,所以我需要自己想办法进行单独的方程转换。

当前的程序是将 MS-WORD 2003 或以下文档转换为 Open XML 格式(docx)。docx转换后可以看到打开的xml中保存了MathType嵌入的ole对象二进制字符串,也就是docx。然后下一步是从嵌入对象二进制字符串中解码MTEF数据,所以我尝试通过参考MathType MTEF标头的官方文档来提取MTEF。

代表 MathType 创建的嵌入对象的base64 二进制字符串是从MS-WORD 测试 DOCX 文件中提取的。

MTEF 标头定义:

MTEF 数据保存为对象的本机数据格式。每当将方程对象写入 OLE“流”时,都会写入一个 28 字节的标头,然后是 MTEF 数据。此标头的 C 结构如下:

cf 成员是调用 Windows API 函数 RegisterClipboardFormat("MathType EF") 的返回值。

然后我尝试将其转换为 C# 版本:

准备好标头结构后,以下代码尝试从嵌入式对象二进制字符串中填充标头结构中的信息。

但是,在标头结构中填充的数据不正确,这让我认为这不是从 DOCX 文件中的嵌入对象二进制字符串中解析 MTEF 数据的正确方法。

我还查看了 MathType SDK 下载中的示例 .NET 代码,发现 IDataObject 用于包含 MathType 信息和转换程序。所以另一种方法是使用BinaryFormatter代码来查看它是否可以将二进制字符串反序列化为 IDataObject 类型的对象BinaryFormatter.Deserialize(stream)。但是也不行,提示异常Binary stream '0' does not contain a valid BinaryHeader

我尝试用来解析 MTEF 数据的方法有什么问题吗?

0 投票
1 回答
1269 浏览

ms-word - 将大量带有数学类型方程和矢量图的 .doc 文件导出到带有嵌入式乳胶和 svg 的 html

我需要将数千个 .doc 文件转换为 HTML。这些文档包含 MathType 方程、Word 绘图(矢量图),而且绘图本身包含更多的方程对象。
通过 Microsoft.Office.Interop.Word,我设法将 .docs 保存为过滤的 HTML 和“未过滤的”HTML(最后一种模式具有生成多个 .wmz 文件的优势)。遗憾的是,MathType SDK 无法转换过程中生成的 wmz 文件中的每一个方程(SDK 附带的 wmf 示例被转换为 LaTeX 就好了..)。 加起来:

  • 我需要知道哪些 wmf 文件是 MathType 方程,哪些是绘图;
  • 我需要能够将作为 MathType 方程的 wmf 文件转换为 LaTeX。
  • 我需要一些非常好的 wmf 到 svg 转换器来转换图纸,因为结果常常不符合我们的喜好;
  • 我需要访问绘图中包含的数学类型方程。

所有这些都必须自动化,因为有数千个文件。
有这方面经验的人吗?

0 投票
1 回答
518 浏览

mathtype - 运行 MathType SDK Dotnet 示例时出现 DLLNotFoundException

我已经为 Windows 安装了 MathType 6.9,我正在尝试运行 Dotnet 示例 MTSDKTestApplication,但由于“MT6”Dll 未找到异常而失败。基本上这里的应用程序编译成功,但在运行时单击 MTApiConnect 按钮我得到以下异常

“无法加载 DLL 'MT6.dll':找不到指定的模块。(来自 HRESULT 的异常:0x8007007E)”

我还可以将 MathType 编辑器与 Dotnet 桌面应用程序 (WPF) 或 Web (ASP.Net) 集成以添加、编辑数学方程式。我的要求是当用户尝试输入数学方程时,我想显示这个数学类型编辑器,并且在编辑任何方程时,方程应该导出到数学类型编辑器。

谢谢,斯里坎特

0 投票
2 回答
4036 浏览

c# - 将 Word 中的 MathType 方程转换为 MathML

我有一些数学类型的方程式,我想将其转换为 mathml。我曾尝试使用 MathType SDK,但在尝试调用非托管 dll 时它一直给我一个异常。我还向支持联系人发送了电子邮件,但没有收到任何回复。我知道 word 存储了 mathtype 方程的 ole.bin 和 mwf 文件,所以我想知道是否有人知道如何解析这些文件以获得 mathml 信息。

0 投票
1 回答
527 浏览

c# - 将 MTEF 转换为 MathML

我在 WEB C# 应用程序中使用 SDK DSSCI ( MathType ) 进行MTEF -> MML公式转换。

DLL函数可以很好地执行转换,使用字符串输入(代码MTEF)和字符串输出(代码MathML),但我看到MathType EXE 曾经在我的应用程序中运行和关闭。

如果未安装MathType,则该功能不起作用。是否可以仅通过部署的SDK DLL(MTSDKDN.dll和)获得转换,而无需在WEB服务器上MT6.dll安装MathType ?

0 投票
1 回答
601 浏览

java - 有没有可以直接执行 MathType 公式的编程语言?

让我们举一个Java的例子。富文本IDE暂时没有找到,纯文本IDE是主流。

我在 IDE 中使用来自 github 的代码阅读了很多次 Latex 公式,如果没有任何类似 TeX 的软件的帮助,很难理解这些符号。

我只是在设想这样一个IDE的诞生,它可以集成Word、OneNote等,像class这样的代码可以高亮,像图片一样复制粘贴,像plain/rich html一样编辑,多媒体对象可以作为解释,就像matlab helper 不是普通的javadoc,可以一次比较一个文件的多列中的2个或多个类,是Java类层次结构的一个很好的视图,就像OneNote可以做的那样,这样我就可以摆脱代码只能在纯文本编辑器中写入一列的限制。坦率地说,OneNote 不是 IDE,而是真正的富文本 IDE 原型,它包含了编写/订购诸如代码之类的东西但运行代码的所有直观性,但是,这些功能就像专利一样,只能在 OneNote 中看到, 并且在任何著名或较少的编程环境中都找不到。我不禁回想起,从历史上看,铁轨宽度的发展限制了想象力的大小,每次使用 OneNote 时都会在我的脑海中重复。

更重要的是,虽然很多 IDE 都包含高亮语法,但它仍然是纯文本代码,只需删除解释区域就可以非常快速地从富文本代码生成。

Mathtype-like 公式比纯文本 IDE 中的 plan-text 公式要好得多,我可以通过将代码和公式粘贴在一起在 OneNote 中感受到这一点,尤其是当它是分数或生根公式时。可惜,公式不能直接运行。实际上,它们可以从相同的格式生成,即类似 xml 的富文本。

我刚刚在 Unicode 网站的一个 PDF 文件中发现了一段有趣的这样的代码,它更能捕捉到程序函数的真实功能:

由于布局原因,最终版本在图像中。

上面两个的长度明显比第三个长。

如果您看不到图片中的第 3 个,请在此处访问原始 Pdf,从第 33 页到第 35 页。

一个小问题是,这样的纯文本编程习惯,在这样的IDE出现之后,还应该被认为是好的习惯吗?高级编程语言坚持这种偏见,即满足于纯文本编码,而助手是多媒体。变体/常量都是类似 ASCII 的,而 Unicode 集只是部分支持。而且它在类似 Mathtype 的公式中非常适合在大脑中阅读和使用,而在 IDE 中不可能像我们在教科书中读到的那样下标索引,而像 Java 这样的编程语言仍然需要括号。

最后一个问题是,是否存在这样一种可以运行类似 Mathtype 的公式或类似 Math 的代码的 IDE 或编程语言?

PS:我知道Mathtype公式中的执行顺序在循环存在时会导致效率低下,但是,这不是问题,作为程序员,我可以手动将这些多项式分成片段并添加到循环中,但是机器可以方便他们也是。

PS2:Mathematica 非常适合科学界的数学研究人员,尽管它的价格很高。我尝试下载并使用它,我真的被它简洁的界面和符号系统所吸引,例如可以用更少的行数来实现许多游戏,并且助手非常人性化和智能,就像输入法一样!并且助手还能够运行代码,这对于这一代和下一代学习编程来说是一个明确的改进,也许不仅仅是 Mathematica 语言。

首先,Mathematica 中的“笔记本”概念是我目前能找到的终极代码编辑器,它可以在表示算法中使用类似 Mathtype 的组件,将这样的概念应用到其他编程语言或其普通语言中非常有价值文本 IDE,因为 Mathematica 有其自身的限制,例如缺乏其他语言中的某些现有功能,这也很重要。

不禁回想起上个世纪在windows或linux中进行命令行编程的传统方式,和现在的纯文本IDE编程没有太大区别。顺便说一句,Mathematica 工作台是 Eclipse IDE 的一个指定版本,它只是不能以 Mathematica“笔记本”的方式进行编码,现在真可惜。

阅读别人的代码比写代码要困难得多,尤其是算法,如果没有办法在富文本 IDE 中只显示类似 Mathtype 的符号,我写的代码将来对我和其他人来说都很难阅读就像 Mathematica 可以做的那样,运行 Symbols 是另一回事。

其次,即使在“Notebook”中,组件也不能以 OneNote 的方式自由排列,宽度为无穷大意味着 OneNote 中真正的无穷大,您可以将任何内容粘贴到远离第一列的右侧,填充任何内容,例如富文本在 OneNote 中,可以使用水平滚动条查看。此功能的明显好处是可以无限比较来自同一父类或算法变体的 2 个或多个代码,我想它对版本控制也很有用,就像在 BeyondCompare 中连续滚动水平比较 10 个文件而没有垂直滚动条除了最后一个之外,每个都像一个 1*N 的类矩阵,而不是一列。

也许几年后,我提到的那些功能也可以在 Mathematica 中实现。

我听说过“源代码就是文档”这样的老话,这根本不是现实。