ボックス形テキスト表記

テキスト表記の式は,究極的にすべてボックスの集合として表せる.ボックスとは二次元的に相対配置されるオブジェクトを指す.

の式を表すボックスである.
In[1]:=
Click for copyable input
Out[1]=
DisplayFormを作用させ,ボックスがどう表示されるか見てみる.
In[2]:=
Click for copyable input
Out[2]//DisplayForm=
DisplayForm[boxes]ボックス boxes を数学表記で表示する

ボックスの表示

3つの文字を1行に並べる.
In[3]:=
Click for copyable input
Out[3]//DisplayForm=
2番目の文字を下付き文字として表示する.
In[4]:=
Click for copyable input
Out[4]//DisplayForm=
下付き文字ボックスを2つ横に並べる.
In[5]:=
Click for copyable input
Out[5]//DisplayForm=
"text"文字列
RowBox[{a,b,}]ボックスの行あるいは文字列
GridBox[{{a1,b1,},{a2,b2,},}]
ボックスの配列
SubscriptBox[a,b]下付き文字ボックス
SuperscriptBox[a,b]上付き文字ボックス
SubsuperscriptBox[a,b,c]上付き下付き文字ボックス
UnderscriptBox[a,b]真下付き文字ボックス
OverscriptBox[a,b]真上付き文字ボックス
UnderoverscriptBox[a,b,c]真上真下付き文字ボックス
FractionBox[a,b]分数ボックス
SqrtBox[a]平方根ボックス
RadicalBox[a,b]b 次根

基本的なボックス

根号の中に分数を入れるためボックスをネストさせる.
In[6]:=
Click for copyable input
Out[6]//DisplayForm=
文字書式ボックスを組み合せ,上付き文字を下付き文字の後に付ける.
In[7]:=
Click for copyable input
Out[7]//DisplayForm=
1つのボックスで,上付き文字と下付き文字を一括で作る.
In[8]:=
Click for copyable input
Out[8]//DisplayForm=
FrameBox[box]ボックス box の周囲に罫線を描く
GridBox[list,RowLines->True]グリッドボックスGridBoxの行と行の間に罫線を引く
GridBox[list,ColumnLines->True]列間に線を引く
GridBox[list,RowLines->{True,False}]
第1行の下だけに罫線を引く

罫線

分数の周囲に罫線を引く.
In[9]:=
Click for copyable input
Out[9]//DisplayForm=
配列の列と列の間,そして,行と行の間に罫線を引く.
In[10]:=
Click for copyable input
Out[10]//DisplayForm=
その周りにも罫線を引く.
In[11]:=
Click for copyable input
Out[11]//DisplayForm=
StyleBox[boxes,options]ボックス boxes に書式を適用する
StyleBox[boxes,"style"]ボックス boxes にスタイルを適用する

ボックスの書式変更

StyleBoxの条件設定の仕方はStyleと同じである.両者の違いは,Styleが式の表示方法を決定するよう式に対して適用される高レベル関数であるのに対し,StyleBoxは根底にあるボックス構造においてそれに対応する低レベル関数であるという点である.

文字列「名前」のフォントサイズを6にする.
In[12]:=
Click for copyable input
Out[12]//DisplayForm=
今度は,文字列を現在のノートブックに登録されている見出し用スタイルで表示させる.
In[13]:=
Click for copyable input
Out[13]//DisplayForm=
見出し用スタイルを使うが,文字は灰色で表示させる.
In[14]:=
Click for copyable input
Out[14]//DisplayForm=

ノートブック用フロントエンドを使っている場合,スタイルや表示書式はメニューを介して直接変更できる.それでも内部では,書式変更があるたびにStyleBoxのオブジェクトが挿入される.

FormBox[boxes,form]ボックス boxes に表記 に関連した規則を適用する
InterpretationBox[boxes,expr]ボックス boxes が指定式 expr を表すものと解釈する
TagBox[boxes,tag]ボックス boxes にタグ tag を関連付けて解釈する
ErrorBox[boxes]エラーの旨を告げ,ボックス boxes の解釈処理を停止する

ボックスの解釈

に上付き文字を付けて表示する.
In[15]:=
Click for copyable input
Out[15]//DisplayForm=
式に変換すると,ベキとして解釈される.
に上付き文字が付いて表示される.
In[17]:=
Click for copyable input
Out[17]//DisplayForm=
ただし,今度はInterpretationBoxの指定があるため,として扱われる.

InterpretationBoxにあるボックスを編集してしまうと,解釈用情報が不正になってしまうかもしれない.これを防ぐためにInterpretationBoxオブジェクトの選択や編集を制限するオプションが各種用意されている.

オプション
デフォルト値
EditableAutomaticオブジェクト内容が編集可能かどうか指定する
SelectableTrueオブジェクト内容が選択可能かどうか指定する
DeletableTrueオブジェクト内容が削除可能かどうか指定する
DeletionWarningFalseオブジェクト内容が消去される際は警告するかしないか指定する
BoxAutoDeleteFalseオブジェクト内容が変更された際はボックス書式を除去するかしないか指定する
StripWrapperBoxesFalseTagBox[boxes,]にあるボックス boxes からStyleBox等を自動的に除去するかしないかを指定する

InterpretationBoxと関連するボックスのオプション

TagBoxを使うと,ボックスの内容を解釈しやすくする情報を付加しておくことが可能である.例えば,ボックス boxes に対応する式の頭部を tag という関数にするには,TagBox[boxes,tag]と指定する.オブジェクトを編集しても,それが引数だけなら,オブジェクトと関数の関連付けは残るのでTagBoxは引き続き的確であると解釈できる.ボックスを編集可能にしておくため,Editable->Trueのデフォルトの条件が事実上TagBoxに与えられている.

各種の規則がボックスの内容に適用され,式の解釈が行われる.規則の適用において,通常,StyleBoxオブジェクト等の書式指定は無視される.このため,StripWrapperBoxes->Falseの条件があらかじめ設定していなければ,例えば,文字色が赤でもなら文字色が黒の普通のと同じにみなされてしまう.

文字色が赤でも,は通常,普通の黒のと同じに扱われる.
In[19]:=
Click for copyable input
Out[19]=