=クリップボード用HTML 1.0
==概要
クリップボード用「Hyper Text Mediate Language」、略してクリップボード用HTMLです。
HTML文書に整形する以前の一時的な「メモ」をクリップボードにコピーして、クリップボードのデータをスクリプト等(クリップボード用HTMLの実装)によってHTML文書の断片に変換する為の書式です。実際のスクリプトの例はこの文書の最後に載せてあります。
アイデアをメモする過程とタグを入力する過程を同時に行いたくない場合、あるいは、IMEなどの辞書を利用して記号をタグに変換するのが面倒な場合に好都合です。
===クリップボード用HTMLの簡単な例
例えば、フライドポテトの作り方を次のようにメモしたとします:
\
1. 水で冷やす
2. 茹でる
3. 油で揚げる
4. 油で揚げる(高温)
5. 塩をふる
\
これは、クリップボード用HTMLの実装によって次のように変換されます:
\
- 水で冷やす
- 茹でる
- 油で揚げる
- 油で揚げる(高温)
- 塩をふる
\
===実際的な例
この文書も、下書きをクリップボード用HTMLで書きました。
・『この文書の下書き』@href'clipboardhtml.txt'
==クリップボード用HTMLの意義と目的(やや形式的に)
推敲する以前のメモというものは変更や修正を必要とすることが多いですから、HTMLとしてマークアップしてしまうと可読性が落ち、修正も面倒になる場合があります。したがって推敲が一通り終わった段階で、HTML文書に変換できた方が良い筈です。
そして、HTML文書に変換する為にはその「メモ」もある一定の書式に従っている必要があります。その「書式」の一つとして「クリップボード用HTML」を考えたわけです。
===本末転倒にならぬ為に
HTML文書に整形する面倒を省く為にこの書式を考えるのですから、この書式は出来る限り「規則」を意識せずに*自然に*、*素早く*記述でき、*可読性の高い*ものにしなければなりません。
このバージョン(1.0)のクリップボード用HTMLにおける規則の自然性、文書の可読性、そして速記性は、残念ながら今現在の私のPython(スクリプト言語)のスキルに比例しています。また、日本語の中黒(・)を箇条書きリストとして認識するなど、i18nは全く考慮していません。
===クリップボード用HTMLが目指さぬもの
====保存用のフォーマットではない
まず文書を保存するフォーマットは目指しません。飽くまでも一時的なメモの書式として考えています。
====文章以外のオブジェクトの略記法ではない
アイデアの一時的なメモ用のフォーマットですから、フォーム部品や表(テーブル)、ヘッダ(head要素)等の略記法は目指しません。しかし見出しや段落、箇条書きリスト等の記法を規定します。
==文法
===ブロック要素
====見出し(hn要素)
ある一つの行が次の条件を満たした時、それは見出しとなります:
・一つ以上のイコール([==])で始まっている
・句読点([,\.。、])で終わらない
\
=見出し(見出し
)
==見出し(見出し
)
\
イコールの数は見出しレベルを表します。
====段落引用(blockquote要素)
空行を挟まない連続する一つ以上の行が、次の条件を満たした時、それは段落引用となります:
・>(grater than)で始まっている
\
>引用
>>孫引き
>引用
\
これはHTMLにおける次の表記と同じです。
\
引用
孫引き
引用
\
段落引用内部では他のあらゆる表記が可能です。まず、> で始まる行を見つけると、blockquote要素が開始されます。そして以降の行が > で始まる限り、先頭の > を取り除いたものをスタックに入れ、スタックに入れられたものを各行として処理し、最後にblockquote要素を終了する形で実現しています(実装の一例)。
====順不同リスト(ul要素)
空行を挟まない一つ以上の連続する行が次の条件を満たす時、それは順不同リストとなります:
・中黒(・)で始まっている
\
・リストアイテム
・リストアイテム
\
上はHTMLにおける次の表記と同じです:
\
\
タブ文字でインデントすることで、リストの入れ子を作ることが出来ます:
\
・リストアイテム
・リストアイテム
・リストアイテム
・リストアイテム
\
上はHTMLにおける次の表記と同じです:
\
\
====順序型リスト(ol要素)
空行を挟まない**二つ**以上の連続する行が次の条件を満たす時、それは順序型リストとなります:
・\d\.で始まっている
\
1. リストアイテム
2. リストアイテム
\
上はHTMLにおける次の表記と同じです:
\
- リストアイテム
- リストアイテム
\
タブ文字でインデントすることで、リストの入れ子を作ることが出来ます。順不同リストと同様です。
====整形済みテキスト(pre要素)
バックスラッシュのみの行で囲まれた部分は、整形済みテキストとして扱われ、記法は無視されます:
\
\\
=見出し?
\\
\
上はHTMLにおける次の表記と同じです:
\
=見出し?
\
====address要素
次の条件を満たすとき、その範囲はHTMLのaddress要素となります:
・-- という行以降、かつ、空行あるいはEOFまでの範囲
\
--
Sophisme
w650s@mcn.ne.jp
\
上はHTMLにおける次の表記と同じです:
\
Sophisme
w650s@mcn.ne.jp
\
====定義リストグループ(dl, dt, dd要素)
定義リストは、ある行の次にタブ文字で字下げされている行がある場合、前者が被定義語句(dt要素)、後者が定義語句(dd要素)となり、空行が現れるまで単一の定義リスト(dl要素)として扱われます。
\
被定義語句1
定義語句1
被定義語句2
定義語句2
\
\
- 被定義語句1
- 定義語句1
- 被定義語句2
- 定義語句2
\
====罫線(hr要素)
同じ文字のみが7つ以上連続している行は、罫線となります:
\
------------------
\
====段落(p要素)
以上のどれにも該当しないものは、段落となります。
\
これは段落です。
空行が現れるまで一つの段落です。
\
上はHTMLにおける次の表記と同じです。
\
これは段落です。空行が現れるまで一つの段落です。
\
====ブロック要素の属性
ブロック要素の属性は、@属性名:属性値 という行で示します。
\
@cite:http://example.com/
\
この属性は、次に登場するブロック要素に「消費」されます。
\
@cite:http://example.com/
>引用
\
\
引用
\
\
@cite:http://example.com/
>@cite:http://google.com/
>>孫引き
>引用
\
\
孫引き
引用
\
仕様上、属性をつけることの出来ないブロック要素もあります(li要素、dt、dd要素など)。
===インライン要素
====ハイパーリンク(a要素)
ハイパーリンク用の始点アンカーは二重鍵括弧 『 と 』 で括ります。href属性のつけ方はインライン要素の属性を参照してください。
\
段落中に『アンカー』が。
\
\
段落中にアンカーが。
\
因みに論文等では、参考文献のタイトルは二重鍵括弧でくくることになっています。
====強調(em要素、strong要素)
強調はアスタリスクで括ります。* と * で括ればem要素、** と **で括ればstrong要素です。入れ子にすることは出来ません。
\
・リスト項目内に*強調*が
\
\
\
====引用句(q要素)
ダブルクォーテーションでくくれば、引用句になります。
\
段落中に"引用句"が。
\
\
段落中に引用句
が。
\
cite属性のつけ方はインライン要素の属性を参照してください。
====その他のインライン要素
a、em、strong、q 以外のインライン要素は、HTMLでそのまま書きます。
====インライン要素の属性
インライン要素の属性は、インライン要素の直後に @属性名'属性値' または @属性値"属性値" と書いて明示します。
\
段落中に『アンカー』@href'http://example.com/'が。
\
\
段落中にアンカーが。
\
複数の属性を付けるには続けて属性を明示します。
\
段落中に『アンカー』@href'http://example.com'@hreflang'en'が。
\
\
段落中にアンカーが。
\
==試験的実装(Windows用)
・『cbhtml0-1-0.zip』@href'/binary/arc/20040605/cbhtml0-1-0.zip'
『Python』@href'http://www.python.org/'が必要です(2.3以降推奨)。Pythonのバージョンによってはwin32allも必要かもしれません。
===典型的な使用方法
====準備
1. sample.batのショートカットをデスクトップに置きます(sample.batのショートカット)
2. ショートカット上で右クリックし、ショートカットタブを開き、ショートカットキーに C(一例) と入力します(この場合Ctrl + Alt + C が入力欄に現れます)
====確認
1. テキストエディタ等で、「=h1」という文字列を作成し、クリップボードにコピーします
2. Ctrlキーと Altキー を同時押ししながら、Cキーを押します
3. テキストエディタに貼り付けを行います
4. <h1>h1</h1> という文字列が貼り付けられる筈です