【问题标题】:Ways to work around Mathematica Notation bug?解决 Mathematica Notation 错误的方法?
【发布时间】:2010-02-25 18:20:55
【问题描述】:

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

【问题讨论】:

  • 您能否详细说明一个示例 .m 文件以及您看到的错误?
  • 绝对。该软件包可在我的个人网站 (cgranade.com/academics/mathematica-packages) 上找到。试图通过Needs[] 包含这个包会导致: Syntax::sntx: Invalid syntax in or before "Notation[NotationTemplateTag[SubscriptBox[[Sigma], TemplateBox[{n_}, NotationPatternTag]]] > T​​emplateBox[{ n_}, NotationPatternTag], ]}]]]; > ^

标签: wolfram-mathematica notation


【解决方案1】:

我认为您的问题在于 Mathematica 对待 Notation[]quote 的方式:

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

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

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

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

【讨论】:

  • 这是一个很好的解决方法,除此之外我必须确保我记得让隐藏的单元格保持最新。谢谢!
猜你喜欢
  • 1970-01-01
  • 2012-01-04
  • 1970-01-01
  • 2012-01-11
  • 2011-01-19
  • 2014-03-22
  • 2012-01-18
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多