6

Mathematica 提供了 Notation 包来定义自定义符号,它似乎工作得很好,直到我将带有自定义符号的笔记本保存为一个包并尝试使用它Needs["..."]来导入新的符号。正如Mathematica 邮件列表中所记录的,这在评估任何对Notation[]. 建议的解决方案是手动打开符号笔记本并将其评估到内核中,但这对于我计划分发的文件来说是一个痛苦。如果有人对此问题有更好的解决方法,我将非常感谢您的帮助!

4

1 回答 1

3

我认为您的问题在于 Mathematica 的处理方式Notation[]引用

在定义自己的符号时,使用符号模板至关重要。此限制的原因是粘贴到笔记本中的模板包含以正确方式嵌入的基本标签框。

可能根本不可能调用包文件Notation[],但有人建议使用ParsedBoxWrapper,我现在没有时间玩。

您的问题有一个笨拙的解决方案,即您将所有Notation[]分配放入 Notebook 的一个单元格并使其成为初始化单元格(右键单击单元格边缘 --> 初始化单元格)。顺便说一句,这也会创建一个仅包含该单元格内容的 .m 文件(但是,唉,这个文件不能与Needs[]or一起使用<<)。之后,您可以折叠单元格,使其无法编辑、无法评估,然后就可以了!几乎就像你想要的一样。

我应该注意到,从分发的角度来看,这个 kludge 相当不错,因为每次加载主文件时都会重新生成 .m 文件,因此您不需要发送多个文件。唯一的缺点是一个略显丑陋的笔记本(即一个隐藏的单元格),并且每当您第一次评估该笔记本中的某些内容时,都会弹出询问您是否要评估该笔记本的初始化单元格。

于 2010-02-26T11:42:09.863 回答