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

最佳答案

我认为您的问题出在Mathematica处理Notation[]quote的方式上:



可能根本不可能有一个名为Notation[]的软件包文件,但是有一个建议使用ParsedBoxWrapper,我现在没有时间来使用它。

有一个解决问题的办法,那就是将所有Notation[]分配放入Notebook的一个单元格中,并将其设置为初始化单元格(右键单击单元格边缘->初始化单元格)。顺便说一句,这也会创建一个仅包含该单元格内容的.m文件(但是,该文件将不适用于Needs[]<<)。之后,您可以折叠单元格,使其无法编辑,无法评估,并且请耐心等待!几乎像您想要的。

我应该注意,从分发的角度来看,这种混淆非常好,因为每次加载主文件时都会重新生成.m文件,因此您无需运送多个文件。唯一的缺点是笔记本电脑有点丑陋(即一个隐藏的单元格),并弹出一个对话框,询问您是否要在首次评估该笔记本电脑中的某些内容时评估该笔记本电脑的初始化单元格。

09-18 17:52