2021年1月14日木曜日

[Re:VIEW] mapfile 中の table が正しく表示されない場合の対応方法

 Re:VIEW で一章のテキスト量が多く書きづらかったので、項単位で複数のファイルに分割して #@mapfile(sub.re) で結合してたのですが、この分割した .re ファイルに table を書いていたのが意図通りの表示になりませんでした。
(※素の Re:VIEW ではなく Re:VIEW Starter を使っています)


こんな感じ。
本来なら FREE/BASIC/STANDARD が列になるはず・・

mapfile の外に出せば問題なく表示されるのですが、table 挿入するところでサブの .re ファイルを分けないといけない(もしくは maprange?)のは面倒なので、調べました。

何が起きていたか?

preproc 後のファイルを見れば、何が起きていたのかは一目瞭然です。
table の列区切り文字であるタブがスペースになっていました。
つまり、行が全部結合されて1列になっていた。

どうしてこうなった?

preproc のソースでこの辺です。

https://github.com/kmuto/review/blob/da817154297474b43c4f13db2e612350ee380b49/lib/review/preprocessor.rb#L454

mapfile で開いたファイルを処理している中で呼ばれるメソッドですが、タブをスペースに変換しています。tabwidth の config がなければ 8 space になっています。
そして、tabwidth が 0 なら変換なしであることがわかります。

これで対応ができそうです!

対応する

@config[tabwidth] は review-preproc の --tabwidth オプションで指定可能なので --tabwidth=0 つければ OK です。
Rake でビルドしてる場合は .rake ファイルも修正してください。

review-preproc --tabwidth=0 file.re

これでちゃんと意図したとおりに出力できました。
(用紙からはみ出ちゃってるのは行が長すぎたから・・リリース版では修正済み)



0 件のコメント:

コメントを投稿