【Asciidoc】ブロック制御ー属性を加えるー
「ブロック」の種類はコンテクスト(文脈)、スタイル(様式)や属性を与えられ、段落等の構造的役割によって表現をコントロールすることが出来ます。
ブロック作成は段落(パラグラフ)、箇条書き(リスト)や画像(イメージ)は暗黙的に処理されます。また、それとは別にブロック区切りを利用して構造用コンテナを作成することも出来ます。
今回の例題は百人一首を利用しました。
まず、コンテクストを利用して段落ブロックに引用(quote)属性を与えてみましょう。
[quote,光孝天皇]
きみがため春の野にいでて若菜摘むわがころも手に雪は降りつつ
変換すると
いい感じに処理されます。ただ、改行して上下分けて表示したいとなると上手く行きません。「きみがため春の野にいでて若菜摘む」と「わがころも手に雪は降りつつ」の上の句と下の句の間に改行を一個挟んでも同一ブロックとみなされ改行(改段)されません。改行を二個挟むと改行(改段)はされますが…。
[quote,光孝天皇]
きみがため春の野にいでて若菜摘む
わがころも手に雪は降りつつ
変換すると
「あらら。。。」という感じになります。複数のブロックに対してコンテクストの指定だけでは上手く処理出来ないという例になります。そこで、区切りブロックの登場です。区切り記号は利用するマークによって役割が違うのですが、それは、また別の記事で…。
ここでは、「_(アンダーバー)」4つで区切ります。
[quote,光孝天皇]
____
きみがため春の野にいでて若菜摘む
わがころも手に雪は降りつつ
____
変換すると
まあまあ上手くいきました。
もう一つ、ブロックの結合(強制改行)を利用した例を、
[quote,光孝天皇]
きみがため春の野にいでて若菜摘む +
わがころも手に雪は降りつつ
変換すると
これは、「強制改行」を行う為に「+」演算子を利用してブロックを結合した例です。
行間が詰まり日本人(のオッサン)の好みにはなりますが、構造が不明確になります。プログラムのソースコード等をこの方法で処理するのは無理があります。やはり、「ブロック区切り」を利用するべきなのでしょう。行間は「強制改行属性」をブロックに対して与えて構成する方法が別に存在しています。
さて、「Asciidoc」の説明で「強制改行」というと「+」を入れてという記述はよく見るのですが、本来はブロック結合の結果、「改行タグ」が挿入されるのだと思います。
自分はブロック結合を手順書を作成する時に「番号付き箇条書き」+「画像」+「説明」という形で良く利用しています。(きっと、変換プログラムを作成した人の想定した使い方に近い?)
さて、次回は「ブロック区切り」をもう少し詳しく紹介してみようと思います。
…ではまた。
当Noteは下記の「AsciiDoc Language Documentation」の文法に従っています。