軽量マークアップ言語( LML )は、シンプルマークアップ言語またはヒューメイン マークアップ言語とも呼ばれ、シンプルで目立たない構文を持つマークアップ言語です。汎用テキスト エディターを使用して簡単に記述でき、生の形式で簡単に読めるように設計されています。軽量マークアップ言語は、生のドキュメントだけでなく、最終的なレンダリング出力も読み取る必要があるアプリケーションで使用されます。
たとえば、ソフトウェア ライブラリをダウンロードする人は、Web ブラウザーではなくテキスト エディターでドキュメントを読みたいと思うかもしれません。このような言語のもう 1 つの用途は、ブログやwikiなどの Web ベースのパブリッシングでのデータ入力を提供することです。この場合、入力インターフェイスは単純なテキスト ボックスです。サーバー ソフトウェアは、入力を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]
実装機能の比較
軽量マークアップ言語構文の比較
インライン span 構文
通常は斜体や太字のテキストを生成すると説明されていますが、ほとんどの軽量マークアップ プロセッサはem、セマンティック HTML 要素を出力します。等幅テキストは、セマンティック要素またはプレゼンテーション要素strongのいずれかになります。Textile など、区別する言語や、Texy など、ユーザーが簡単に出力を構成できる言語はほとんどありません。
codett
LML は複数単語のマークアップでは異なる場合があります。一部の言語では、マークアップ文字で単語間のスペース (挿入語) を置き換える必要があります。言語によっては、接頭辞と接尾辞として 1 つの文字が必要ですが、他の言語では 2 重または 3 重の文字が必要であったり、強調のレベルが異なるなど、わずかに異なる意味を持つ両方をサポートしたりします。
Gemtext にはインライン フォーマットがないため、等幅テキスト (Gemtext のコンテキストではフォーマット済みテキストと呼ばれます) には、```独自の行に開始と終了が必要です。
強調構文
<em>HTML では、テキストはおよび要素タイプで強調されます<strong>が、 および<i>は<b>伝統的にテキストをそれぞれ斜体または太字にマークアップします。
Microsoft Word と Outlook、および同様のユーザー エクスペリエンスを目指すその他のワード プロセッサやメール クライアントは、太字にはアスタリスク、斜体にはアンダースコアを使用するという基本的な規則をサポートしています。Word では文字が削除されますが、Outlook では保持されます。
編集構文
HTML では、削除または挿入されたテキストはそれぞれ<del>および要素タイプでマークアップされます。ただし、取り消し線や下線が引かれたテキストの範囲には、
<ins>従来の要素タイプ<s>または<strike>およびも引き続き使用できます。<u>
AsciiDoc、ATX、Creole、MediaWiki、PmWiki、reST、Slack、Textile、Texy!、WhatsApp は、テキストに下線を引くための専用マークアップをサポートしていません。ただし、Textile は+inserted+構文による挿入をサポートしています。
AsciiDoc、ATX、Creole、MediaWiki、PmWiki、reST、Setext、Texy! は、テキストを取り消し線にするための専用マークアップをサポートしていません。
<del>stricken</del>DokuWiki は、埋め込み HTML が無効になっている場合でも、
HTML のような構文をサポートします。
プログラミング構文
引用符で囲まれたコンピュータ コードは、従来、各文字が同じ固定幅を占めるタイプライターのようなフォントで表示されます。HTML では、このタスクのために、セマンティック要素タイプ<code>と非推奨のプレゼンテーション<tt>要素タイプを提供しています。
Mediawiki と Gemtext は、インライン コード範囲用の軽量マークアップを提供しません。
見出し構文
見出しは通常、最大 6 つのレベルで使用できますが、最上位の見出しは、外部で設定できるドキュメント タイトルと同じ内容を格納するために予約されていることがよくあります。一部のドキュメントでは、レベルを、部、章、セクション、記事、段落などの区分タイプに関連付ける場合があります。
ほとんどのLMLは、見出しにSetextのような下線かatxのような[50]行マーカーの2つのスタイルのいずれかを採用しており、その両方をサポートしています。
下線付きの見出し
レベル 1 見出し =============== レベル 2 見出し --------------- レベル 3 見出し ~~~~~~~~~~~~~~~
最初のスタイルでは、見出しテキストの下の行に下線、つまり繰り返し文字(等号=、ハイフン-、チルダなど~、通常は少なくとも 2 回または 4 回)を使用します。
RST は見出しレベルを動的に決定します。これにより、一方では作成がより個別化されますが、他方では外部ソースからのマージが複雑になります。
接頭辞付き見出し
# レベル 1 見出し ## レベル 2 見出し ## ### レベル 3 見出し ###
2 番目のスタイルは、見出し自体の先頭にある繰り返しマーカー (ハッシュ#、イコール=、アスタリスクなど*) に基づいています。繰り返しの回数は、見出しレベル (場合によっては逆) を示します。ほとんどの言語では、行末のマーカーの重複もサポートされていますが、一部の言語では必須ですが、他の言語ではマーカーの数が一致することさえ期待されていません。
Org-mode はレベルを示す手段としてインデントをサポートしています。
BBCode はセクション見出しをまったくサポートしていません。
POD と Textile は、代わりに番号付き見出しレベルの HTML 規則を選択します。
Microsoft Word では、段落に含まれる単語数が少数で、末尾にピリオドがなく、ユーザーが Enter キーを 2 回押すと、段落が見出しとして自動的に書式設定されます。下位レベルでは、テキストを入力する前に、ユーザーはタブ キーを対応する回数押すことができます。つまり、見出しレベル 2 から 9 の場合は、1 回から 8 回タブを押すことになります。
リンク構文
ハイパーリンクは、長い URL が原因でコードが乱雑になる可能性があるインラインで追加することも、アドレスと関連属性のみを含む行への名前付きaliasまたは番号付き参照で追加することもできます。多くの場合、ハイパーリンクはドキュメント内の任意の場所に配置できます。ほとんどの言語では、作成者がプレーン アドレスの代わりに表示するidテキストを指定できます。また、リンク先に関する詳細情報を含む別のリンク タイトルを設定する方法を提供する言語もあります。
Texthttp://example.comTitle
ウィキやコードドキュメントなどの特別な設定に合わせて調整された 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 は、ユーザーが列挙リストや箇条書きリストを入力するのを支援しますが、実際にそのようにフォーマットするわけではありません。つまり、先頭の数字に続いてピリオドとスペース、または行頭の箇条書き文字が含まれるだけです•。
歴史的な形式
以下の軽量マークアップ言語は、すでに述べたもののいくつかと似ていますが、この記事の比較表にはまだ追加されていません。
- 本文: [55] 2000年頃
- グルタテキスト: [56] 2002年頃
参照
参考文献
- ^ 「AsciiDoc ChangeLog」 。 2017年2月24日閲覧。
- ^ 「WikiCreole Versions」 。 2017年2月24日閲覧。
- ^ ab "djot" . 2023年8月26日閲覧。
- ^ “djot 0.1.0”. GitHub . 2023年8月26日閲覧。
- ^ 「DokuWiki old_changes」. 2024年11月26日閲覧。
- ^ ab Jira. 「テキスト書式表記ヘルプ」。Atlassian 。 2020年12月22日閲覧。
- ^ 「Markdown」。Aaron Swartz: The Weblog。2004-03-19。
- ^ 「Daring Fireball: Markdown」。2004年4月2日時点のオリジナルよりアーカイブ。2014年4月25日閲覧。
- ^ 「PHP Markdown Extra」。Michel Fortin . 2013年10月8日閲覧。
- ^ 「PHP Markdown: History」. Michel Fortin . 2020年12月23日閲覧。
- ^ 「MediaWiki の歴史」 。2017年 2 月 24 日閲覧。
- ^ abc Pandoc は Haskellで書かれており、 HTML や LaTeX のほか、 Markdown (2 つの形式) やReStructuredTextも解析します。これらの形式からHTML、RTF、LaTeX、ConTeXt、OpenDocument、EPUB、および (LaTeX 経由の) PDF を含むその他のいくつかの形式に書き込むことができます。
- ^ 「Org mode for Emacs – プレーンテキストであなたの人生」。orgmode.org。OrgModeチーム。2016 年 12 月 9 日閲覧。
- ^ 「PmWiki Cookbook - アドオンのエクスポート」。2018年1月7日閲覧。
- ^ 「reStructuredText 入門」。2017年 2 月 24 日閲覧。
- ^ 「新しい形式のTidBITS」TidBITS 1992-01-06 2022-07-01閲覧。
- ^ 「Slack ヘルプセンター > Slack の使用 > メッセージの送信 > メッセージのフォーマット」。2018 年 8 月 7 日閲覧。
- ^ 「Slack API ドキュメント: 基本的なメッセージフォーマット」。2018年 8 月 7 日閲覧。
- ^ 「TiddlyWikiの歴史」tiddlywiki.com。
- ^ 「Textism › Tools › Textile」. textism.com . 2002年12月26日時点のオリジナルよりアーカイブ。
- ^ 「Texyとは何か」。2017年2月24日閲覧。
- ^ 「Html2wiki txt2tagsモジュール」 cpan.org . 2014年1月30日閲覧。
- ^ 「Txt2tags ユーザーガイド」。Txt2tags.org 。 2017年2月24日閲覧。
- ^ 「txt2tags changelog」. 2017年2月24日閲覧。
- ^ 「WhatsApp FAQ: メッセージの書式設定」。2017年11月21日閲覧。
- ^ 「Txt2tags ユーザーガイド」。Txt2tags.org 。 2017年2月24日閲覧。
- ^ 「DokuWiki Tips htmltowiki」。2024年11月26日閲覧。
- ^ ab "DokuWiki FAQ html" . 2024年11月26日閲覧。
- ^ 「コンバーター」。WikiCreole 。 2013年10月8日閲覧。
- ^ pegdown: Markdown処理用のJavaライブラリ
- ^ ab gfms: Github 風味の Markdown サーバー
- ^ ab marked: JavaScript で書かれたフル機能のマークダウン パーサーおよびコンパイラー。スピードを重視して構築されています。
- ^ ab node-gfm: GitHub 風のマークダウンから HTML へのコンバーター
- ^ Parsedown: PHP で書かれた Markdown パーサー
- ^ ab Ciconia: PHP で書かれた Markdown パーサー
- ^ ab Grip: GitHub Readme インスタントプレビュー
- ^ github-markdown: GitHub 用の自己完結型 Markdown パーサー
- ^ peg-markdown は Cでのmarkdownの実装です。
- ^ Discount も Cでのmarkdownの実装です。
- ^ 「Python-Markdown」。Github.com 。 2013年10月8日閲覧。
- ^ Bruce Williams <http://codefluency.com>、Ruby Central <http://rubycentral.org> 向け。「kramdown: プロジェクト情報」。RubyForge。2013 年 8 月 7 日時点のオリジナルよりアーカイブ。2013年 10 月 8 日閲覧。
- ^ ab "ox-pandoc および pandoc 自体経由". GitHub。
- ^ Atlassian. 「Confluence 4.0 エディター - Wiki マークアップ ユーザー向けの変更点 (Confluence Wiki マークアップは廃止されました)」。2018 年 3 月 28 日閲覧。
- ^ Docutilsは PythonでのReStructuredTextの実装です
- ^ SphinxはPythonとDocutilsでReStructuredTextを実装したもので、多数の出力フォーマットビルダーを備えています。
- ^ Aurelio Jargas www.aurelio.net (2012-01-11). 「txt2tags」. txt2tags . 2013年10月8日閲覧。
- ^ 「txt2tags.class.php - オンラインコンバーター [sic]」。Txt2tags.org 。 2013年10月8日閲覧。
- ^ 「Markdown 構文」 Daringfireball.net . 2013 年 10 月 8 日閲覧。
- ^ ab Textile Syntax 2010-08-12 にWayback Machineでアーカイブ
- ^ 「atx、真の構造化テキストフォーマット」Aaron Swartz (2002)
- ^ 「The Org Manual: section "A Cleaner Outline View"」 。 2020 年6 月 14 日閲覧。
- ^ 「org-adapt-indentation の使用」。
- ^ 「org-indent-mode または org-indent を使用する」。
- ^ 公式マニュアルの脚注「'*' を箇条書きとして使用する場合、見出しとして解釈されないように行をインデントする必要があります。また、先頭の星印を非表示にしてアウトライン表示をすっきりとしている場合、星印で始まる単純なリスト項目と実際の見出しを区別するのが難しい場合があります。つまり、'*' はサポートされていますが、単純なリスト項目には使用しない方がよい場合があります。」
- ^ 「EtText: ドキュメント: EtText の使用」。ettext.taint.org 。 2022年6月30日閲覧。元々はWebMake[1]プロジェクトから派生したものです。
- ^ "個人的な意見: Grutatxt マークアップ".トリプティコ.com 。2022-06-30に取得。パブリック ドメイン形式 (バージョン 2.20 以降)。元々は Gruta CMSシステムで使用されていました。
