Mathematica 9 is now available

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 输入中所进行的运算



Any questions about topics on this page? Click here to get an individual response.Buy NowMore Information
THIS IS DOCUMENTATION FOR AN OBSOLETE PRODUCT.
SEE THE DOCUMENTATION CENTER FOR THE LATEST INFORMATION.