[63] 
[DFN[[RUBY[H2H][えいちつーえいち]]]]
は、
[[平成時代]]中期に[[ウェブ日記]]や[[ウィキ]]風メモの記述に使われていた[[軽量マーク付け言語]]です。

* 紹介

[1] [[H2H]] は[[冬日]]の記述に使われている[[マーク付け言語]]です。
[Q@en[H2H]] はもともと [Q@en[[[HNF]] to [[HTML]]]]
という実装の名前でしたが、後に[[マーク付け言語]]の名前とされています。
この時新しい展開名を考えたような気もしますが、覚えていませんw

[2] [[H2H]] には [DFN@en[H2H/0.9]], [DFN@en[H2H/1.0]],
[DFN@en[H2H/2.0]] の3つの版があります。
[[H2H/2.0]] は今でいう [[wiki]] のようなものの記述言語として考えていたもので、
実装も仕様も固まっていませんでした。使われていたのは
[[H2H/0.9]] と [[H2H/1.0]] だけです。

[3] [[冬日]]は元々[[ハイパー日記システム]] ([[HNS]]) を使っていたので、
[[H2H/0.9]] は [[HNS]] の[[マーク付け言語]]である [[HNF]] 
の部分集合を独自に修正したものとなっています。
[[H2H]] の1つ目の [Q@en[H]] の元の由来は [[HNF]] でした。
実装も[[ハイパー日記システム]]に強く影響を受けています。

[4]
[[H2H/1.0]] はどうやら [[H2H/0.9]] と互換な拡張のようです。
実装は以前のものよりも拡張性を重視していますが、
依然[[ハイパー日記システム]]の影響を断ち切れていないのが藁えますw


* 構文

[5]
基本的なところは [[HNF]] を受け継いでいますが、
必ずしも同じではありません。

[6] '''行指向''':
[[マーク]]は1行で完結していなければなりません。

[7] '''魔法行''':
[[H2H/1.0]] では最初の行が [CODE@en[H2H/1.0]]
でなければなりません。そうでなければ、 [[H2H/0.9]]
とみなされます。

[8] '''頭部''':
最初の [CODE@en[OK]] の行までが[DFN[頭部]]となります。
その次に空行が来て、その後が本体になります。

頭部は零個以上の頭部変数、本体は零個以上の命令とデータで構成されます。

この構造は [[HNF]] に由来しています。

[9] '''頭部変数''':
頭部には[DFN[変数]]を1行に1つ記述できます。
これは [CODE(HTMLe)@en[[[meta]]]] [[要素型]]のようなもので、
名前、空白、値 (1文字以上) と順に記述します。
名前は1文字以上の大文字 (26種類) または数字 (10種類)
です。値は人間向けの自由な文字列です。
[[HNF]] に由来しています。

[[H2H/0.9]] ではリンク (>>11) が使えます。

[12] '''命令''':
行頭に大文字だけの語が現れると、[DFN[命令]]とみなします。
語の前に斜線があっても構いません。その場合、
[DFN[終了命令]]となります。斜線なしの命令は、
[DFN[開始命令]]またはその行だけの命令です。
その行だけか、終了命令と対になるか、
終了命令が省略可能かは、種類によって異なります。

命令の後には、値を零個以上指定できます。空白が区切りになります。
指定できる値の数は命令の種類によって決まっていて、
可変な場合もあります。最後の値は (空白があっても) 行末まで含みます。

[38] '''継続''':
[[H2H/1.0]] では、命令名と (あれば)
リンク星の前に [CODE[+]] を入れることができます。
これを入れると通常1行だけの命令を開始命令とし、
終了命令が現れるまで続けることができます。

[11] '''リンク''':
[[H2H/0.9]] の頭部変数と一部の命令は、命令名の直後に
[CODE[*]] を指定すると、1つ目の値としてリンク先を記述できます。
[[H2H/1.0]] では、どの命令 (終了命令を除きます。)
でも使えます。

;; 
これは、[[TomsoftDiarySystem]] ([[TDS]])
の[[マーク付け言語]]である [[tdf]] を参考に採用した機能です。

