|
2.9.6 書式付きテキスト表示

文字列の指定
出力には引用符がないことに注目.
In[1]:= "This is a string."
Out[1]= 
InputFormにすれば引用符を見ることができる.
In[2]:= InputForm[%]
Out[2]//InputForm= "This is a string."
文字列にはどんな種類のテキストでも入力可能である.英語以外の文字でもよいし,改行記号や他の制御情報であってもよい.文字列の構成要素の詳細については 2.8を参照のこと.

文字列の部分的置換
文字列を使うとき,場合によっては,原形になる文字列をテンプレートとして用意しておき,そこに種々の文字要素を挿入して必要な文字列を作成できると便利である. StringFormを使うとそれができる.
2重アクセント記号の位置に第2,第3の引数を順番に挿入し新たな文字列を作る.
In[3]:= StringForm["x = ``, y = ``", 3, (1 + u)^2]
Out[3]= 
アクセント記号と数字を組み合せて,何番目の式を挿入すべきか指定することも可能である.
In[4]:= StringForm["{`1`, `2`, `1`}", a, b]
Out[4]= 
StringFormにおける引数の文字列は,C言語やFortran言語で使う書式付き出力文の「書式指定」に相当する.標準出力変換関数を式に作用させれば, StringFormの式がどう書式設定されるか見ることができる.
標準出力変換関数を使い, StringFormに指定した代入式に関し書式を指定する.
In[5]:= StringForm["`` の`` は``です.", a/b, TeXForm, TeXForm[a/b]]
Out[5]= 
StringFormが使えるのは出力書式の指定だけであることに注意する.式自体の評価は行わない. 式を式として文字列に挿入するには ToStringの機能を使う.
StringFormが生成する書式付き出力には標準的な出力形が使われる.
In[6]:= StringForm["Q: `` -> ``", a, b]
Out[6]= 
入力形にすると, StringForm全体を1つのオブジェクトとして扱うことができる.
In[7]:= InputForm[%]
Out[7]//InputForm= StringForm["Q: `` -> ``", a, b]
これはStringFormオブジェクトから通常の文字列を作成する.
In[8]:= InputForm[ToString[%]]
Out[8]//InputForm= "Q: a -> b"
StringFormを使えば,文字列で「テンプレート」を作り,そこに,いろいろな式を埋めていくという形式の入力ができる.場合によっては,複数の式がすでにあり,それらを単につなげたいだけのこともあるだろう.そのようなときは, SequenceFormを使う.

式のシーケンス表記
3つの式を順番につなぎ合わせる.
In[9]:= SequenceForm["[x = ", 56, "]"]
Out[9]= 

式の列表記
2つの式を上下に並べて表示する.
In[10]:= ColumnForm[{a + b, x^2}]
Out[10]= 

評価保留の表記
文字列や StringForm等の関数を使えば,評価できない式を操作したり,結果を表示したりすることが可能になる.その逆に,式を評価せず単に表示したいときもある.そのようなときは, HoldFormを作用させ式の評価を保留して,標準的な出力形で表示する.
HoldFormを作用させたから,式 1 + 1は未評価でそのまま表示される.
In[11]:= HoldForm[1 + 1]
Out[11]= 
割当ては未完了のままである.
In[12]:= HoldForm[x = 3]
Out[12]= 
ベキ乗は計算されない.
In[13]:= HoldForm[34^78]
Out[13]= 
|