review icon indicating copy to clipboard operation
review copied to clipboard

節単位でファイルを分割したい

Open kenhys opened this issue 7 years ago • 7 comments

問題点

現在の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側でこれ使うといいとかこうするといい、みたいな知見があったりするのでしょうか?

kenhys avatar Sep 10 '18 09:09 kenhys

現状のRe:VIEWがChapter単位で管理しているのを変えるのは相当な副作用が出そうなのと、YAMLがこれ以上複雑化するのは避けたいという事情があります。

Re:VIEW的な対処法としては、章ファイルに #@mapfile(節ファイル) を並べておき、review-preproc または rake preproc を実行すれば章ファイルのところに更新された形で入る、ということを使うことになります(format.ja.md を参照してください)。でもrake preprocだといきなり変わっちゃうのであまり嬉しくないかも。

節単位でもっと大局的に見たいということだと、生のLaTeXなり、AsciiDocなりといった別手段を使ったほうが妥当かもしれませんね。

kmuto avatar Sep 10 '18 09:09 kmuto

「xxxを編集するだけで、節の順番を入れ替え or 追加 or 削除がしたい」を機能として実装するのは需要ありそうな気がしました。実際、章が長すぎるときはファイルを分けたいですし。xxxからcatalogとreを生成するようなイメージです。rakeのタスクにいい名前さえあれば。。。

kdmsnr avatar Sep 10 '18 12:09 kdmsnr

参照系と画像IDで困りそうな気がしたけれども、別の章に移動するということがなければまぁいいのかなぁ。既存のものに機能追加してもバグを生みそうなので、review-なんとか を新たに作るか、rakeがんばるで何とかなるのか。

kmuto avatar Sep 10 '18 12:09 kmuto

ああ、ああ……。参照系は死にますね。章マタギは自己責任ということで。

kdmsnr avatar Sep 10 '18 12:09 kdmsnr

ファイル名とIDが密接に結びついているというRe:VIEWの基本モデルからは、分割ファイルはその分割ファイル名がIDになるというのが「あるべき挙動」になると思います。

kmuto avatar Sep 10 '18 13:09 kmuto

わかります。ただ、厳密には「catalog.ymlに掲載したものにIDが与えられる」ので、分割ファイルを載せないのであれば「IDナシ」(参照しちゃダメ)ということになるんじゃないかと。

kdmsnr avatar Sep 10 '18 13:09 kdmsnr

Re:VIEW的な対処法としては、章ファイルに #@mapfile(節ファイル) を並べておき、review-preproc または rake preproc を実行すれば章ファイルのところに更新された形で入る、ということを使うことになります(format.ja.md を参照してください)。でもrake preprocだといきなり変わっちゃうのであまり嬉しくないかも。

rake preprocだと#@mapfileする対象の節ファイルでさらに#@mapfile()していても大丈夫そうですね。 ありがとうございます。

kenhys avatar Sep 11 '18 08:09 kenhys