出力書式の定義

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

の要素をグリッドボックスとして表示するよう書式変更関数を定義しておく.
In[1]:=
Click for copyable input
数学の二項係数の形での項が表示される.
In[2]:=
Click for copyable input
Out[2]=
内部表記を見てみると,の項はそのままになっている.
In[3]:=
Click for copyable input
Out[3]//FullForm=
Format[expr1]:=expr2第1式 を書式指定用第2式 に変換する
Format[expr1,form]:=expr2特定の出力表記のときだけ書式変換を実行する

出力式の書式変更

このように,書式変更関数Formatを個別に定義しておくことで,特定の式を別の形で表示できる.さらに,特定の要素に対応した書式変換法をプログラムに記述しておき,プログラム全体を書式変更関数に割り付けておけば,より複雑な変換が実現できる.

簡単なプログラムを使いを書式変換するように関数を定義しておく.
In[4]:=
Click for copyable input
書式変換されるとの各要素が引数に対応した長さの文字列の形で表示される.
In[5]:=
Click for copyable input
Out[5]=
それでも,内部では,の要素のままである.
In[6]:=
Click for copyable input
Out[6]=
Prefix[f[x],h]接頭辞(前置形)
Postfix[f[x],h]接尾辞(後置形)
Infix[f[x,y,],h]接合辞(中置形)
Prefix[f[x]]標準の接頭辞(前置形)
Postfix[f[x]]標準の接尾辞(後置形)
Infix[f[x,y,]]標準の接合辞(中置形)
PrecedenceForm[expr,n]優先度 n の要素をカッコでくくる

演算子の表示型と表示位置の指定

を前置形の演算子とし,表示上の演算記号をとする.
In[7]:=
Click for copyable input
Out[7]=
中置形の演算子を使い表示する.
In[8]:=
Click for copyable input
Out[8]=
演算子より優先度が高いのでカッコでくくる必要がない.
In[9]:=
Click for copyable input
Out[9]=

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

に優先度を割り付ける.この優先度は低すぎるため,カッコが使われ要素がグループ化される.
In[10]:=
Click for copyable input
Out[10]=

Format[expr]で式 expr に対応した変換書式を定義すると,現行の出力表記が標準的な出力表記のいずれかである限り変換書式は有効である.また,Format[expr,form]を使えば表記法を限定した上で式 expr の書式変換ができる.

TeXFormの表記が使われているときに限り,に書式変換を施す.
In[11]:=
Click for copyable input
TeX表記で出力させると,上の定義が有効になり,の表示書式が変わる.