[37] '''参照''':
リンク先を指定する場所では、次の方法で参照先を記述します。
= [CODE[.]] は、ダミーで、リンク先指定なしとなります。
= [CODE[ [({](\d{4}),?(\d{2}),?(\d{2})(?:[i,]?(\d{2})(?:[s,]?(\d{2}))?)?[)}] ]]
に一致する文字列は、日記内への参照となります。
(解釈は >>29 と同様の方法によります。)
= [CODE[\?[({]([A-Za-z0-9_.-]+)[)}] ]]
に一致する文字列は、用語集への参照となります。
([[H2H/0.9]] のみです。)
= [CODE[\?\?(?:\{([A-Za-z0-9_.-]+)\})?[(]?([\x00-\xFF]+?)[)]?]]
に一致する文字列は、 [CODE(perl)[$1]] (既定値 = 既定の用語集) 
の用語集で指定された用語 [CODE(perl)[$2]]
への参照となります。 ([[H2H/1.0]] のみです。)
= その他は、 [[URI]] となります。

[39] '''引数''':
[[H2H/1.0]] では命令に[DFN[引数]]を指定できます。
リンク星がある場合、リンク先の前でも後ろでも構いませんが、
1命令に1つだけ指定できます。終了命令には指定できません。

引数は、 [CODE(char)[{]] ではじまり [CODE(char)[}]]
で終わる部分の中に書きます。引数は1個以上記述でき、
互いに [CODE(char)[,]] か [CODE(char)[;]] で区切ります。
引数の前後には空白を零個以上入れることができます。

