14 拡張文字列処理モード (Enhanced text mode)

多くの出力形式が、拡張文字列処理モード (enhanced text mode) をサポート しています。これは、文字列に追加の書式情報を埋めこみます。例えば "x^2" は x の自乗を、通常我々が見る上付きの 2 がついた形で書き出します。この モードは、出力形式の設定時にデフォルトとして選択されますが、その後で "set termoption [no]enhanced" を使ってその機能を有効/無効にもできます し、"set label 'x_2' noenhanced" のように個々の文字列に適用することも できます。

拡張文字列制御記号
制御記号 結果 説明
^ a^x ax 上付き文字
_ a_x ax 下付き文字
@ a@^b_{cd} abcd 空ボックス (幅がない)
& d&{space}b d b 指定した長さのスペースを挿入
~ ~a{.8-} $\tilde{{a}}$ 'a' の上に '-' を、現在のフォントサ
   イズの .8 倍持ち上げた位置に重ね書き
{/Times abc} abc Times フォント、今のサイズで abc を出力
{/Times*2 abc} abc Times フォント、今の倍のサイズで abc
{/Times:Italic abc} abc Times フォント、イタリック体で abc
{/Arial:Bold=20 abc} abc Arial フォント、太字、サイズ 20 で abc

書式制御文字は、それに続く 1 文字、または中カッコで囲まれたものに適用 されます。中カッコ内には、例えば 2^{10} のような追加の書式文字列のない文字列か、またはフォントの属性を変更する追加制御文字列を入れることができます。フォント指定は、開き中カッコ '{' の直後に続く '/' のすぐ次に書 かなければ「いけません」。フォント名にスペースが含まれる場合、それを単 一、または二重引用符で囲まなければいけません。

例: 最初の例はその中カッコの入れ子を示していて、ボールド体の A にイタ リック体の下付きの添字 i がついたものが、いずれも現在のフォントで描か れます。この例の :Normal を取ると、下付きの添字はボールド体でかつイタ リック体になります。2 つ目の例は同じ書式制御を 20 ポイントサイズの "Times New Roman" フォントに適用したものです。

    {/:Bold A_{/:Normal{/:Italic i}}}
    {/"Times New Roman":Bold=20 A_{/:Normal{/:Italic i}}}

空ボックス (phantom box) は a@^b_c の上付き文字と下付き文字を揃えると きに有用ですが、文字にアクセント記号を重ねる場合にはうまく働きません。 後者の目的のためには、色々なアクセントやその他のダイアクリティカルマ ークのある多くの文字を持つエンコード (例えば iso_8859_1 や utf8) を使 用する方がいいでしょう。以下参照: set encoding (p. [*])。そのボックスはスペー シングが行なわれないので、ボックス内 (つまり @ の後ろ) の上付き文字や 下付き文字を短く出力するのに適しています。

ある文字列と同じ長さのスペースを文字 '&' を使うことで入れることができ ます。すなわち、

       'abc&{def}ghi'

は以下を生成します (abc と ghi の間は 3 文字分の空白):
       'abc   ghi'

文字 '~ ' は、次の文字、またはカッコで囲まれた文字列に、それに続く文字 またはカッコで囲まれた文字列を重ね書きします。2 番目の文字は最初の文字 にあわせて水平方向にセンタリングされます。よって '~ a/' は 'a' を貫くよ うなスラッシュが得られます。2 番目の文字は、その前に数字を置くことで垂 直方向に移動させることができます。その数字は現在のフォントサイズに対す る割合を意味し、それに従って文字が上がったり下がったりします。この場合 数字と文字列は 1 文字より長くなるのでカッコで囲む必要があります。重ね 書きされる文字列が数字から始まっている場合は、垂直にずらす値と文字列と の間にスペースを入れてください ('~ {abc}{.5 000}')。それ以外はスペースは不要です ('~ {abc}{.5 -- }')。一方、あるいは両方のフォントを変更するこ ともできます ('~ a{.5 /*.2 o}'; 'a' その 1/5 の大きさの 'o'、この場合数 字とスラッシュの間のスペースは必要です) が、その文字列が始まった後で変 更することはできません。それぞれの文字列内で、他の特殊な書式を使うこと もできません。もちろん、'~ a{ \^}' のように特殊な文字をエスケープするこ と (下記参照) は可能です。

特殊記号は、8 進文字コードを与えることで数字で指定できます。例えば、 {/Symbol \245} は、Adobe Symbol フォントの無限大の記号です。しかし、こ れは、 UTF-8 のようなマルチバイトエンコーディングではうまくいきません。 UTF-8 環境では、タイプ打ち、そうでなければあなたが望む文字を選ぶような 方法で、マルチバイト列を間接的に入力できるようにすべきです。

制御文字は、 \ \ \{ などのように \ を使ってエスケープできます。

二重引用符内の文字列は単一引用符内の文字列とは異なって解釈されることに 注意してください。主な違いは、二重引用符内の文字列ではバックスラッシュ は 2 つ重ねる必要があることです。

gnuplot ソース配布物内の /docs/psdoc サブディレクトリにあるファイル "ps_guide.ps" に、拡張された書式に関する例が載っています。同様のものが デモ enhanced_utf8.dem

にもあります。

竹野茂治@新潟工科大学
2019-12-04