14.1 エスケープシーケンス (escape sequences)

バックスラッシュ文字 \ は、単一文字を意味するエスケープシーケンスの開 始意味します。

\X の形式 (X は 1 文字) は、単一引用符内と二重引用符内では別の処理をし ます。以下参照: quotes (32.1)。非拡張文字テキスト (non-enhanced text) での 単一引用符内の " \X" は文字通りに使用し、二重引用符内では、 \n (改行) \r (復帰) \t (タブ) 等の特別な文字以外の " \X""X" になります。

\ooo の形式 (ooo は 3 桁の 8 進数値) は、特定のフォントエンコード内の 文字コード番号を指し示すのに使えます。これは PostScript 出力形式で最も 有用ですが、それはそれが UTF-8 エンコーディングを簡単に処理できないか らです。例えば、PostScript 出力は、歴史的な理由で Adobe Symbol フォン トに依っていますが、それは無限大の記号を 8 進 245 番で示すようなカスタ ムエンコードを使用しています。これは、拡張文字列 (enhanced text) とし てフォント名と文字コードを "{/Symbol \245}" のように指定することで埋め 込むことができます。この仕組みは、UTF-8 でないフォントやロケールでの文 字アクセスについても有用かもしれません。

\U+hhhh の形式の Unicode のコードポイントで文字を指定することができま す。ここで hhhh は 16 進数の 4 桁または 5 桁です。例えば、無限大の記号 ∞のコードポイントは \U+221E です。これは、必要ならば出力時に UTF-8 の バイト列に変換されます。UTF-8 環境では、印字可能な特殊文字は他の文字と 同様に文字列内で処理できるので、この仕組みは必要ありません。しかしこれ は結合文字や発音区別符号 (例えばベクトルを意味するための文字の上の矢印 など) には有用です。以下参照: utf8 (116.27), string encoding (30.4)。または オンラインユニコードデモ

を参照。

Unicode のコードポイントは 4 桁か 5 桁になるので、書式があいまいになる 可能性があり、4 桁のエスケープシーケンスの直後に文字がつく場合は、それ を 5 桁のエスケープシーケンスと間違って解釈するかもしれません。そのよ うな場合は、エスケープシーケンスとそれに続く文字を明確に分離する必要が あります。

    例:  以下のラベルを作成 "α1 + α2"
    拡張文字列:    set label "{\U+03B1}1 + {\U+03B1}2"   enhanced
    非拡張文字列:  set label "\U+03B1\1 + \U+03B1\2"   noenhanced

Unicode エスケープコードは、解釈されずに文字列に保存されることに注意し てください。エスケープコードは、その文字列が出力されるか部分文字列処理 の評価の際に、それが示す文字に置き換えます。よって、文字列 S = "A + \U+03A3 B" の定義後では、S[5:5] は " \" でなく "Σ" と評価しま すが、(S eq S[1:*]) は FALSE と評価します。それは、S には処理されてい ないエスケープシーケンス自身が含まれるのに対し、S[1:*] の評価の際には エスケープシーケンスが Σ に対する UTF-8 のバイト列に置き換わるからで す。plot で使用する際は、どちらも "A + Σ B" と表示されます。

竹野茂治@新潟工科大学
2025-09-01