<A href="../"> 戻る | | → | <A href="../"> 戻る </A>| |
<TABLE> <TR><TD> </TD></TR> | |
→ |
<TABLE> <TR><TD> </TD></TR> </TABLE>| |
<STRONG> 強調 | | → | <STRONG> 強調 </STRONG>| |
このように、基本的には 開始タグ→内容→終了タグ の順で入力するスタイルを想定しています。
<STRONG>| | → | <STRONG>|</STRONG> |
開始タグ→終了タグ→内容 の順で入力するスタイルではこの方法が便利です。
設定はマクロ本体の冒頭部分を書き換えることで行います。
// (1) 終了タグを省略する: $OmitEndTag = ""; // (2) 終了タグなし: $MustOmitted = ""; // (3) 終了タグ省略可: $MightOmitted = "dt dd li p option td th tr colgroup tbody thead tfoot head body html";
(1) はこのマクロを使ってあなたが書くタグについての設定です。終了タグを(自分では)書かない要素があれば (1) に追加してください。追加するときは " " 内に要素名を半角小文字・半角スペース区切りで書き並べます。
<UL> <LI> リストアイテム | |
→ | <UL> <LI> リストアイテム </LI>| |
<UL> <LI> リストアイテム </UL>| |
|
デフォルト | li を追加したとき |
(2), (3) は対象とする文書にすでに書かれているタグについての設定です。
#SmartIndent = yes;
インデントの深さを自動的に揃える機能です。 yes または no を指定します。 yes にすると C 言語用のインデントで "}" を入力したときと同じように振る舞います。
終了タグがない要素を次の個所に追加してください。(たとえば bgsound spacer wbr
など)
$OmitEndTag = " br img hr col input area param basefont base meta link isindex frame " + $OmitEndTag + " "; $MustOmitted = " br img hr col input area param basefont base meta link isindex frame " + $MustOmitted + " ";
また、 $AnyTag
の正規表現がすべての要素名にマッチするようにしてください。
$AnyTag = "</?[A-Za-z][A-Za-z0-9:_.-]*" + $Delimiter;
An end tag closes, back to the matching start tag, all unclosed intervening start tags with omitted end tags.(the SGML standard, section 7.5.1) つまり、入れ子の内側に閉じていない要素があっても無視しますよ、ということです。
<P> <EM> <BIG> </EM> | | → | <P> <EM> <BIG> </EM> </P>| |
<HTML> <TITLE> </TITLE> (BODY 要素の開始タグを省略) </BODY> | |
→ | エラー |
<DIV> <P> <EM> </P> </EM>| | → | エラー |
<DIV> <P> <HR> | |
→ |
<DIV> <P> <HR> </DIV>| |
<DIV> <P> <HR> </DIV>| |
<DIV> <P> <HR> </P>| |
||
正しい実行結果 | p が (2) に 含まれているとき(正) |
p が (2) に 含まれていないとき(誤) |
P 要素はブロック要素を含むことができないので、上の例では HR 要素の前で P 要素が暗黙的に閉じて(=終了タグが省略されて)います。したがってカーソル位置には </DIV> を挿入するのが正当ですが、このマクロは「P 要素はブロック要素を含むことができない」なんてことは知らないので、「(2) 終了タグなし」の設定に p が含まれていないとカーソル位置に </P> が挿入されてしまいます。もうひとつ騙されそうな例を挙げておきましょう。
<DL> <DT> <DD> </DD> | |
→ |
<DL> <DT> <DD> </DD> </DL>| |
<DL> <DT> <DD> </DD> </DL>| |
<DL> <DT> <DD> </DD> </DT>| |
||
正しい実行結果 | dt が (2) に 含まれているとき(正) |
dt が (2) に 含まれていないとき(誤) |
<P> <!-- <EM> --> | | → | <P> <!-- <EM> --> </EM>| |
同様に、文字列リテラル・埋め込みスクリプトなどの中にあるタグ(のような文字列)も、地の文に書かれている(本物の)タグと区別できません。「<」「>」は、文字列リテラル中では文字参照を使って「<」「>」と書きましょう。埋め込みスクリプト中では比較演算子の両側にスペースを入れるようにしましょう。要は「<」とアルファベットが密着しないようにすれば大丈夫です。スクリプト中の文字列リテラルは……どうしましょうね? (^^;
br
を $OmitEndTag
と $MustOmitted
から削除してください。
<div> <a name="section1" /> | | → | <div> <a name="section1" /> </a>| |
バグ報告・提案・質問・ツッコミなどは 談話室 へどうぞ。