此为 Mathematica 4 文档,内容基于更早版本的 Wolfram 语言
查看最新文档(版本11.1)

2.8.17 高级专题:低级别的输出规则

表达式和单元间转化的低级函数

MakeBoxes 产生一个不计算其输入的单元

MakeExpression 解释单元但用 HoldComlete 去防止所得的表达式被计算

Mathematica 中有许多规则产生输出和解释输入. 在 StandardForm 中,这些规则是一致的,可允许输入和输出交换使用. 一般不需要修改 这些规则,因为 Mathematica 对没有特定含义的运算符已经定义了输出和输入规则. 所以当需要进行更一般地相加时,就可以使用运算符  Mathematica 已经对它设置了输入和输出规则.

使用运算符  的输出

Mathematica 理解输入中的

Out[4]//FullForm=

通过定义Format[expr] 可以改变表达式的输出形式,但要认识到你所定义的输出 形式在输入时无法保证被 Mathematica 正确地解释.需要时可以在Mathematica 中 定义用输入和输出的基本规则,这可以通过定义 MakeBoxesMakeExpression 来实现. 但一定要非常仔细地给出这类定义,否则 就会出现不一致的结果.

定义 gplus 目标如何按 StandardForm 输出

现在 gplus 用带下标的  输出

Mathematica 就无法解释这个输入

这里告诉 Mathematica 将带下标的  解释成 FullForm 输入的一个指定项

现在带下标的  被解释成 gplus

Out[8]//FullForm=

定义 MakeBoxes 时要知道这是对 Format 相当低级的一个定义. 一个重要的区别是 MakeBoxes 不计算它的变量,所以可以定义对表达式格式化的规则,而不涉及表达式 的计算.另外,Format 自动调用在执行它时所产生的规则,而 MakeBoxes 并不这样.这意味着定义了MakeBoxes 后,在需要对子表达式格式 化时必须重新明确调用 MakeBoxes.

Mathematica 输入中所进行的运算