第32回 シンデレラTeX

CindyScriptを使ってTeX記法により描画面上に数式などを書くことができるようになりました。 TeXについては、いろいろなサイトがありますのでそちらを参照してください。たとえば、奥村晴彦氏のTeX Wikiというページがあります。

TeXを使って文章や数式を書くには、CindyScriptの drawtext( ) を用います。書式は drawtext([x,y],"文字列") です。[x,y]は表示位置。文字列の中で、$でサンドイッチにしてTeX記法によって数式を書きます。詳しくはマニュアルをごらん下さい。ここでは、簡単なものからやってみます。

スーパー・サブスクリプトと分数

数式の中で最も頻繁に使うのがスーパースクリプトと分数でしょう。2乗のようなスーパースクリプトは、プログラミングや表計算で使う数式と同じくキャレット^を使います。TeXではその式全体を$ではさみます。

分数は 分子 \over 分母 で表します。\はバックスラッシュで、Macでは option+¥ で打ちます。Windowsでは \ のかわりに¥を使います。overのあとにはスペースが1つ必要です。次の例を見てください。

ここで、1\over 2 全体を { } でくくっているのは、「2分の1」をひとまとまりと見ているからです。単に 1\over 2x^2+1 ですと、分母が 2x^2+1 と解釈されてしまいます。 1\over 2 x^2+1 とスペースを空けても同じです。スペースは無視されてしまうからです。 したがって、どこまでが分子で、どこまでが分母かを明示するために{}でグルーピングするのです。

分子についてみてみましょう。y= を左側につけて方程式にしますが、y=1\over ・・ では、y=1が分子と解釈されてしまいますので、右辺全体をグルーピングしましょう。

分数式であれば、分母をグルーピングします。

分数(fraction)は、LATEXのように \flac{分子}{分母} とう記法にすることもできます。この場合は、右辺全体をグルーピングしなくても大丈夫です。

では、懸垂線を描いてみましょう。グラフを描くには、関数を定義してplot 関数でそれを使ってみます。このplot関数での式と、TeXの式を比較してみましょう。

サブスクリプトはアンダーバーに続いて書きます。次の例を見てください。

和の記号と積分記号

和の記号Σは、上下に数を書きます。定積分も同様です。これらはスーパー・サブスクリプトと同様ですので、キャレットとアンダーバーを使います。また、{}でくくってグルーピングします。では、区分求積法の式を作ってみましょう。

定積分は \int_ 下端^上端 f(x)dxで表します。

和は  \sum_ 下端^上端 式 で表します。式は必要に応じてグルーピングしましょう。

極限の lim も数学記号ですので、バックスラッシュをつけて \lim_{下の記号} で表します。こうして作ったのが次の図です。積分記号の上端、下端が変なところにありますが、これはまあ仕様だと思ってください。

なお、limの下の式は n→∞ と書きましたが、TeXでは n \to \infty と書くほうがよいでしょう。入力モードを切り替えなくても書けます。(→は、普通は日本語モードで「やじるし」で変換しますね)

フォントを指定する

フォントを指定するには、TeX記法の斜体(イタリック)指定ではなく、drawtext()関数に用意されている修飾子を用います。

family->"フォント名" でフォント指定

italics->true で斜体

bold->true で太字 になります。

次のコードを試してみましょう。(Drawスロットにカットアンドペーストで動きます)

--------------------------------------------------------------------------------------------------------------------------

drawtext([0,6],"$ defalut : sinx $",size->24);

drawtext([0,5],"$ ヒラギノ明朝 sinx $",family->"Hiragino Mincho ProN",size->24);

drawtext([0,4],"$ MS明朝 sinx $",family->"MS Mincho",size->24);

drawtext([0,3],"$ TimesNewRoman sinx $",family->"Times New Roman",size->24);

drawtext((0,2),"$ TimesNewRoman 斜体 sinx $",font->"Times New Roman",italics->true);

drawtext((0,1),"$ TimesNewRoman 太字 sinx $",font->"Times New Roman",bold->true);

drawtext((0,0),"$ TimesNewRoman 斜体の太字 sinx $",font->"Times New Roman",bold->true,italics->true);

--------------------------------------------------------------------------------------------------------------------------

結果は次のようになります。

ただし、そのフォントがコンピュータにない場合は、デフォルトのフォント(SansSerifか何か)になります。

上のコードをWindowsで実行すると次のようになります。

ヒラギノ明朝はWindowsのコンピュータにないので、デフォルトが使われました。

Times New RomanはWindowsのコンピュータにも入っているので、アルファベットは表示されますが、日本語フォントがありませんので□になるようです。

この点、Macの場合はTimes New Romanの日本語フォントはないはずなのに、明朝体で表示されています。