※使用文法 このテキストは[XETEXT-0.02J]にて記述されています。 ※     XETEXT-0.02Jを利用できるビューアでご覧下さい。 ※拡張文法 サンプル機能[SAMPLE-0.01]が必要です。 xetext: eXtended structure Enhacned TEXT仕様書(Alpha-2) =======================================================                         1996年10月23日                                川俣 晶  本仕様書は、テキストに簡易な構造を付与できるマークアップ言語▽setext▽に、動的な拡張性を与えたマークアップ言語xetextの仕様について、記述する。  本仕様書はアルファテスト段階である。 xetextの定義 ------------  xetextとは、日本語による電子出版に利用しうる、動的に文法拡張を行う機能を持ったマークアップ言語である。 ▽setext▽との互換性 --------------------  ▽setext▽に対して、100%の上位互換を持つ。▽setext▽を扱うソフトウェアにxetextテキストを読み込ませた場合、xetextのすべてのタグが無視されるだけで正常に動作する。  ただし、2バイト文字を正しく扱えないソフトウェアの場合、日本語xetextテキストを読み込ませたときに、文字コードの性質に起因する誤動作の恐れがある。 setext-jとの互換性 ------------------  ▽setext-j▽とは似ている部分もあるが、細部が異なるため、厳密な意味での互換性はない。 xetextの判別方法 ----------------  以下のいずれかの条件に該当するテキストは、xetextと見なす。 * ファイルの拡張子が".XET"である * テキストの内容のある最初の行に、language-tt("※使用文法")が存在する * subject-tt中の電子メールヘッダー内のContent-Typeが、text/x-xetextである  (注:text/x-xetextは認知されたキーワードではない、あくまで、まだ案の段階である)  補足:  通常は、ファイルの拡張子を".XET"にしておくだけで十分である。  setextビューアにも読み込ませたい場合は、拡張子を".ETX"として、最初の行で"※使用文法"によってXETEXTを使うことを宣言しても良い。これにより、▽setext▽ビューアは、この行を地の文とみなして読み飛ばすので問題は起こらない。また、xetextビューアは間違いなくXETEXTビューアであると確認することができる。 文字セット ----------  用いることのできる文字はJIS X 0201で規定されているローマ文字用図形図形キャラクタ集合に含まれる文字および、JIS X 0208で規定される文字である。  これは、いわゆる半角英数記号と、メーカー独自文字を除くすべての全角文字に該当する。半角カナおよび半角カナ記号を含まない。  制御記号としては、改行のみを使用する。改行の文字コードは、xetextを利用する環境の規定に従う。  オプションとして、Unicode 1.1を文字セットとして利用するモードを規定する。このモードを実装するか否かはインプリメンタに一任される。このモードにおいては、合成文字と、双方向文字送りに関連する文字を除く、すべての文字(厳密にはグリフ)が利用できる。ただし、日本語以外の言語に対して、適切なフォーマッティングが行われるか否かはインプリメント依存である。 段落の記述 ----------  原則として、改行を、段落末と見なす。  1行の文字数に制約のある通信手段を使う場合に限り、▽indent-tt▽と空行による段落の記述を利用する。 拡張子の利用 ------------  xetextテキストを保存したファイルの拡張子は".XET"を基本とする。  間違いなく区別できる場合には、他の拡張子を使っても良い。 タグ中のタグ ------------  タグはネストできる。  ただし、あるタグが閉じる前に、その前に開いたタグを閉じることはできない。  つまり、最後に開いたタグから閉じること。  例:   ○ **ボールド~ボールドイタリック~ボールド**   × **ボールド~ボールドイタリック**イタリック~  ただし、同じタグはネストできない。  タグによっては、例外的にネストができないものがある。(例:ruby-ttの副文字列) ビューアが実装すべきタグ ------------------------  ビューアはすべてのタグを実装する必要はない。実装するタグと、実装しないタグの選定は、ビューア開発者の任意である。  ただし、language-tt("※使用文法")だけは正しく処理されねばならない。 URLについて -----------  本仕様書では、xetextテキストから、URLによって、テキスト外のデータを参照することを許している。  URLは複数のプロトコルをサポートしているが、どのプロトコルをサポートするかは、インプリメント依存とする。  ただし、ローカルファイル参照"File:"のみは、最低でもサポートしなければならないものとする。"File:"の書式はローカル環境に依存しているため、最低インプリメントしなければならない条件を以下に定める。  ディレクトリやドライブ名を含まないファイル名について、扱うことができる。つまり、ある電子的な「本」が、複数のファイルで構成されていたときに、そのファイルをすべて同一のディレクトリに展開した場合、それらのファイルへの参照が有効である。  たとえば、SAMPLE.GIFというファイルがあったとき、"(※ファイル挿入 File:SAMPLE.GIF)は、いかなる環境下のxetext対応ソフトであっても、取り扱い可能でなければならない。  ただし、ファイル名に、その処理系で有効ではない文字が含まれる等の場合は扱えなくても良い。ユーザーは、このようなケースを避けるため、処理系によってファイル名に利用できない文字は避けるべきである。 参照できるファイル形式 ----------------------  xetextビューアにおいて、画像の取り扱いを可能とする場合は、少なくとも、JPEG(JFIF仕様)、GIF(GIF 89a仕様)をサポートすることを推奨する。  xetextテキストの作成者は、上記フォーマットの画像データが利用できることを期待して良い。  表の取り扱いを可能にする場合は、CSV形式のファイルをサポートすることを推奨する。  その他の形式のファイルが扱えるか否かは、インプリメント依存である。 拡張文法(プラグイン)の仕様 ----------------------------  現段階では、インプリメント依存とする。  ただし、将来xetext処理系をJava言語で構築し直すことで、Javaベースの標準プラグイン・インターフェースを規定することを考えている。 タグの分類 ----------  xetextのタグには、以下のバリエーションがある。 * setextと互換であるもの * 文法拡張能力を規定するもの * ビルドイン拡張日本語タグ関連 setext互換タグ リファレンス ---------------------------  **subject-tt**  Inertnetの電子メールヘッダー(RFC822にて規定される)を記述して、これをxetextテキストの開始マークとすることができる。  Subjectフィールドを記述するために使用する文字セットは、本文を記述する文字セットと同一とする。つまり、日本語のSubjectを記述する場合に、MIME(RFC1521,RFC1522)によるエンコードを使用しない。  **title-tt**  第1レベルのタイトルを示す。  2行に渡って記述される。  1行目は、タイトルそのものを記述する。  2行目は、半角"="記号を以下に規定される文字数だけ記述する。(他の文字は、この行には書き込まない)  半角文字を1、全角文字を2としたときの長さがタイトル行と一致する。ただし、行末の空白文字(全角、半角を問わず)は含まない。  なお、ここでいうタイトル行の長さは、タグに使用された記号を含む長さである。  **subhead-tt**  第2レベルのタイトルを示す。  使用する記号が、マイナス"-"である以外、title-ttと同一の書式である。 .. 下記の1行は、ローカルテキスト内の参照先として書き込まれたタグである △indent-tt△  **indent-tt**  下記の書式に該当する行を、indent-ttとする。  2文字の半角スペース+下記で規定される文字数以内の文字列+改行  (半角文字を1、全角文字を2としたときの長さが66以下)  indent-ttにおいては、先頭の半角スペース2文字は無かったものとみなされ、改行を無視して次の行と連結が行われる。  空行に遭遇した時点で、結合作業は終了する。結合された文字列全体を段落と見なす。  この空行はindent-ttの区切りを意味する一種のマークアップであるため、結合作業が完了したら、取り除かれる。  改行でも、indent-ttでもない行に遭遇した場合は、結合作業をそこで中断し、その行の直前を段落の終わりと見なして処理を継続する。  **bold-tt**  強調構文(ボールドタイプ)  2文字の半角アスタリスク"**"によって、文字列の前後を囲むことで、文字列が強調されていることを示す。  強調手段が選べる場合は、ボールドで表示することが期待されるが強制ではない。  段落をまたがった強調の指定はできないものとする。  段落中の"**"記号が奇数個の場合は、段落末に、"**"があるものと見なす。  **italic-tt**  強調構文(イタリックタイプ)  半角チルダ"~"によって、文字列の前後を囲むことで、文字列が強調されていることを示す。  強調手段が選べる場合は、イタリックで表示することが期待されるが強制ではない。  段落をまたがった強調の指定はできないものとする。  段落中の"~"記号が奇数個の場合は、段落末に、"~"があるものと見なす。  **underline-tt**  強調構文(アンダーラインタイプ)  半角アンダースコア"_"によって、欧文の単語の前後を囲むことで、文字列が強調されていることを示す。  強調手段が選べる場合は、アンダーラインタイプで表示することが期待されるが強制ではない。  段落をまたがった強調の指定はできないものとする。  段落中の"_"記号が奇数個の場合は、段落末に、"_"があるものと見なす。  複数単語に渡るアンダーラインを記述する場合は、"_単語_単語_単語_"というように、半角アンダースコア"_"によって区切りながら続けることができる。  **hot-tt**  参照対象の単語を指定する。  欧文の単語の後ろに、半角アンダースコア"_"を付加することで、その単語が参照の対象であることを示す。この単語に、ユーザーがなんらかのアクションを起こすことで、href-tt、note-ttまたはreferenced-ttの情報が表示される。  **include-tt**  フォーマット済みテキストの挿入  行頭に半角不等号">"+半角スペースが記述された場合、その行のそれ以後のテキストは、固定ピッチフォント(半角の幅×2=全角の幅)によってフォーマット済みと見なし、何も手を加えないで表示する。  xetextマークアップは無視される。  改行はあるがままに扱われる。行が長すぎるからと言って、ビューアによる自動的な改行などは入れない。  1行あたり、半角文字を1、全角文字を2としたときの長さが、80以下になるように記述することを推奨する。  半角不等号">"+半角スペースは、ビューアによって、異なるビジュアルに置き換えても良い。  **bullet-tt**  順番の表示のないリストの1項目  行頭に半角不等号"*"+半角スペースが記述された場合、その行のそれ以後のテキストは、列挙されたリストの1項目と見なす。  半角不等号"*"+半角スペースは、ビューアによって、異なるビジュアルに置き換えても良い。  **quote-tt**  マークアップの打ち消し  半角アクサングラーブ"`"によって、文字列の前後を囲むことで、文字列中のマークアップに相当する記号が、マークアップではなく、本文の文字であることを示す。  マークアップに相当する記号を書きたい場合に利用する。  段落をまたがった打ち消しの指定はできないものとする。  段落中の"`"記号が奇数個の場合は、段落末に、"`"があるものと見なす。  **href-tt**  ある文字列に対する参照情報を記述する  行頭に2文字の半角ピリオド".."+半角スペース+半角アンダースコア"_"+対象の単語+半角スペース+URLが記述された場合、その単語への参照が発生したときに、参照の対象となるリソースを指定する。  この行は、表示されない。  **note-tt**  ある文字列に対する参照情報を記述する  行頭に2文字の半角ピリオド".."+半角スペース+半角アンダースコア"_"+対象の単語+半角スペース+任意の文字列が記述された場合、その単語への参照が発生したときに、参照の対象となる任意の文字列を指定する。  この行は、表示されない。  **twobuck-tt**  行末に、2文字の半角"$$"があった場合、これをxetextテキスト本文の終了の記号とみなす。  このあとに、note-ttなどの非表示タグが継続する場合がある。  **suppress-tt**  表示されないテキスト  行頭に2文字の半角ピリオド".."+半角スペースが記述された場合、その行はビューアによって、一切表示されない。  **twodot-tt**  論理テキスト終了記号  非表示タグを含め、すべてのxetextテキストが終了することを意味する。 文法拡張タグ リファレンス -------------------------  **language-tt**  使用するマークアップ言語を宣言する。  行頭に以下のいずれかの文字列を記述する。  "※使用言語"  "#MarkUpLanguageIs"  それに引き続き、任意の個数の全角又は半角の空白を挟んで、コメント文字列を記述する。文字列中には、ブラケット[]でくくったマークアップ言語の識別名を記述する。  本仕様書で規定する言語の識別名は、[XETEXT-0.01J]である。  例: `※使用文法 このテキストは[XETEXT-0.01J]にて記述されています`  あるいは、本テキストの先頭をテキストエディタで参照すること。  このタグは、すべてのxetextテキスト、タグの手前で、一回だけ記述されねばならない。  非日本語環境をターゲットにしている場合は、キーワード"※使用言語"をサポートしなくても良い。  **extend-tt**  拡張文法を使用していることを宣言する  行頭に以下のいずれかの文字列を記述する。  "※拡張文法"  "#ExtendedSyntaxIs"  それに引き続き、任意の個数の全角又は半角の空白を挟んで、コメント文字列を記述する。文字列中には、ブラケット[]でくくった拡張文法のの識別名を記述する。  例: `※拡張文法 URL参照[URL-Reference-0.01]`  あるいは、本テキストの先頭をテキストエディタで参照すること。  このタグは、language-ttの後で、かつ、すべてのxetextテキスト、他のタグの手前で、必要な個数だけ記述する。  非日本語環境をターゲットにしている場合は、キーワード""※拡張文法"をサポートしなくても良い。 ビルドイン拡張日本語タグ リファレンス -------------------------------------  これらは、利用上の便宜のために、xetextの中にビルドインされた日本語依存のタグである。これらのタグは、language-ttで、[XETEXT-?.??J]を指定した場合に有効になり、[XETEXT-?.??]を指定した場合には無効となる。  将来、日本語を対象としないxetext関連ソフトが出現した場合、[XETEXT-?.??]をサポートするが、[XETEXT-?.??J]をサポートしないものが出現する可能性がある。  **underlinej-tt**  強調構文(アンダーラインタイプ)  全角"_"によって、文字列の前後を囲むことで、文字列が強調されていることを示す。  強調手段が選べる場合は、アンダーラインで表示することが期待されるが強制ではない。  段落をまたがった強調の指定はできないものとする。  段落中の"_"記号が奇数個の場合は、段落末に、"_"があるものと見なす。  **sidedots-tt**  強調構文(傍点タイプ)  全角" ̄"によって、文字列の前後を囲むことで、文字列が強調されていることを示す。  強調手段が選べる場合は、傍点で表示することが期待されるが強制ではない。  段落をまたがった強調の指定はできないものとする。  段落中の" ̄"記号が奇数個の場合は、段落末に、" ̄"があるものと見なす。  **ruby-tt**  ルビを記述する  テキスト中の任意の箇所に、全角記号"^"+主文字列+全角記号"["+副文字列+"]"を記述することができる。主文字列は、本文と連続して表示される文字列であり、副文字列は、主文字列の読みや意味を記述するルビとなる文字列である。  副文字列には、quote-tt以外のタグを記述することはできない。(プレーンテキストとして扱われる)。quote-ttは、"]"を副文字列に記述するために必要である。  ただし、表現方法は、規定されない。主文字列の上や横に、小さな文字で副文字列を添えて表示する、という表現以外の方法を使って良い。  **referencer-tt**  ある文字列に関連する情報への参照を入れる  全角"▽"記号によって、文字列の前後を囲むことで、挟まれた文字列に対する参照が存在することを示す。  ビューアは、ユーザーがその単語にアクション(例:マウスによるクリック)を起こすことで、href-tt, note-ttまたはreferenced-ttによって定義された参照先を表示するよう、作ることができる。  **referenced-tt**  ある文字列に対する参照情報を記述する  全角"△"記号によって、文字列の前後を囲むことで、挟まれた文字列に対する参照が存在することを示す。先頭の全角"△"記号は、行頭に書かねばならない。文字列の終わりの全角"△"記号の後に記述される補足情報によって、いくつかの機能バリエーションが存在する。  このマークアップが存在する行は、ビューアによって表示されない。  バリエーションは以下の通り。  書式1 (行頭)△文字列△(行末)  同一テキスト中の、その場所が、参照先であることを示す。ユーザーがreferencer-ttにアクションを起こした場合、ビューアは、この行のある場所に表示位置を移動させる。  書式2 (行頭)△文字列△(任意の数の空白)【文字列2】(行末)  参照対象が、文字列2であることを示す。ユーザーがreferencer-ttにアクションを起こした場合、ビューアは、文字列2を表示する。  書式3 (行頭)△文字列△(任意の数の空白)(行末)  参照対象が、URLで指定されるインターネット(またはFile:によるローカル)リソースであることを示す。ユーザーがreferencer-tt等にアクションを起こした場合、ビューアは、URLで示されるデータを読み込み、何らかの形でユーザーに提示する。  URL前後の半角不等号は、URLを囲む記号として記述する。  **insert-tt**  別のファイルを挿入する  画像、表、数式などの、xetextとは異なる形式のデータをテキスト中に挿入して表示する。インラインの画像挿入もできる。  全角文字列"(※ファイル挿入:"+URL+全角記号")"という構文で、URLで指定された文字列を画像ファイルのファイル名と見なして、表示する。  **udc-tt**  外字を挿入する。  全角記号"〓"+全角記号"("+URL+全角記号")"と記述された場合、ユーザー定義外字であることを示す。URLは何らかの画像データを示していることが必要である。画像データのサイズに関わらず、そのテキストを表示しているフォントの大きさに拡大縮小され、表示されるものとする。  全角記号"〓"+全角記号"["+文字名+全角記号"]"と記述された場合、定義済み外字であることを示す。付表に列挙したISO 8879:1986のLatin-1に相当する文字の一部が利用できる。  **indent2-tt**  インデント付き表示を実現する。  半角空白3文字以上で始まっていて、直前の行が半角空白3文字以上で始まってない行は、インデント付き段落の開始行とみなされる。  空行または、半角空白3文字以上で始まってない行に遭遇するまで、インデント付き段落と見なされる。  段落内では、文字の再配置が行われる。  インデント付き段落1行目の空白以外の最初の文字の表示位置は、インデント付き段落の最初の行の最初の文字を表示する位置となる。  インデント付き段落2行目の空白以外の最初の文字の表示位置は、インデント付き段落の2行め以降の最初の文字を表示する位置となる。  例1: > 彼のメッセージはこうだ。 > > 楽しい旅行をしているよ。添乗員さんは美人だし。格安ツアーだから、 > バスはボロだけどね。  横幅が狭いシステムでフォーマットしたと仮定した一例は、以下のようになる。 (↓indent2-ttとは認識されない) > 彼のメッセージはこうだ。 > (↓1行目の先頭位置は保持される) > 楽しい旅行をしているよ。添乗員さん (↓2行目の先頭位置は保持されるが、文字は入れ替わっている) > は美人だし。格安ツアーだから、バスは > ボロだけどね。  例2: > YAT社 格安のツアーを多数企画している旅行会社である。金鉱を > 掘ったり、人も住まないような秘湯を訪ねたり。  横幅が狭いシステムでフォーマットしたと仮定した一例は、以下のようになる。 > YAT社 格安のツアーを多数企画している旅行 > 会社である。金鉱を掘ったり、人も住 > まないような秘湯を訪ねたり。 付表 定義済み外字 -----------------  (下の表は、HTML仕様書より借用^^;) > 文字名 内容 > AElig capital AE diphthong (ligature) > > Aacute capital A, acute accent > > Acirc capital A, circumflex accent > > Agrave capital A, grave accent > > Aring capital A, ring > > Atilde capital A, tilde > > Auml capital A, dieresis or umlaut mark > > Ccedil capital C, cedilla > > ETH capital Eth, Icelandic > > Eacute capital E, acute accent > > Ecirc capital E, circumflex accent > > Egrave capital E, grave accent > > Euml capital E, dieresis or umlaut mark > > Iacute capital I, acute accent > > Icirc capital I, circumflex accent > > Igrave capital I, grave accent > > Iuml capital I, dieresis or umlaut mark > > Ntilde capital N, tilde > > Oacute capital O, acute accent > > Ocirc capital O, circumflex accent > > Ograve capital O, grave accent > > Oslash capital O, slash > > Otilde capital O, tilde > > Ouml capital O, dieresis or umlaut mark > > THORN capital THORN, Icelandic > > Uacute capital U, acute accent > > Ucirc capital U, circumflex accent > > Ugrave capital U, grave accent > > Uuml capital U, dieresis or umlaut mark > > Yacute capital Y, acute accent > > aacute small a, acute accent > > acirc small a, circumflex accent > > aelig small ae diphthong (ligature) > > agrave small a, grave accent > > aring small a, ring > > atilde small a, tilde > > auml small a, dieresis or umlaut mark > > ccedil small c, cedilla > > eacute small e, acute accent > > ecirc small e, circumflex accent > > egrave small e, grave accent > > eth small eth, Icelandic > > euml small e, dieresis or umlaut mark > > iacute small i, acute accent > > icirc small i, circumflex accent > > igrave small i, grave accent > > iuml small i, dieresis or umlaut mark > > ntilde small n, tilde > > oacute small o, acute accent > > ocirc small o, circumflex accent > > ograve small o, grave accent > > oslash small o, slash > > otilde small o, tilde > > ouml small o, dieresis or umlaut mark > > szlig small sharp s, German (sz ligature) > > thorn small thorn, Icelandic > > uacute small u, acute accent > > ucirc small u, circumflex accent > > ugrave small u, grave accent > > uuml small u, dieresis or umlaut mark > > yacute small y, acute accent > > yuml small y, dieresis or umlaut mark 変更履歴 --------  1996年9月23日  xetext: eXtended structure Enhacned TEXT仕様書(Alpha-1)  最初のバージョン  1996年10月23日  xetext: eXtended structure Enhacned TEXT仕様書(Alpha-2)  indent2-ttを追加。 $$ △setext△ △setext-j△ 【NIFTY-Serve, go fshtext, mes 14参照】 ..