引数は引数名と値で構成されます。引数名は小文字 (26種類)、
数字 (10種類)、 [CODE(char)[-]], [CODE(char)[_]]
の1文字以上の並びです。値は、 [CODE(char)[;]]、
[CODE(char)[,]], [CODE(char)[}]], [CODE(charname)@en[[[SPACE]]]]
を含まない場合、そのまま書けます。 [CODE(char)["]]
で囲むと、 [CODE(char)["]] を除く任意の文字列 (1文字以上)
を値とすることができます。ただし、実際には
[CODE(charname)@en[[[SPACE]]]] が含まれているのに括られていないデータがあるようです。

名前と値は [CODE[=>]] で区切ります。その前後には空白を零個以上入れることができます。
ただし、実際には [CODE[=]] や [CODE[:]] を使うデータがあるようです。

[36] '''注釈''':
[CODE[!]] ではじまり、空白が続く行全体は、[[注釈]]です。
[[HTML]] の[[注釈宣言]]に相当します。

[CODE[!#]] ではじまり、空白が続く行全体は、[[注釈]]です。
[[HTML]] に変換する場合は無視されます。

ということになっていたはずですが、空白が抜けているデータもあります。

[10] '''空白''':
空白として使用できるのは [CODE(charname)@en[[[SPACE]]]]
で、1文字以上連続して使えます。値の区切りとして使う時は、
値の個数が決まっている場合、最後の値の一部
(途中または最後の部分) として空白が使えます。

[13] '''データ''':
その他の文字列は[DFN[データ]]になります。

データや命令の値は、 [[HTML]] 変換時に必ずしも escape
されません。当初の意図はよくわかりませんが、
現在ではそういう仕様 ([[HTML]] [[タグ]]を書いてもよいもの)
と理解していますw

[56] '''改行''':
改行は、当初の仕様ではそのまま [[HTML]] に変換され、
[[HTML]] の表示時に ([[Webブラウザ]]) で場合によっては無視されるはずでしたが、
後の [[H2H/1.0]] 実装では無視されています。
このため、初期のデータの [CODE@en[[[PRE]]]]
[[要素]]は改行だけを使っていますが、
後のデータでは改行の前に必ず [[HTML]] の [CODE(HTML)@en[<[[br]]>]]
を入れています。

[[#comment]]


* 頭部変数

[14]
頭部変数は次のものが存在するようです。
いくつかは、[[ハイパー日記システム]]に由来し、
実際には使われていません。

;; [[ハイパー日記システム]]でも利用者 (日記の著者)
が自由に追加・編集できるようになっていますが、
[[H2H]] でも言語の機能ではなく、プロファイルの機能となっています。

,名前	,H2H/0.9 既定プロファイル	,H2H/1.0 冬日プロファイル	,説明
,[CODE[TENKI]]	,○	,○	,天気
,[CODE[BASHO]]	,○	,	,場所
,[CODE[TAION]]	,○	,	,体温
,[CODE[LUNCH]]	,○	,	,昼食
,[CODE[TAIJU]]	,○	,	,体重
,[CODE[SUIMIN]]	,○	,	,睡眠時間
,[CODE[BGM]]	,○	,	,背景音楽
,[CODE[HOSU]]	,○	,	,歩数
,[CODE[HON]]	,○	,	,読書
,[CODE[KITAKU]]	,○	,	,帰宅時間
,[CODE[WALK]]	,○	,	,散歩
,[CODE[RUN]]	,○	,	,ジョギング
,[CODE[KEYWORD]]	,○	,	,鍵語
,[CODE[CAT]]	,○	,	,分類
,[CODE[KION]]	,○	,○	,気温
,[CODE[T1]]	,○	,○	,1限
,[CODE[T2]]	,○	,○	,2限
,[CODE[T3]]	,○	,○	,3限
,[CODE[T4]]	,○	,○	,4限
,[CODE[T5]]	,○	,○	,5限
,[CODE[T6]]	,○	,○	,6限
,[CODE[T7]]	,○	,○	,7限
,[CODE[SP]]	,○	,○	,行事
,[CODE@en[THEME]]	,	,○	,話題


* 命令

[16] 説明の見方:
:命令名:行頭に指定する命令の名前。
:リンク星:開始命令名直後の [CODE[*]] の使用可否。
省略時は使用不可。
:終了命令:終了命令の存在。
:開始命令が閉じる要素:
開始命令が現れた時に開かれていれば閉じる要素の命令名。
特に記述が無い限り、記述された順に高々1回閉じようと試みます。
省略時はなし。
:終了命令が閉じる要素:
同様に、終了命令が現れた時に開かれていれば閉じる要素の命令名。
省略時はなし。
:文脈:その命令を使用できる場所。
[Q[その他]]とは [CODE@en[[[FN]]]]、[CODE@en[[[UL]]]]、
[CODE@en[[[OL]]]] を除く任意の場所。省略時は[Q[その他]]。
:版:定義されている版。[[HNF]] 由来のものはその旨。
:説明:意味など。

[40] [[H2H/1.0]] では、終了命令は命令名に関わらず
[CODE@en[[[P]]]] を閉じようと試みます。

[27]
:命令名:[CODE@en[[[ABBR]]]]
:終了命令:禁止
:版:[[H2H/0.9]]、[[H2H/1.0]]
:説明:[[略語]] ([CODE(HTMLe)@en[[[abbr]]]]
[[要素]]に相当)。

値を2つ指定しなければなりません。
1つ目は [CODE(HTMLe)@en[[[abbr]]]] [[要素]]の[[内容]]に、
2つ目は同じく [CODE(HTMLa)@en[[[title]]]] [[属性]]に相当します。

[26]
:命令名:[CODE@en[[[ACRONYM]]]]
:終了命令:禁止
:版:[[H2H/0.9]]、[[H2H/1.0]]
:説明:[CODE(HTMLe)@en[[[acronym]]]]
[[要素]]に相当。

値を2つ指定しなければなりません。
1つ目は [CODE(HTMLe)@en[[[acronym]]]] [[要素]]の[[内容]]に、
2つ目は同じく [CODE(HTMLa)@en[[[title]]]] [[属性]]に相当します。

[15]
:命令名:[CODE@en[[[CITE]]]]
:リンク星:指定可能
:終了命令:省略可能
:開始命令が閉じる要素:[CODE@en[[[PRE]]]]
:終了命令が閉じる要素:
[CODE@en[[[P]]]]、[CODE@en[[[PRE]]]]、[CODE@en[[[DIV]]]]、
[CODE@en[[[YAMI]]]]
:版:[[HNF]]、[[H2H/0.9]]、[[H2H/1.0]]
:説明:[[引用]]。[[要素型名]]に反して、 citation
ではなく quotation のために使います。

値を高々2つ指定できます。[CODE[*]] を指定した場合は、
値を最低1つ指定しなければなりません。

1つ目の値は、[[引用元]]の [[URI]] です。
([CODE(HTMLe)@en[[[blockquote]]]] [[要素]]の
[CODE(HTMLa)@en[[[cite]]]] [[属性]]に相当します。)
2つ目の値は、[[引用元]]の人間向け文字列による簡単な説明です。

実際のデータは星の有無と値の個数が混乱しているので、
[[URI]] らしきものを [[URI scheme]] 名で検出する必要があります。

値が零個のこともあります。

[42]
:命令名:[CODE@en[[[DD]]]]
:版:[[H2H/1.0]]
:説明:説明リスト説明 ([CODE(HTMLe)@en[[[dd]]]] に相当します)。

[45]
:命令名:[CODE@en[[[DEL]]]]
:版:[[H2H/1.0]]
:説明:削除 ([CODE(HTMLe)@en[[[del]]]] に相当します)。

[32]
:命令名:[CODE@en[[[DIV]]]]
:終了命令:省略可能
:開始命令が閉じる要素:[CODE@en[[[P]]]]
:終了命令が閉じる要素:[CODE@en[[[P]]]]、[CODE@en[[[PRE]]]]
:版:[[HNF]]、[[H2H/0.9]]、[[H2H/1.0]]
:説明:区間。

値を1つ指定しなければなりません。
値は [CODE(HTMLa)@en[[[class]]]] [[属性]]に相当します。

[43]
:命令名:[CODE@en[[[DL]]]]
:版:[[H2H/1.0]]
:説明:説明リスト ([CODE(HTMLe)@en[[[dl]]]] に相当します)。

[44]
:命令名:[CODE@en[[[DT]]]]
:版:[[H2H/1.0]]
:説明:説明リスト項目 ([CODE(HTMLe)@en[[[dt]]]] に相当します)。

[18]
:命令名:[CODE@en[[[FN]]]]
:終了命令:必須
:版:[[HNF]]、[[H2H/0.9]]、[[H2H/1.0]]
:説明:[[脚注]]。

[46]
:命令名:[CODE@en[[[INS]]]]
:版:[[H2H/1.0]]
:説明:削除 ([CODE(HTMLe)@en[[[ins]]]] に相当します)。

[29]
:命令名:[CODE@en[[[LDIARY]]]]
:終了命令:禁止
:文脈:
[CODE@en[[[LINK]]]], [CODE@en[[[LDIARY]]]],
[CODE@en[[[SEE]]]], [CODE@en[[[SEE]]]],
[CODE@en[[[PERSON]]]] の外 ([[H2H/1.0]])
:版:[[HNF]]、[[H2H/0.9]]、[[H2H/1.0]]
:説明:日記の記事の参照。

値を2つまたは4つ指定しなければなりません。

いずれの場合も、最後の値が参照文字列 ([CODE(HTMLe)@en[[[a]]]]
[[要素]]の[[内容]]に相当します。) です。

2つの1つ目は、 [CODE@en[[VAR[YYYY]][VAR[MM]][VAR[DD]]]]、
[CODE@en[[VAR[YYYY]][VAR[MM]][VAR[DD]]i[VAR[II]]]]、または
[CODE@en[[VAR[YYYY]][VAR[MM]][VAR[DD]]i[VAR[II]]s[VAR[SS]]]]
の形式とします。

4つの1つ目は [CODE@en[[VAR[YYYY]]]]、
2つ目は [CODE@en[[VAR[M]]]] (1桁又は2桁)、
3つ目は [CODE@en[[VAR[D]]]] (1桁又は2桁) の形式とします。

ただし、 [VAR[Y]] は年、[VAR[M]] は月、
[VAR[D]] は日、 [VAR[I]] は章、 [VAR[S]] は節とします。

[23]
:命令名:[CODE@en[[[LI]]]]
:リンク星:使用可能
:終了命令:禁止
:文脈:[CODE@en[[[UL]]]]、[CODE@en[[[OL]]]]
:版:[[HNF]]、[[H2H/0.9]]、[[H2H/1.0]]
:説明:リスト項目。

値を1つ指定できます。項目の値 ([CODE(HTMLe)@en[[[li]]]]
[[要素]]の[[内容]]に相当します。) を指定します。

リンク星を使用すると、項目の値の前にリンク先を指定できます。

[[H2H/1.0]] では、 [CODE@en[[[UL]]]] や [CODE@en[[[OL]]]]
の中で命令なしの文字列を記述すると、 [CODE@en[[[LI]]]]
命令が行頭に省略されているものとみなします。

[34]
:命令名:[CODE@en[[[LIMG]]]]
:終了命令:禁止
:版:[[HNF]]、[[H2H/0.9]]
:説明:[[画像]]。

値を4つ指定しなければなりません。
1つ目はリンク先です。2つ目は [CODE(HTMLa)@en[[[align]]]]
[[属性]]に相当する記号を指定しますが、[[H2H]]
では無視されます。3つ目は画像の指定です。
4つ目は[[代替文]] ([CODE(HTMLa)@en[[[alt]]]]
[[属性]]に相当します。) です。

[19]
:命令名:[CODE@en[[[LINK]]]]
:リンク星:使用可能
:終了命令:禁止
:文脈:[CODE@en[[[FN]]]]、その他 ([[H2H/0.9]]);
[CODE@en[[[LINK]]]], [CODE@en[[[LDIARY]]]],
[CODE@en[[[SEE]]]], [CODE@en[[[SEE]]]],
[CODE@en[[[PERSON]]]] の外 ([[H2H/1.0]])
:版:[[HNF]]、[[H2H/0.9]]、[[H2H/1.0]]
:説明:[[ハイパーリンク]]。

値を2つ指定しなければなりません。1つ目はリンク先、
2つ目は名札 ([CODE(HTMLa)@en[[[a]]]] [[要素]]の[[内容]]に相当します。)
です。

リンク星を使用した場合は、値は1つだけ指定しなければなりません。
値は名札です。

[35]
:命令名:[CODE@en[[[LMG]]]]
:終了命令:禁止
:版:[[H2H/0.9]]
:説明:[[画像]]。

値を2つ指定しなければなりません。
1つ目はリンク先かつ画像の場所です。
2つ目は[[代替文]] ([CODE(HTMLa)@en[[[alt]]]]
[[属性]]に相当します。) です。

[24]
:命令名:[CODE@en[[[NEW]]]]
:リンク星:使用可能
:終了命令:禁止
:開始命令が閉じる要素:[CODE@en[[[P]]]]、
[CODE@en[[[PRE]]]]、[CODE@en[[[DIV]]]]、
節、章 ([[H2H/0.9]]); すべて ([[H2H/1.0]])
:版:[[HNF]]、[[H2H/0.9]]、[[H2H/1.0]]
:説明:[[見出し]]。

新しい章の始まりとなります。

値を1つ指定しなければなりません。章の名前
([CODE(HTMLe)@en[[[h[VAR[n]]]]]] [[要素]]の[[内容]]に相当します。)
となります。

リンク星を使用すると、見出しの値の前にリンク先を指定できます。

[22]
:命令名:[CODE@en[[[OL]]]]
:終了命令:必須
:開始命令が閉じる要素:[CODE@en[[[PRE]]]]
:版:[[HNF]]、[[H2H/0.9]]、[[H2H/1.0]]
:説明:順序付きリスト。

[17]
:命令名:[CODE@en[[[P]]]]
:終了命令:省略可能
:開始命令が閉じる要素:[CODE@en[[[P]]]]、[CODE@en[[[PRE]]]]
:版:[[HNF]]、[[H2H/0.9]]、[[H2H/1.0]]
:説明:[[段落]]。

[28]
:命令名:[CODE@en[[[PERSON]]]]
:終了命令:禁止
:文脈:
[CODE@en[[[LINK]]]], [CODE@en[[[LDIARY]]]],
[CODE@en[[[SEE]]]], [CODE@en[[[SEE]]]],
[CODE@en[[[PERSON]]]] の外 ([[H2H/1.0]])
:版:[[H2H/0.9]]、[[H2H/1.0]]
:説明:[[人名]]。

値を2つ指定しなければなりません。
1つ目は人名録の項目名、2つ目は人名です。

[33]
:命令名:[CODE@en[[[PRE]]]]
:終了命令:省略可能
:開始命令が閉じる要素:[CODE@en[[[P]]]]
:版:[[HNF]]、[[H2H/0.9]]、[[H2H/1.0]]
:説明:[[整形済文章]]。

[47]
:命令名:[CODE@en[[[RB]]]]
:版:[[H2H/1.0]]
:説明:[[ルビ基底]]。

[48]
:命令名:[CODE@en[[[RT]]]]
:版:[[H2H/1.0]]
:説明:[[ルビ文]]。

[20]
:命令名:[CODE@en[[[RUBY]]]]
:終了命令:禁止
:版:[[H2H/0.9]]、[[H2H/1.0]]
:文脈:[CODE@en[[[FN]]]]、その他
:説明:[[ルビ]]。

値2を2つ指定しなければなりません。
1つ目は[[ルビ基底]] ([CODE(HTMLe)@en[[[rb]]]] に相当します。)、
2つ目は[[ルビ文]] ([CODE(HTMLe)@en[[[rt]]]] に相当します。) です。

[30]
:命令名:[CODE@en[[[SEE]]]]
:終了命令:禁止
:文脈:
[CODE@en[[[LINK]]]], [CODE@en[[[LDIARY]]]],
[CODE@en[[[SEE]]]], [CODE@en[[[SEE]]]],
[CODE@en[[[PERSON]]]] の外 ([[H2H/1.0]])
:版:[[H2H/0.9]]、[[H2H/1.0]]
:説明:用語集への参照。

値を2つ指定しなければなりません。
1つ目は用語集の項目、2つ目は本文に示す用語
([CODE(HTMLe)@en[[[a]]]] [[要素]]の[[内容]]に相当します。) です。

[49]
:命令名:[CODE@en[[[SPAN]]]]
:版:[[H2H/1.0]]
:説明:[CODE(HTMLe)@en[[[span]]]] に相当します。

[50]
:命令名:[CODE@en[[[STRONG]]]]
:版:[[H2H/1.0]]
:説明:[CODE(HTMLe)@en[[[strong]]]] に相当します。

[31]
:命令名:[CODE@en[[[SUB]]]]
:リンク星:使用可能
:終了命令:禁止
:開始命令が閉じる要素:[CODE@en[[[P]]]]、
[CODE@en[[[PRE]]]]、[CODE@en[[[DIV]]]]、
節 ([[H2H/0.9]]); 章以外 ([[H2H/1.0]])
:文脈:その他 ([CODE@en[[[NEW]]]] が出現した後)
:版:[[HNF]]、[[H2H/0.9]]、[[H2H/1.0]]
:説明:[[小見出し]]。

新しい節の始まりとなります。

値を1つ指定しなければなりません。章の名前
([CODE(HTMLe)@en[[[h[VAR[n]]]]]] [[要素]]の[[内容]]に相当します。)
となります。

リンク星を使用すると、見出しの値の前にリンク先を指定できます。

[21]
:命令名:[CODE@en[[[UL]]]]
:終了命令:必須
:開始命令が閉じる要素:[CODE@en[[[PRE]]]]
:版:[[HNF]]、[[H2H/0.9]]、[[H2H/1.0]]
:説明:順序なしリスト。

[25]
:命令名:[CODE@en[[[YAMI]]]]
:版:[[H2H/0.9]]、[[H2H/1.0]]
:説明:すぐに読めない状態にするべき文章。

値を1つ指定して構いません。

値を1つ指定する場合は、終了命令は存在しません。
その値が要素の内容に相当します。[[行内要素]]として扱われます。

値を指定しない場合は、終了命令までが要素の内容となります。
[CODE@en[[[YAMI]]]] [[要素]]が開かれていれば、
開始命令により閉じられます。
[[ブロック水準要素]]として扱われます。

[53]
[[H2H/1.0]] は命令毎に入れ子やデータが
[[HTML]] として解釈されるかを制御できるようですが、
よくわかりませんwwww

[57]

- 終了タグを見つけたら、開いている要素のうち要素型が一致するものが見つかるまで閉じる
- 章と節はどこに挿入するかを固定する

という方針で行けばうまくいくみたいw

([[名無しさん]])

[[#comment]]


* 引数

[41]
,命令	,引数名	,説明
,[CODE@en[[[NEW]]]]	,[CODE@en[[[cat]]]]	,分類 ([CODE(charname)@en[[[COMMA]]]] と零個以上の空白区切り)
,[VAR[*]]	,[CODE@en[[[class]]]]	,[CODE(HTMLa)@en[[[class]]]] に相当
,[VAR[*]]	,[CODE@en[[[content-type]]]]	,"[CODE(MIME)@en[[[text/html]]]], [CODE(MIME)@en[[[text/x-h2h+html]]]]"
,[VAR[*]]	,[CODE@en[[[id]]]]	,[CODE(HTMLa)@en[[[id]]]] に相当
,[VAR[*]]	,[CODE@en[[[lang]]]]	,[CODE(HTMLa)@en[[[lang]]]] に相当
,[CODE@en[[[STRONG]]]]	,[CODE@en[[[level]]]]	,強調度 (整数)
,[CODE@en[[[SP]]]] (頭部変数)	,[CODE@en[[[place]]]]	,場所 (人間向け)
,[CODE@en[[[RUBY]]]]	,[CODE@en[[[position]]]]	,[CODE@en[[[below]]]]
,[CODE@en[[[CITE]]]]	,[CODE(HTMLa)@en[[[source]]]]	,出典 (人間向け)
,[VAR[*]]	,[CODE@en[[[style]]]]	,[CODE(HTMLa)@en[[[style]]]] に相当
,[CODE@en[[[TAION]]]] (頭部変数)	,[CODE@en[[[Time]]]]	,[CODE(example)[16:00 +0900]] など
,[CODE@en[[[SP]]]] (頭部変数)	,[CODE@en[[[time]]]]	,時刻 (人間向け)
,[VAR[*]]	,[CODE@en[[[title]]]]	,[CODE(HTMLa)@en[[[title]]]] に相当
,[CODE@en[[[CITE]]]]	,[CODE@en[[[uri]]]]	,[CODE(HTMLa)@en[[[cite]]]] に相当

* MIME 型

[60] [DFN[[CODE[text/x-h2h]]]], [DFN[[CODE[text/x-h2h+html]]]] が用いられました。

* 拡張子

[52] [DFN[[CODE[.h2h]]]] を本来用いるべきところですが、[[歴史的経緯]]より
[CODE[.hnf]] もよく用いられました。

* 実装

[58]
[CITE[H2H Classic Implementation]] ([CODE[2004-10-25 09:03:27 +09:00]] 版) <https://suika.suikawiki.org/www/markup/h2h/implementation/classic/>

2001年3月以来の最初の [[H2H]] の実装 (2003年には既に事実上放棄されているが、
2008年現在なお一部で使っている)。

[59]
<https://suika.suikawiki.org/www/markup/html/whatpm/Whatpm/H2H.pm>

[[Whatpm]] にこっそり入れてある最新の実装。

;; 
[61] 
元々は [[manakai]] に入っていた:
<https://suika.suikawiki.org/gate/cvs/messaging/manakai/lib/Message/Markup/Attic/H2H.dis>。


[62] [CITE@en[wakaba/h2h]], [TIME[2023-04-18T03:25:58.000Z]] <https://github.com/wakaba/h2h>


* 歴史

[51] [CODE[draft-h2h.txt]] [TIME[2001/6][2001-06]]

[54] 実際に使われたことのある命令・頭部変数一覧:
[PRE[
ABBR
ACRONYM
CITE
DD
DEL
DIV
DL
DT
EM
FN
HOUR
INS
KION
LDIARY
LI
LIMG
LINK
LMG
LNEW
LUNCH
NEW
OK
OL
P
PERSON
PRE
RIBU ← [CODE@en[[[RUBY]]]] のつもり
RUBY
SEE
SP
SPAN
STRONG
SUB
T1
T2
T3
T4
T5
T6
T7
TAION
TENKI
THEME
UL
YAMI
XML ← データとして
/CITE
/DIV
/DL
/FN
/INS
/LI
/LINK
/OL
/P
/PRE
/STRONG
/UL
/YAMI
]PRE]

[CODE[+]] がつかわれたことがあるのは  [CODE@en[[[LINK]]]]
と [CODE@en[[[STRONG]]]] だけ。

[CODE[*]] が使われたことがあるのは [CODE@en[[[T1]]]]〜[CODE@en[[[SP]]]],
[CODE@en[[[SUB]]]], [CODE@en[[[SP]]]], [CODE@en[[[NEW]]]],
[CODE@en[[[LINK]]]], [CODE@en[[[LI]]]], [CODE@en[[CITE]]]]。

[55] 今までに使用された [[HTML]] 系マーク:
[PRE[
<a>
<a href>
</a>
<abbr>
<abbr lang>
<abbr title>
</abbr>
<acronym>
<acronym lang>
<acronym title>
</acronym>
<blockquote>
</blockquote>
<br>
<br/>
<caption>
</caption>
<code>
<code class>
<code lang>
<code wbradded> ← コピペのミス
</code>
<dd>
</dd>
<del>
</del>
<dfn>
</dfn>
<div>
<div style>
</div>
<dl>
</dl>
<dt>
</dt>
<em>
</em>
<form>
<form accept-charset>
<form action>
<form method>
</form>
<h1>
<h1 style>
</h1>
<h2>
</h2>
<h3>
</h3>
<h4>
</h4>
<img>
<img/>
<img alt>
<img class>
<img src>
<img style>
<img title>
<img type>
<input/>
<input accesskey>
<input name>
<input type>
<input value>
<ins>
</ins>
<kbd>
</kbd>
<label>
<label for>
</label>
<li>
</li>
<ol>
</ol>
<p>
<p id>
<p style>
</p>
<pre>
<pre class>
<pre style>
</pre>
<q>
<q cite>
</q>
<rb>
</rb>
<rp>
</rp>
<rt>
</rt>
<ruby>
</ruby>
<span>
<span class>
<span lang>
<span onclick>
<span style>
<span xml:lang>
</span>
<strong>
</strong>
<sub>
</sub>
<sup>
</sup>
<table>
<table style>
<tbody>
</tbody>
<td>
<td style>
<td title> ← <td abbr> の逆
</td>
<th>
<th colspan>
<th scope>
<th style>
</th>
<table style>
<table summary>
</table>
<thead>
</thead>
<tr>
</tr>
<ul>
</ul>
<var>
<var class>
<var lang>
<var title>
</var>
<[VAR@en[local-part@domain.example]]> ← 電子メイル・アドレス
<!-- -->
<!--#exec cmd-->
& ← LINK 命令の1つ目の値 (URI) 中, NEW 命令のリンク値 (URI) 中, 本文中
&& ← 本文中の論理積演算子
&ame; ← 雨マーク
&amp; ← 本文中, CITE 命令の出典 URI の値中, LINK 命令の2つ目の値 (名札) 中, NEW 命令のリンク値 (URI) 中
&gt;
&hare; ← 晴マーク
&harekumori; ← 晴/曇マーク
&hearts;
&kumori; ← 曇マーク
&lt;
&quot;
&reg;
&yuki; ← 雪マーク
&#[VAR[dd]]; ← 数値文字参照
&#[VAR[ddddd]]; ← 数値文字参照
&#x[VAR[HH]]; ← 十六進数文字参照
&#x[VAR[HHHH]]; ← 十六進数文字参照
&#x[VAR[hhhh]]; ← 十六進数文字参照
]PRE]


* メモ