bltxt記法
概要
bltxt記法は、テキストをXMLのような階層関係がある構造( BLtxtクラス のインスタンス)へ変換するための記法です。
構成
空行、平文、タグから構成されます。
タグは左隅付き括弧(【)と右隅付き括弧(】)に囲まれます。
二行以上連続する空行は、ひとつの空行と同じ扱いとします。
末尾が改行で終わっても、終わらなくても、どちらでも構いません。
タグの種類
タグには以下の種類があります。
- 文中タグ
- 文の中で用います。
- 文範囲タグ
- 文中の特定範囲を示すために用います。
- 行タグ
- 特定の一文あるいは単独のタグのみ示すのに用います。
- 行範囲タグ
- 特定の行の範囲を示すために用います。
- 含意タグ
- 文章に含めない情報を記述するのに用います。
- 含意範囲タグ
- 文章に含めない情報を特定の行の範囲について示すのに用います。
タグは、タグ名と属性から成ります。
タグ名は省略できません。
属性は、タグ名に続けて記述します。省略することもできます。
全角コロン(:)区切りで複数指定できます。
属性を指定できるのは以下のタグのみです。
- 文中タグ
- 文範囲開始タグ
- 行タグ
- 行範囲開始タグ
- 含意タグ
- 含意範囲開始タグ
タグ
文中タグ
左隅付き括弧(【)と右隅付き括弧(】)でタグ名や属性を挟みます。
美しい【ルビ:薔薇:ばら】が咲いていた。
文範囲タグ
文範囲開始タグと文範囲終了タグから成ります。
文範囲開始タグは左隅付き括弧+全角パイプ(【|)と右隅付き括弧(】)でタグ名を挟みます。
文範囲終了タグは左隅付き括弧(【)と全角パイプ+右隅付き括弧(|】)でタグ名を挟みます。
文範囲開始タグと文範囲終了タグは、タグ名が同じである必要があります。
文範囲開始タグと文範囲終了タグの間に、改行を含むことはできません。
文範囲タグ同士で階層構造を作ることができます。
今日は【|強調】重要【強調|】な日だ。
行タグ
行タグは、左隅付き括弧+全角イコール(【=)と右隅付き括弧(】)でタグ名を挟みます。
行タグに続けて文を続けることができます。省略も可能です。
【=見出し】はじめに
【=書影:999-1234567890】
行範囲タグ
行範囲開始タグと行範囲終了タグから成ります。
行範囲開始タグは左隅付き括弧+全角ハイフン(【-)と右隅付き括弧(】)でタグ名を挟みます。
行範囲終了タグは左隅付き括弧(【)と全角ハイフン+右隅付き括弧(-】)でタグ名を挟みます。
行範囲開始タグと行範囲終了タグは、タグ名が同じである必要があります。
行範囲開始タグ、行範囲終了タグはそれぞれ一行で記述します。文中に記述することはできません。
あるいは一行で行範囲開始タグと行範囲終了タグ、およびその内容を記述することもできます。
行範囲タグ同士で階層構造を作ることができます。
【-囲み記事】
富士山麓にオウム鳴く。
【囲み記事-】
含意タグ
含意タグは、左隅付き括弧+全角シャープ(【#)と右隅付き括弧(】)でタグ名を挟みます。
【#コメント】ここから重要
含意範囲タグ
含意タグは、左隅付き括弧+全角アスタリスク(【*)と右隅付き括弧(】)でタグ名を挟みます。
含意範囲開始タグと含意範囲終了タグから成ります。
含意範囲開始タグは左隅付き括弧+全角ハイフン(【*)と右隅付き括弧(】)でタグ名を挟みます。
含意範囲終了タグは左隅付き括弧(【)と全角ハイフン+右隅付き括弧(*】)でタグ名を挟みます。
【*註記】
正確には、そのような事実があったか確かめられていない。
【註記*】
エスケープ
タグの中で、属性値に以下を使用するときは全角アンダーバー(_)でエスケープしてください。カッコ内はエスケープした表現です。
- 左隅付き括弧(【_)
- 右隅付き括弧(_】)
- 全角コロン(_:)
- 全角アンダーバー(__)
タグの外では以下をエスケープしてください。カッコ内はエスケープ後の表現です。
- 左隅付き括弧(【_)
- 右隅付き括弧(_】)
使用可能文字
属性値には、改行コードを使用できません。
タグ名には、以下の文字を使用できません。
エスケープして使うこともできません。
- 改行コード
- 全角アンダーバー(_)
- 左隅付き括弧(【)
- 右隅付き括弧(】)
- 全角コロン(:)
- 全角ハイフン(-)
- 全角パイプ(|)
- 全角アスタリスク(*)
- 全角イコール(=)
- 全角シャープ(#)
XML化
以下のタグを用いて XML化します。
XML化には BLtxtクラス を利用してください。
- blxml
- ルートタグ。複数のブロック要素、段落、メタ要素のいずれかから成ります。
- block
- ブロック要素。複数の段落、メタ要素、下位ブロック要素から成ります。
- 行タグ、行範囲タグと対応します。
- para
- 段落。複数の行から成ります。
- meta
- メタ要素。複数の段落、下位ブロック要素から成ります。
- 含意タグ、含意範囲タグと対応します。
- line
- 行。複数の平文、インライン要素から成ります。
- inline
- インライン要素。複数の平文、下位インライン要素から成ります。
- 文中タグ、文範囲タグと対応します。
- attrs, attr
- 属性。
- 各タグの属性と対応します。
- text
- 平文。
以下の属性を保持します。
- tag
- タグ名。
- block, para, meta, inlineが保持します。
- lnum
- bltxt文書での行番号。
- block, para, meta, inline, lineが保持します。
- snum
- 同じタグ、同じタグ名での通番。
- block, para, meta, inlineが保持します。
平文のXML化
タグの無い行は、一行ごとにlineタグで囲みます。
文字列はすべて textタグで囲みます。
一行以上の空行区切りで、段落とみなします。段落をparaタグで囲みます。
空行は、ひとつのみでも、複数でも、すべて段落区切りとみなします。
とりなくこえす、
ゆめさませ。
みよあけわたる、
ひんがしを。
<?xml version="1.0" encoding="UTF-8"?>
<bltxt>
<para lnum="1" snum="1">
<line lnum="1">
<text>とりなくこえす、</text>
</line>
<line lnum="2">
<text>ゆめさませ。</text>
</line>
</para>
<para lnum="4" snum="2">
<line lnum="4">
<text>みよあけわたる、</text>
</line>
</para>
<para lnum="7" snum="3">
<line lnum="7">
<text>ひんがしを。</text>
</line>
</para>
</bltxt>
文中タグのXML化
文中タグは、inlineタグに変換します。
属性値はattrs, attrタグとして inlineタグ内の先頭に保持します。
美しい【ルビ:薔薇:ばら】が咲いていた。
<?xml version="1.0" encoding="UTF-8"?>
<bltxt>
<para lnum="1" snum="1">
<line lnum="1">
<text>美しい</text>
<inline tag="ルビ" lnum="1" snum="1">
<attrs>
<attr>薔薇</attr>
<attr>ばら</attr>
</attrs>
</inline>
<text>が咲いていた。</text>
</line>
</para>
</bltxt>
文範囲タグのXML化
文範囲タグも、inlineタグに変換します。
開始タグと終了タグに囲まれた範囲は、textタグで囲みます。
文範囲タグを入れ語にした場合、下位の inlineタグや textタグを保持します。
これにより、階層構造を作ることができます。
ここが【|傍点】重要【傍点|】です。
【|強調】とても【|ルビ:インポータント】重要【ルビ|】ですよ。【強調|】
<?xml version="1.0" encoding="UTF-8"?>
<bltxt>
<para lnum="2" snum="1">
<line lnum="2">
<text>ここが</text>
<inline tag="傍点" lnum="2" snum="1">
<text>重要</text>
</inline>
<text>です。</text>
</line>
<line lnum="3">
<inline tag="強調" lnum="3" snum="1">
<text>とても</text>
<inline tag="ルビ" lnum="3" snum="1">
<attrs>
<attr>インポータント</attr>
</attrs>
<text>重要</text>
</inline>
<text>ですよ。</text>
</inline>
</line>
</para>
</bltxt>
行タグのXML化
行タグは blockタグに変換します。
行タグの前後は、空行の有無にかかわらず段落区切りとみなします。
行タグ同士で階層構造を作ることはできません。
ただし後述する行範囲タグの下位とすることはできます。
【=見出し】トランプの遊び方
以下の画像を参照してください。
【=画像:howto.jpg】
<?xml version="1.0" encoding="UTF-8"?>
<bltxt>
<block tag="見出し" lnum="1" snum="1">
<para lnum="1" snum="1">
<line lnum="1">
<text>トランプの遊び方</text>
</line>
</para>
</block>
<para lnum="3" snum="2">
<line lnum="3">
<text>以下の画像を参照してください。</text>
</line>
</para>
<block tag="画像" lnum="4" snum="1">
<attrs>
<attr>howto.jpg</attr>
</attrs>
</block>
</bltxt>
行範囲タグのXML化
行範囲タグも blockタグに変換します。
開始タグ、終了タグの前後は、空行の有無にかかわらず段落区切りとみなします。
行範囲タグを入れ子にすることで、階層構造を作ることができます。
以下の記事を参照してください。
【-囲み記事】
リンカーンは次の言葉を残した。
【-引用:『リンカーン語録』】
人民の、
人民による、
人民のための政治。
【引用-】
【囲み記事-】
<?xml version="1.0" encoding="UTF-8"?>
<bltxt>
<para lnum="1" snum="1">
<line lnum="1">
<text>以下の記事を参照してください。</text>
</line>
</para>
<block tag="囲み記事" lnum="3" snum="1">
<para lnum="3" snum="2">
<line lnum="4">
<text>リンカーンは次の言葉を残した。</text>
</line>
</para>
<block tag="引用" lnum="5" snum="1">
<attrs>
<attr>『リンカーン語録』</attr>
</attrs>
<para lnum="5" snum="3">
<line lnum="6">
<text>人民の、</text>
</line>
<line lnum="7">
<text>人民による、</text>
</line>
</para>
<para lnum="9" snum="4">
<line lnum="9">
<text>人民のための政治。</text>
</line>
</para>
</block>
</block>
</bltxt>
含意タグのXML化
含意タグは metaタグに変換します。
行範囲タグ内に含意タグがあると、blockタグ内に metaタグを作成します。
【#タイトル】円周率の暗記
【#著者:山田太郎】
【#コメント:ここから囲み記事】
【-囲み記事】
【#コメント:3.14159265】
産医師異国に向かう。
【囲み記事-】
<?xml version="1.0" encoding="UTF-8"?>
<bltxt>
<meta tag="タイトル" lnum="1" snum="1">
<para lnum="1" snum="1">
<line lnum="1">
<text>円周率の暗記</text>
</line>
</para>
</meta>
<meta tag="著者" lnum="2" snum="1">
<attrs>
<attr>山田太郎</attr>
</attrs>
</meta>
<meta tag="コメント" lnum="4" snum="1">
<attrs>
<attr>ここから囲み記事</attr>
</attrs>
</meta>
<block tag="囲み記事" lnum="5" snum="1">
<meta tag="コメント" lnum="6" snum="2">
<attrs>
<attr>3.14159265</attr>
</attrs>
</meta>
<para lnum="6" snum="2">
<line lnum="7">
<text>産医師異国に向かう。</text>
</line>
</para>
</block>
</bltxt>
含意範囲タグのXML化
含意範囲タグはmetaタグに変換します。
タグ名はmetaタグのtag属性として保持します。
属性値はattrタグとしてmetaタグ内に保持します。
行範囲タグ内にある含意タグは、その行範囲タグに対応する blockタグ内に metaタグを設けます。
そして下人は高尾山へと姿を消した【註:消息】。
【*註記:消息】
正確には、そのような事実があったか確かめられていない。
【註記*】
【-囲み記事】
芥川龍之介の文章を参考とした。
【*コメント】
要出典明記。
【コメント*】
【囲み記事-】
<?xml version="1.0" encoding="UTF-8"?>
<bltxt>
<para lnum="1" snum="1">
<line lnum="1">
<text> そして下人は高尾山へと姿を消した</text>
<inline tag="註" lnum="1" snum="1">
<attrs>
<attr>消息</attr>
</attrs>
</inline>
<text>。</text>
</line>
</para>
<meta tag="註記" lnum="3" snum="1">
<attrs>
<attr>消息</attr>
</attrs>
<para lnum="3" snum="2">
<line lnum="4">
<text> 正確には、そのような事実があったか確かめられていない。</text>
</line>
</para>
</meta>
<block tag="囲み記事" lnum="7" snum="1">
<para lnum="7" snum="3">
<line lnum="8">
<text> 芥川龍之介の文章を参考とした。</text>
</line>
</para>
<meta tag="コメント" lnum="9" snum="1">
<para lnum="9" snum="4">
<line lnum="10">
<text> 要出典明記。</text>
</line>
</para>
</meta>
</block>
</bltxt>