文書を表す二つの形式
Markdown では短い記号で見出し、強調、リスト、リンクを表します。HTML は h2、strong、ul、a などの要素名で同じ構造を示します。レンダラーは文脈に沿って Markdown を解釈して HTML を作るので、アスタリスクやハッシュ記号を機械的に置換するだけではありません。普通の文中にあるハッシュ記号と、行頭にある見出し記号は意味が違います。HTML の属性、要素の入れ子、ブラウザーの解析規則には Markdown の省略記法では表せない部分もあります。
元の文章をプレーンテキストで簡単に編集したいなら Markdown を選びます。送り先が明示的な要素を求める場合や、ブラウザーに渡すマークアップを調べたい場合は HTML を使います。変換前に送り先が受け付ける Markdown の方言を確認してください。MultiVerto が双方向で扱うのは、見出し、段落、簡単な箇条書き、強調、リンク、インラインコードという明示された一部です。フェンス付きコードブロックは HTML へ向かう方向だけで働きます。非対応の構文は拒否されるものも、文字通りのテキストとして残るものもあります。
具体的な文書を往復変換する
「## メモ」という見出しを書き、空行の後に「**準備できた**下書きと[出典](https://example.com)。」と入力します。Markdown から HTML へのツールは、「メモ」を h2 要素にし、「準備できた」を strong 要素で囲んだ段落を作ります。ブラウザーには見出しと太字の語が表示され、HTML ソースには要素の境界が残ります。リンク先は画面上の句読記号ではなく、HTML の href 属性として保持されます。
次に、対応する HTML を HTML から Markdown へのツールへ入れます。h2 要素は Markdown の見出し、strong 要素は二つずつのアスタリスク、リンクは角括弧のテキストと URL として表せます。往復変換後の見た目が同じでも、空白、改行、元のソースの書き方は異なる場合があります。元の Markdown とバイト単位で一致するかだけでなく、見える構造とリンク先を比べてください。
- Markdown:## メモ、**準備できた**、リンク
- HTML:h2 要素、strong 要素、a 要素
- Markdown に戻して見出し・強調・リンクを確かめる
往復変換で失われ得る情報
HTML には、Markdown で簡単に表せない構造や属性があります。スタイル付きの span、表、独自の data 属性、入れ子のリストは、HTML から Markdown への変換で保持できない場合があり、このローカルツールはそのような入力の多くを拒否します。逆方向でも、Markdown パーサーによって表、タスクリスト、引用ブロック、生の HTML への対応が異なります。MultiVerto は、出力を黙って作り上げる代わりに、対応しない構文の一部を拒否します。したがって、対応範囲内の小さな例を変換できても、複雑な文書全体を正しく変換できる保証にはなりません。
対応する構造でも書き方は一通りではありません。HTML の strong 要素と b 要素はどちらもアスタリスクで囲む強調へ変わり得るため、元のタグの選択は失われます。ブラウザーが不正な HTML を補修する場合もあります。公開前には生成されたマークアップを読み、目的のシステムで描画して確認してください。コメント、レイアウトの判断、属性を復元できるよう、元のファイルも保存します。
エスケープは別の操作
表示のために HTML の文字をエンコードすることと、Markdown を HTML の構造に変換することは違います。ページで <h2>メモ</h2> という文字列そのものを見せたいなら、山括弧を HTML の文字参照で表すか、信頼できるコード表示領域を使います。見出しとして表示したいなら、実際の h2 要素を生成します。リンク先の HTML 文字参照エンコーダーが扱うのはテキストの表現で、Markdown 変換器は要素を作ります。どちらの使い方でも、利用者が渡した内容を信頼できるものとして扱ってはいけません。
このローカル変換ツールは対応する Markdown の範囲で通常のテキストをエスケープします。しかし、任意の書き手がリンクやマークアップを入力できる公開環境では、保守されているパーサーと適切なサニタイザーが必要です。目的の環境で許される URL とタグを確認し、小さな例を変換して HTML ソースと表示結果を点検してください。逆変換で失われる機能があるなら、表現力の高い元データを正式な版として保管します。