出力書式の定義
入力式の評価法をカスタマイズできるように,出力式の表示書式もカスタマイズできる.カーネルから式が出力される前に書式変更関数Format[expr]が適用される.この関数にカスタム書式をあらかじめ指定しておけば,式の表示様式を自由に変えれる.具体的には,指定したい書式をボックスオブジェクト等で構成し,書式変更関数Format[expr]に割り当てておく.関数が出力式に適用されると,ボックス形の書式に対応した数学記号等が使われ式がカスタム表示される.

の要素をグリッドボックスとして表示するよう書式変更関数を定義しておく.
数学の二項係数の形で

の項が表示される.
| Out[2]= |  |
内部表記を見てみると,

の項はそのままになっている.
Out[3]//FullForm= |
| |  |
| Format[expr1]:=expr2 | 第1式 を書式指定用第2式 に変換する |
| Format[expr1,form]:=expr2 | 特定の出力表記のときだけ書式変換を実行する |
出力式の書式変更
このように,書式変更関数Formatを個別に定義しておくことで,特定の式を別の形で表示できる.さらに,特定の要素に対応した書式変換法をプログラムに記述しておき,プログラム全体を書式変更関数に割り付けておけば,より複雑な変換が実現できる.
簡単なプログラムを使い

を書式変換するように関数を定義しておく.
書式変換されると

の各要素が引数に対応した長さの文字列の形で表示される.
| Out[5]= |  |
それでも,内部では,

の要素のままである.
| Out[6]= |  |
演算子の表示型と表示位置の指定

を前置形の演算子とし,表示上の演算記号を

とする.
| Out[7]= |  |
中置形の演算子

を使い表示する.
| Out[8]= |  |
演算子

は

より優先度が高いのでカッコでくくる必要がない.
| Out[9]= |  |
出力する式にいくつも演算子がある場合,どの演算子の引数をカッコでくくる必要があるのだろうか.また,どうやって見分けるのだろう.実は,演算子の評価優先度に応じてカッコが使われることになっている(「式の特殊な入力法」を参照のこと).デフォルトの優先順位が適当でない場合は,関数PrecedenceFormを使い演算子の優先度が変えられる.指定可能な優先度は1から1000のレベルで,高い値ほど高い優先度を意味し,また,カッコが不要になる方向である.


に優先度

を割り付ける.この優先度は低すぎるため,カッコが使われ要素がグループ化される.
| Out[10]= |  |
Format[expr]で式 expr に対応した変換書式を定義すると,現行の出力表記が標準的な出力表記のいずれかである限り変換書式は有効である.また,Format[expr, form]を使えば表記法を限定した上で式 expr の書式変換ができる.
TeX表記で出力させると,上の定義が有効になり,

の表示書式が変わる.
Out[12]//TeXForm= |
| |  |