
【Asciidoc】パラグラフは・・・改行で空白が入るよ
今回は、「パラグラフ」について。。。
動作について解説する前に
:scripts: cjk
:pdf-theme: default-with-font-fallbacks
this
is
a
pen.
これは
ペン
です。
ロロロロロロロロロ
これを変換してみました。


出来ました。改行された部分も「段落」として纏められています。
が・・・。
テキストをコピーしてコードエリアに貼り付けてみます。
まず、「HTML」
this is a pen.
これは ペン です。
ロロロロロロロロロ
次に「PDF」
this is a pen.
これは ペン です。
ロロロロロロロロロ
如何でしょうか?英文は良いのですが日本文は・・・。
改行毎に「半角空白」が入っています。この「改行」を「半角空白」に置き換える動作は「Asciidoctor」の基本仕様です。
「:scripts: cjk」はこれを是正するはずだったのですが・・・。機能しているように見えません。
日中韓言語(特に中国語と日本語)の改行ルールを有効にします。中国語と日本語はスペースなしで表記されます(英単語と混在する場合もスペースは使用できません)。この設定により、2つの日中韓文字の間に改行が入り、折り返しに対応できるようになります。また、これらの言語では、ポーズ、フルストップ、ダッシュの句読点が異なっており、改行する際に考慮されます。
「Asciidoctor PDF」の「V 1.6」では機能している記事を多く見かけるので「V 2.0」以降、仕様上の変化が有ったのだと思います。
この動作は元々「Asciidoctor」を初めとする軽量言語の処理仕様に基づくものと思われます。正確なところは「正規化(Normalization)」を参照してもらいたいと思います。「CJK」は通常、「文頭改行」を残し、その他の改行を「半角空白」に置き換える処理を「削除」に置き換える処理行う様になっているはずなのですが、「英単語」を初めとする欧米の場合、単語結合が発生するので・・・というのがスルーされた理由かと思われます。(プロポーショナル・フォントを利用すると目立たないというのもあるのでしょう。)
「Re:VIEW」でも似たような問題があり、「@kauplan」さんは「技術系同人誌を書く人の味方「Re:VIEW Starter」の紹介」において「英単語が結合されるバグを修正」で今回の逆「Thisisapen.」なるからと「Re:VIEW Starter」の中で調整されています。(マークダウンは方言が多いので調査していません。。。「reStructuredText」は回避策を持っているようです。)
根本的な解決は「ブロック」毎に基本定義の他に「LANG」設定を行えるように仕様を変更するしかないのでしょうが、改変ポイントが多岐に渡ってかなり難しい様に思います。(そのうち・・・きっと・・・。)
しかし、こういう事を考えると「”TeX”は本当に完成されているなぁ」と感心します。
取り敢えず今回はここまで。
…ではまた。
当Noteは下記の「AsciiDoc Language Documentation」の文法に従っています。