節単位でファイルを分割したい
問題点
現在のRe:VIEWは章単位でファイルを分割することは想定しているのでしょうが、 節単位でファイルを分割することはおそらく想定していなさそうに見えます。
chap1.re
= 章のタイトル
文章...
section1.re
== 節のタイトル
文章...
sectionN.reも同様に節ごとに分割したファイルを用意して、以下のようにcatalog.ymlに指定する。
catalog.yml
CHAPS:
- chap1.re
- section1.re
- section2.re
このようにすると、一見それっぽく節単位で分割できているように見えるのですが、図や表の参照を含むと番号がずれて破綻します。
動機について
なぜ章以下の節の単位でファイルを分割できてほしいかというと
- catalog.ymlを編集するだけで、節の順番を入れ替え or 追加 or 削除がしたい
というところにつきます。(マニュアルで節ごとに1つのオプションの説明をしているケース、みたいなユースケースです)
解決策について
あらかじめ連結した章のファイルを生成してからRe:VIEWに処理させる必要があるという認識ですが、 Re:VIEW側でこれ使うといいとかこうするといい、みたいな知見があったりするのでしょうか?
現状のRe:VIEWがChapter単位で管理しているのを変えるのは相当な副作用が出そうなのと、YAMLがこれ以上複雑化するのは避けたいという事情があります。
Re:VIEW的な対処法としては、章ファイルに #@mapfile(節ファイル) を並べておき、review-preproc または rake preproc を実行すれば章ファイルのところに更新された形で入る、ということを使うことになります(format.ja.md を参照してください)。でもrake preprocだといきなり変わっちゃうのであまり嬉しくないかも。
節単位でもっと大局的に見たいということだと、生のLaTeXなり、AsciiDocなりといった別手段を使ったほうが妥当かもしれませんね。
「xxxを編集するだけで、節の順番を入れ替え or 追加 or 削除がしたい」を機能として実装するのは需要ありそうな気がしました。実際、章が長すぎるときはファイルを分けたいですし。xxxからcatalogとreを生成するようなイメージです。rakeのタスクにいい名前さえあれば。。。
参照系と画像IDで困りそうな気がしたけれども、別の章に移動するということがなければまぁいいのかなぁ。既存のものに機能追加してもバグを生みそうなので、review-なんとか を新たに作るか、rakeがんばるで何とかなるのか。
ああ、ああ……。参照系は死にますね。章マタギは自己責任ということで。
ファイル名とIDが密接に結びついているというRe:VIEWの基本モデルからは、分割ファイルはその分割ファイル名がIDになるというのが「あるべき挙動」になると思います。
わかります。ただ、厳密には「catalog.ymlに掲載したものにIDが与えられる」ので、分割ファイルを載せないのであれば「IDナシ」(参照しちゃダメ)ということになるんじゃないかと。
Re:VIEW的な対処法としては、章ファイルに #@mapfile(節ファイル) を並べておき、review-preproc または rake preproc を実行すれば章ファイルのところに更新された形で入る、ということを使うことになります(format.ja.md を参照してください)。でもrake preprocだといきなり変わっちゃうのであまり嬉しくないかも。
rake preprocだと#@mapfileする対象の節ファイルでさらに#@mapfile()していても大丈夫そうですね。
ありがとうございます。