軽量マークアップ言語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>

ほとんどの言語では、行またはブロックのマークアップと、短いテキスト範囲のマークアップを区別しますが、インライン マークアップのみをサポートする言語もあります。

マークアップ言語の中には、コンピュータコードの文書化(例:PODreSTRD)や特定の出力形式(通常はHTMLまたはLaTeX)への変換など、特定の目的に特化したものがありますが、より汎用的な用途を持つものもあります。これには、テキスト表示を重視するか、データのシリアル化を重視するかが含まれます。[説明が必要]

プレゼンテーション指向の言語には、AsciiDocatxBBCodeCreole、 Crossmark 、 Djot 、 Epytext 、HamlJsonMLMakeDocMarkdownOrg-modePOD (Perl)reST (Python)RD (Ruby)SetextSiSUSPIP、 Xupl 、Texy!、 Textile 、txt2tagsUDOWikitextなどがあります。

データシリアル化指向の言語には、Curl (同形言語ですが JSON も読み取り、すべてのオブジェクトがシリアル化されます)、JSONYAMLなどがあります。

言語機能の比較

[編集]

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 ]

実装機能の比較

[編集]

軽量マークアップ言語の構文の比較

[編集]

インライン span 構文

[編集]

通常は斜体や太字のテキストを生成すると記載されていますが、軽量マークアッププロセッサの多くはセマンティック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 は、ユーザーによる列挙リストや箇条書きリストの入力を支援しますが、実際にそれらのリストをそのようにフォーマットするわけではありません。つまり、先頭の数字、それに続くピリオド、スペース、または行頭の箇条書き文字が含まれるだけです。

引用構文

[編集]

表の構文

[編集]

歴史的なフォーマット

[編集]

以下の軽量マークアップ言語は、すでに述べたものの一部と似ていますが、この記事の比較表にはまだ追加されていません。

参照

[編集]

注記

[編集]
  1. ^ JTexy はTexy! 1.0 構文と完全な互換性があり、2.0+ ともある程度の互換性があります。
  2. ^ a b c d e f g Asciidoctor 2.0 では非推奨です。これ以降のバージョンは言語の現在の表現を表し、2025 年 4 月時点でまだ作成されている標準に準拠しています。この構文は、互換モードを通じて引き続き利用できます
  3. ^ AsciiDoc のテキスト範囲は、従来の実装では引用符で囲まれたテキスト属性と呼ばれます。
  4. ^ タイトルの幅 ± 2 文字
  5. ^ a b AsciiDoc で 1 行分の空白でインデントすると、その行のテキストが事前にフォーマットされます。
  6. ^ 現代の言語仕様では、順序付きリストの区切り文字としてピリオドのみがサポートされています。従来のAsciiDoc.py構文では、小文字の英字またはローマ数字には右括弧のみが使用できました。

参考文献

