軽量マークアップ言語(LML)は、シンプルマークアップ言語またはヒューメインマークアップ言語とも呼ばれ、シンプルで控えめな構文を持つマークアップ言語です。汎用的なテキストエディタで簡単に記述でき、そのままの形式でも読みやすいように設計されています。軽量マークアップ言語は、最終的なレンダリング出力だけでなく、生の文書も読み取る必要があるアプリケーションで使用されます。
例えば、ソフトウェアライブラリをダウンロードする人は、ドキュメントをウェブブラウザではなくテキストエディタで読みたいと思うかもしれません。このような言語のもう一つの用途は、ブログやWikiといったウェブベースの出版におけるデータ入力です。これらの入力インターフェースはシンプルなテキストボックスです。サーバーソフトウェアは入力されたデータをHTMLなどの一般的なドキュメントマークアップ言語に変換します。
軽量マークアップ言語はもともと、文字を斜体や太字で表示できないテキストのみのディスプレイで使用されていたため、こうした情報を伝達するための非公式な方法を開発する必要がありました。この書式設定の選択は、当然のことながら、プレーンテキストの電子メール通信にも引き継がれました。コンソールブラウザも同様の表示規則に頼る場合があります。
1986年に制定された国際標準SGMLは、文法とタグの含意を用いて軽量マークアップ言語を定義および解析する機能を提供しました。1998年のW3C XMLは、これらの機能を省略したSGMLのプロファイルです。しかしながら、以下に挙げる言語のいずれについても、SGML文書型定義(DTD)は知られていません。
軽量マークアップ言語は、タグの種類によって分類できます。HTML ( ) と同様に、一部の言語では開始タグと終了タグに共通のフォーマットを持つ名前付き要素を使用します(例:BBCode)。一方、本格的な軽量マークアップ言語では、タグに使用できるのはASCII形式の句読点とその他の非文字記号に制限されています。また、両方のスタイルを混在させる言語(例:Textile)や、埋め込みHTML(例:Markdown )をサポートし、カスタム要素で拡張できる言語(例: MediaWiki )もあります。
<b>bold</b> [b]bold[/b] bq. <ref>'''source'''</ref>
ほとんどの言語では、行またはブロックのマークアップと、短いテキスト範囲のマークアップを区別しますが、インライン マークアップのみをサポートする言語もあります。
マークアップ言語の中には、コンピュータコードの文書化(例:POD、reST、RD)や特定の出力形式(通常はHTMLまたはLaTeX)への変換など、特定の目的に特化したものがありますが、より汎用的な用途を持つものもあります。これには、テキスト表示を重視するか、データのシリアル化を重視するかが含まれます。[説明が必要]
プレゼンテーション指向の言語には、AsciiDoc、atx、BBCode、Creole、 Crossmark 、 Djot 、 Epytext 、Haml、JsonML、MakeDoc、Markdown、Org-mode、POD (Perl)、reST (Python)、RD (Ruby)、Setext、SiSU、SPIP、 Xupl 、Texy!、 Textile 、txt2tags、UDO、Wikitextなどがあります。
データシリアル化指向の言語には、Curl (同形言語ですが JSON も読み取り、すべてのオブジェクトがシリアル化されます)、JSON、YAMLなどがあります。
Markdown 独自の構文では、クラス属性や id 属性はサポートされていません。ただし、Markdown はネイティブ HTML コードの組み込みをサポートしているため、これらの機能は直接 HTML を使用して実装できます。(一部の拡張機能ではこれらの機能がサポートされている場合があります。)
txt2tagsの独自の構文はクラス属性やID属性をサポートしていません。しかし、txt2tagsはタグ付き領域にネイティブHTMLコードを含めることをサポートしているので、HTMLターゲットに保存するときに直接HTMLを使用してこれらの機能を実装することができます。[ 26 ]
DokuWikiはHTMLのインポートをネイティブにサポートしていませんが、HTMLからDokuWikiへのコンバーターとインポーターが存在し、公式ドキュメントに記載されています。[ 27 ] DokuWikiはclass属性やid属性をサポートしていませんが、HTMLコードをサポートするように設定することができ、両方の機能をサポートしています。HTMLコードのサポートは、リリース2023-04-04より前に組み込まれていました。[ 28 ]それ以降のバージョンでは、プラグインを通じてHTMLコードのサポートを実現できますが、推奨されていません。[ 28 ]
通常は斜体や太字のテキストを生成すると記載されていますが、軽量マークアッププロセッサの多くはセマンティックHTML要素を出力します。等幅テキストは、セマンティック要素またはプレゼンテーション要素のいずれかになりますem。Textileのように区別している言語や、Texyのようにユーザーが簡単に出力を設定できる言語はほとんどありません。
strongcodett
LMLは複数単語のマークアップにおいて、単語間のスペース(中置)をマークアップ文字で置き換える必要がある場合があり、言語によって異なる場合があります。接頭辞と接尾辞として1文字のみを必要とする言語もあれば、2文字、あるいは3文字を必要とする言語もあります。また、強調レベルの違いなど、意味がわずかに異なる両方をサポートする言語もあります。
Gemtext にはインライン フォーマットがないので、等幅テキスト (Gemtext のコンテキストではフォーマット済みテキストと呼ばれます) には開始と終了が```独自の行に存在する必要があります。
HTML では、テキストは<em>および<strong>要素タイプで強調されますが、 および<i>は<b>伝統的にテキストをそれぞれ斜体または太字にマークアップします。
Microsoft WordとOutlook、そして同様のユーザーエクスペリエンスを目指す他のワードプロセッサやメールクライアントは、太字にはアスタリスク、斜体にはアンダースコアを使用するという基本的な慣例をサポートしています。Wordではこれらの文字は削除されますが、Outlookでは保持されます。
HTMLでは、削除または挿入されたテキストはそれぞれ 要素タイプと 要素タイプでマークアップされます<del>。<ins>ただし、取り消し線や下線が引かれたテキスト範囲には、従来の 要素タイプ<s>や要素<strike>タイプ<u>も引き続き使用できます。
AsciiDoc、ATX、Creole、MediaWiki、PmWiki、reST、Slack、Textile、WhatsAppは、テキストに下線を引くための専用マークアップをサポートしていません。ただし、Textileは+inserted+構文による挿入をサポートしています。
ATX、Creole、MediaWiki、PmWiki、reST、Setext は、テキストを取り消し線にするための専用マークアップをサポートしていません。
DokuWiki は、埋め込み HTML が無効になっている場合でも、HTML のような<del>stricken</del>構文をサポートします。
AsciiDoc は、組み込みのテキスト span [ c ]プレフィックスを通じて、強調テキストをサポートします[.line-through]#stricken#。
引用符で囲まれたコンピュータコードは、伝統的にタイプライターのようなフォントで表現され、各文字は同じ幅で固定されています。HTMLでは、この用途のために、セマンティック要素<code>と、非推奨のプレゼンテーション<tt>要素が用意されています。
Mediawiki と Gemtext は、インライン コード範囲に軽量マークアップを提供しません。
見出しは通常最大6レベルまで使用できますが、最上位レベルは文書タイトルと同じ内容を格納するために予約されていることが多く、文書タイトルは外部から設定される場合があります。一部の文書では、レベルを部、章、節、条、段落などの区分タイプと関連付けている場合があります。この記事では1を最上位レベルとしていますが、公式文書では見出しレベルのインデックスは1または0から始まる場合があります。
ほとんどのLMLは、見出しにSetextのような下線かatxのような[ 50 ]行マーカー の2つのスタイルのいずれかを採用しており、その両方をサポートしています。
レベル1の見出し =============== レベル2の見出し --------------- レベル3の見出し ~~~~~~~~~~~~~~~
最初のスタイルでは、下線、つまり、見出しテキストの下の行に
繰り返される文字(等号=、ハイフン-、チルダなど、通常は少なくとも 2 回または 4 回)を使用します。~
reStructuredTextでは、見出しに下線を引くだけでなく、 オプションで上線を引くこともできます。
# レベル1の見出し ## レベル 2 見出し ## ### レベル 3 見出し ###
#2つ目のスタイルは、見出し自体の先頭に繰り返しマーカー(ハッシュ、イコール=、アスタリスクなど)を配置し*、その繰り返し回数が見出しレベル(場合によっては逆)を示します。ほとんどの言語では行末のマーカーの繰り返しもサポートされていますが、必須としている言語もあれば、必ずしもマーカーの数が一致している必要のない言語もあります。
Org-mode はレベルを示す手段としてインデントをサポートしています。
BBCode はセクション見出しをまったくサポートしていません。
POD と Textile では、代わりに番号付き見出しレベルの HTML 規則を選択します。
Microsoft Wordは、段落が数語以内で、末尾にピリオドがなく、ユーザーがEnterキーを2回押すと、段落を見出しとして自動書式設定します。より低いレベルの見出しの場合は、テキストを入力する前に、対応する回数だけタブキーを押すことができます。例えば、見出しレベル2~9の場合は、1~8回のタブキーを押すことができます。
ハイパーリンクはインラインで追加できますが、URLが長いためコードが煩雑になる可能性があります。また、アドレスと関連属性のみを含む行への名前付きaliasまたは番号付きid参照として追加することもできます。ハイパーリンクはドキュメント内の任意の場所に配置できます。ほとんどの言語では、作成者がプレーンTextアドレスの代わりに表示するテキストを指定できhttp://example.com、リンク先に関する詳細情報を含む別のリンクタイトルを設定するメソッドも用意されていますTitle。
Wiki やコード ドキュメントなどの特別な設定に合わせて調整された LML は、ドキュメント内に名前付きアンカー (見出し、関数など) を自動的に生成したり、関連ページ (おそらく別の名前空間) にリンクしたり、リンクされたキーワードのテキスト検索を提供したりします。
ほとんどの言語では、リンクを囲むために(二重の)角括弧または山括弧を使用しますが、2つの言語が完全に互換性を持つものはほとんどありません。多くの言語では、追加のマークアップなしで、テキスト内の絶対URLを自動的に認識して解析できます。
Gemtext および setext リンクは、それ自体が 1 行に存在する必要があり、インラインで使用することはできません。
Org-modeの通常のリンク構文では、ファイルのテキスト検索が行われます。また、 . を使って専用のターゲットを指定することもできます<<id>>。
HTMLでは、リストの種類を指定するための明示的な要素と、リスト項目ごとに1つの要素が必要ですが、ほとんどの軽量マークアップ言語では、箇条書きや列挙項目に異なる行プレフィックスを指定するだけで済みます。言語によっては、ネストされたリストにインデントを使用するものもあれば、親リストマーカーを繰り返し使用するものもあります。
Microsoft Word は、アスタリスク*、ハイフンとマイナス記号-、または大なり記号で始まり>、その後にスペースまたは水平タブが続く段落を、自動的に箇条書きリスト項目に変換します。また、数字1と大文字と小文字を区別しない文字a (アルファベット順リストの場合) またはi. (ローマ数字の場合) の後にピリオド、閉じ括弧)、大なり記号、>またはハイフンとマイナス記号、そしてスペースまたはタブが続く場合、それらの文字で列挙リストを開始します。-丸括弧の場合は、(リストマーカーの前にオプションで開き括弧を置くこともできます。
言語によって、番号付きリスト項目における数字のオプションまたは必須のサポートの有無、どのような種類の列挙子(例:10進数の数字1、ローマ数字のiまたはI、アルファベットのaまたはA)、そして出力形式で明示的な値を保持するかどうかは異なります。例えば、一部のMarkdown方言では、開始値が1以外の場合は尊重されますが、それ以外の明示的な値は無視されます。
Slack は、ユーザーによる列挙リストや箇条書きリストの入力を支援しますが、実際にそれらのリストをそのようにフォーマットするわけではありません。つまり、先頭の数字、それに続くピリオド、スペース、または行頭•の箇条書き文字が含まれるだけです。
以下の軽量マークアップ言語は、すでに述べたものの一部と似ていますが、この記事の比較表にはまだ追加されていません。