Mathematica提供Notation包来定义自定义表示法,它似乎工作得很好,直到我将自定义表示法作为包保存,并尝试使用Needs["..."]
导入新表示法。正如Mathematica mailing list所述,在评估对Notation[]
的任何调用时,这会导致奇怪的语法错误。建议的解决方案是手动打开表示笔记本并将其评估到内核中,但这对我计划分发的文件来说很痛苦。如果有人有更好的解决方法,我真的很感激帮助!
答案 0 :(得分:3)
我认为您的问题在于Mathematica对待Notation[]
,quote的方式:
在定义自己的符号时 使用它至关重要 符号模板。的原因 这个限制就是模板 粘贴到笔记本中 嵌入的必备标签盒 正确的方法。
可能根本没有包文件调用Notation[]
,但有人建议使用ParsedBoxWrapper,我现在没有时间玩这个。
您的问题有一个kludgy解决方案,即您将所有Notation[]
分配放入Notebook的一个单元格中并使其成为初始化单元格(右键单击单元格边缘 - > Initalization Cell )。顺便提一下,这也会创建一个只包含该单元格内容的.m文件(但是这个文件将无法与Needs[]
或<<
一起使用)。之后,你可以折叠单元格,使其无法编辑,无价值,嘿嘿!几乎就像你想要的那样。
我应该注意,从分发的角度来看,这个kludge相当不错,因为每次加载主文件时都会重新生成.m文件,因此您不需要发送多个文件。唯一的缺点是一个稍微丑陋的笔记本(即一个隐藏的单元格),并弹出一个问题,询问您是否要在第一次评估该笔记本中的内容时评估笔记本的初始化单元格。