[編集]
  1. ^ 「AsciiDoc ChangeLog」 . 2017年2月24日閲覧
  2. ^ 「WikiCreole Versions」 . 2017年2月24日閲覧
  3. ^ a b “djot” . 2023年8月26日閲覧
  4. ^ "djot 0.1.0" . GitHub . 2023年8月26日閲覧。
  5. ^ 「DokuWiki old_changes」 . 2024年11月26日閲覧
  6. ^ a b Jira. 「テキスト書式表記ヘルプ」 . Atlassian . 2020年12月22日閲覧
  7. ^ "Markdown" . Aaron Swartz: The Weblog . 2004年3月19日.
  8. ^ “Daring Fireball: Markdown” . 2004年4月2日時点のオリジナルよりアーカイブ2014年4月25日閲覧。
  9. ^ 「PHP Markdown Extra」 . Michel Fortin . 2013年10月8日閲覧
  10. ^ 「PHP Markdown:歴史」 Michel Fortin . 2020年12月23日閲覧
  11. ^ 「MediaWikiの歴史」 。 2017年2月24日閲覧
  12. ^ a b c Pandoc Archived 2013-11-15 at the Wayback MachineはHaskellで書かれており、 Markdown (2 つの形式) とReStructuredText のほか、 HTML と LaTeX を解析します。これらの形式からHTMLRTFLaTeXConTeXtOpenDocumentEPUB、および (LaTeX 経由の) PDF を含むその他の形式に書き込むことができます。
  13. ^ 「Org mode for Emacs – プレーンテキストで人生を」 . orgmode.org . OrgModeチーム. 2016年12月9日閲覧
  14. ^ 「PmWiki Cookbook - アドオンのエクスポート」 。 2018年1月7日閲覧
  15. ^ 「reStructuredText入門」 。 2017年2月24日閲覧
  16. ^ 「新しいフォーマットのTidBITS」 . TidBITS . 1992年1月6日. 2022年7月1日閲覧
  17. ^ 「Slackヘルプセンター > Slackの使い方 > メッセージの送信 > メッセージのフォーマット」 。 2018年8月7日閲覧
  18. ^ 「Slack APIドキュメント:基本的なメッセージフォーマット」 。 2018年8月7日閲覧
  19. ^ "Textism › Tools › Textile" . textism.com . 2002年12月26日時点のオリジナルよりアーカイブ
  20. ^ 「Texyとは何か」 。 2017年2月24日閲覧
  21. ^ 「TiddlyWikiの歴史」 . tiddlywiki.com .
  22. ^ "Html2wiki txt2tagsモジュール" . MetaCPAN . cpan.org . 2014年1月30日閲覧。
  23. ^ 「Txt2tagsユーザーガイド」 . Txt2tags.org . 2017年2月24日閲覧
  24. ^ "txt2tags changelog" . 2017年2月24日閲覧。
  25. ^ 「WhatsApp FAQ: メッセージのフォーマット」 。 2017年11月21日閲覧
  26. ^ 「Txt2tagsユーザーガイド」 . Txt2tags.org . 2017年2月24日閲覧
  27. ^ 「DokuWiki Tips htmltowiki」 . 2024年11月26日閲覧
  28. ^ a b 「DokuWiki FAQ html」 . 2024年11月26日閲覧
  29. ^ 「コンバータ」 . WikiCreole . 2013年10月8日閲覧
  30. ^ pegdown : Markdown処理用のJavaライブラリ
  31. ^ a b gfms : Github Flavored Markdown サーバー
  32. ^ a b marked : JavaScript で書かれた、フル機能の Markdown パーサーおよびコンパイラ。高速化のために構築されています。
  33. ^ a b node-gfm : GitHub風のマークダウンからHTMLへのコンバータ
  34. ^ Parsedown : PHP で書かれた Markdown パーサー
  35. ^ a b Ciconia : PHPで書かれたMarkdownパーサー
  36. ^ a b Grip : GitHub Readme インスタントプレビュー
  37. ^ github-markdown : GitHub用の自己完結型Markdownパーサー
  38. ^ peg-markdownはCでのmarkdownの実装です
  39. ^ DiscountもCでのmarkdownの実装です
  40. ^ "Python-Markdown" . Github.com . 2013年10月8日閲覧。
  41. ^ Bruce Williams. 「kramdown: プロジェクト情報」 . RubyForge. 2013年8月7日時点のオリジナルよりアーカイブ。 2013年10月8日閲覧
  42. ^ a b "ox-pandoc および pandoc 自体経由" . GitHub
  43. ^ Atlassian. 「Confluence 4.0 エディター - Wiki マークアップユーザー向けの変更点(Confluence Wiki マークアップは廃止されました)」 . 2018年3月28日閲覧
  44. ^ DocutilsはPythonでのReStructuredTextの実装です
  45. ^ SphinxはPythonDocutilsReStructuredTextを実装したもので、多数の出力形式 ビルダーを備えています。
  46. ^ Aurelio Jargas www.aurelio.net (2012-01-11). 「txt2tags」 . txt2tags . 2013年10月8日閲覧。
  47. ^ "txt2tags.class.php - オンラインコンバーター [sic]" . Txt2tags.org . 2013年10月8日閲覧
  48. ^ 「Markdown構文」 . Daringfireball.net . 2013年10月8日閲覧。
  49. ^ a b Textile Syntax アーカイブ2010-08-12 at the Wayback Machine
  50. ^ 「atx、真の構造化テキストフォーマット」アーロン・シュワルツ著(2002年)
  51. ^ 「Orgマニュアル: セクション「よりクリーンなアウトラインビュー」」. 2020年6月14日閲覧
  52. ^ 「org-adapt-indentation を使用する」
  53. ^ 「org-indent-mode または org-indent を使用する」
  54. ^ 公式マニュアルの脚注「'*' を箇条書きとして使用する場合、見出しとして解釈されないように行をインデントする必要があります。また、アウトライン表示をすっきりさせるために先頭の星印を非表示にしている場合、星印で始まる通常のリスト項目と実際の見出しを区別するのが難しくなる可能性があります。つまり、'*' はサポートされていますが、通常のリスト項目には使用しない方が良いでしょう。」
  55. ^ 「EtText: ドキュメント: EtTextの使用」 . ettext.taint.org . 2022年6月30日閲覧元々はWebMake [1]プロジェクトから派生したものです
  56. ^ 「Un naufragio personal: The Grutatxt markup」 . triptico.com . 2022年6月30日時点のオリジナルよりアーカイブ2022年6月30日閲覧。パブリック ドメイン形式 (バージョン 2.20 以降)。元々はGruta CMSシステムで使用されていました。
[編集]
  • ウィキブックスのCurl