自己顕示欲の開放治療所

erg, programming and something.

別名:Laughing and Grief 雑記

Latin and Greekは習ったこともない

真面目な記事の他、特定の方には不快と思われる事柄に関して言及を行うことがあります。ちょっと頑張りますが、Blog内で解決できなかった場合要望があれば別ページに技術記事は書き直します

ライトウエイト構造化と記法の種類数

この記事はEWBアドベントカレンダー2019の23日目の記事です。

adventar.org

EWBとRe:VIEWの記法の数

書籍用マークアップEWBとその影響を受けて作られたRe:VIEWは、軽量マークアップとしてはかなり記法の数は少ないものとなります。

組版トリガ或いはプリプロセッサマークアップを外すと、そのほぼ全てが2種類程度に収まってしまいます。EWBでは

//トリガ[オプション]{値 //トリガ}

//トリガ[オプション] 値

なので実質1つですし、Re:VIEWでは

@<inline>{値}


//block[オプション]{
値
//}

と、リスト記法程度です。テーブルは、ここではテーブルブロック内での独自の話とさせてください。

例えば強調のインラインは

It is //g{Emphasis//g}.

It is @<em>{Emphasis}.

となります。つまり、専用の記法ではなく汎用の記法となります。

Markdownでは強調は*Emphasis*ですね。Markdownに汎用記法がないという主張ではありません。それこそHTMLタグがそうなってしまうので。

あ、最初に書き損ねましたが、今回はお気持ちだけでエビデンスなしでやっていきます。

easybooks

github.com

Markdownの記法を使いつつ、必要な箇所はRe:VIEWで書いてコンパイルまで持っていけるようにするツールだそうです。 MarkdownでHTMLタグを使うところをRe:VIEWが担うという認識でいいんですかね。

とりあえずRe:VIEWにあった統一性のようなものが失われたとも言えますね。 EWBからRe:VIEWで他のLWMLから記法が追加されている(後継というワケではないので当たり前ですが)のに今更ですが。 即ち、専用シンタックスを持つマークアップ記法と汎用マークアップ記法の混在です。

まあEWBとRe:VIEWで近すぎる関係性ではあるので、もう1つの有名な専用記法と汎用記法を持つdocutils及びSphinxの話も持ってきます。

docutilsとSphinx(reStructuredText)

Pythonという巨大プロジェクトのドキュメントのために生み出されたこれらはreSTという軽量マークアップを使います。 特徴として、強調などには*Emphasis*といったよく見られる専用の記法があり、それに留まらないものを記述できるroleとDirectiveがあります。 多くはインラインとブロックで対応しますが、まあ拡張次第ではあります。

www.sphinx-doc.org

プレーンテキスト上で*Emphasis*//g{Emphasis//g}、どちらが見易いか或いは書き易いかと問えばどちらも前者である人が多いのではないでしょうか。 慣れの問題の側面もありますが、書き易さではまあ合意が得られるはずです。

XMLSGMLは一般的に山括弧を用いる記法で統一されています。\TeX{}も、これは嘘ですが、\{ }があれば文書に必要なマークアップのための記法は調います。 これだけで構成された文書は人間には読みづらく、人は様々な互換記法を生み出してきました。 その多くは頻出する構造に対しショートハンドを与える形です(「そのように変換される」といった方が良いか)。 頻出する構造の全てに専用のマークアップをつける、それに近い試みはあるにはありますが、普及率はイマイチといえます。 人は数十種類の専用記法を覚えるのが苦手なので。 そこを割り切ったからこそのMarkdownの隆盛という見方も よく見掛けるものです。

つまりreSTがライトウエイト構造化だったんだよ!(な、なんだってー

現在easybooksのようなアプリケーションが登場したのは、特定用途のときには統一的記法でよかったもの、 汎用・日常的な用途の延長として書き(見)易い装飾的な記法のバランシングが行き着く形の1つがお気に入りの素材によって再生産されると この辺りのバランスの試みがみられるということかもしれません。 reSTの設計の歴史はちゃんと調べていないので強引ではありますが、文書毎に専用の記述をしたい場合に汎用記法を利用して拡張を行う仕組みという バランスについてなので、この辺りは突っこまれると困る。 Pandocについては、SpanとDivがこの辺りに対応するという見方をすれば似た構造に見えてきます。