Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

章ごとの原稿ファイル名にフォルダ名が含まれているとpdfやepubが作られない #920

Closed
kauplan opened this issue Jan 13, 2018 · 11 comments

Comments

@kauplan
Copy link

kauplan commented Jan 13, 2018

概要

章が多い本の場合、ファイルも多くなるので、たとえば「chapters」のようなフォルダに入れたくなります。
しかしRe:VIEWでは、章ごとのファイル名にフォルダ名が含まれていると、pdfやepubが作られません。
ファイル名にフォルダ名を含めてもpdfやepubが作られるようにしてほしいです。

詳細

catalog.ymlの中に指定するファイル名に、フォルダ名が含まれているとします。

$ cat catalog.yml
PREDEF:
  - chapters/chapter-00.re

CHAPS:
  - chapters/chapter-01.re
  - chapters/chapter-02.re

APPENDIX:

POSTDEF:

また、ファイル「chapters/chapter-*.re」はちゃんと存在するものとします。

$ ls chapters
chapter-00.re	chapter-01.re	chapter-02.re

このとき:

  • rake pdfを実行すると、book.texに\input{chapter-01.tex}が入りません。そのため、生成されたpdfファイルには、表紙や奥付があっても中身がありません。
  • rake epubを実行すると、エラーになってepubファイルが作成されません。
$ rake epub
review-epubmaker config.yml
Loaded yaml file (config.yml). I will produce mybook1.epub.
Created first temporary directory as /tmp/mybook1/mybook1-epub.
Call hook_beforeprocess. ()
Call hook_afterfrontmatter. ()
Create chapters/chapter-00.xhtml from chapters/chapter-00.re.
W, [2018-01-14T00:34:50.823924 #69606]  WARN -- : review-epubmaker: compile error in chapters/chapter-00.re (Errno::ENOENT)
W, [2018-01-14T00:34:50.823984 #69606]  WARN -- : review-epubmaker: No such file or directory @ rb_sysopen - /tmp/mybook1/mybook1-epub/chapters/chapter-00.xhtml
Create chapters/chapter-01.xhtml from chapters/chapter-01.re.
W, [2018-01-14T00:34:50.825812 #69606]  WARN -- : review-epubmaker: compile error in chapters/chapter-01.re (Errno::ENOENT)
W, [2018-01-14T00:34:50.825923 #69606]  WARN -- : review-epubmaker: No such file or directory @ rb_sysopen - /tmp/mybook1/mybook1-epub/chapters/chapter-01.xhtml
Create chapters/chapter-02.xhtml from chapters/chapter-02.re.
W, [2018-01-14T00:34:50.828074 #69606]  WARN -- : review-epubmaker: compile error in chapters/chapter-02.re (Errno::ENOENT)
W, [2018-01-14T00:34:50.828128 #69606]  WARN -- : review-epubmaker: No such file or directory @ rb_sysopen - /tmp/mybook1/mybook1-epub/chapters/chapter-02.xhtml
compile error, No EPUB file output.
rake aborted!
Command failed with status (1): [review-epubmaker config.yml...]
/tmp/mybook1/rakelib/reviewtasks.rb:64:in `block in <top (required)>'
Tasks: TOP => epub => book.epub
(See full trace by running task with --trace)

環境

  • Re:VIEW 2.4.0
  • macOS Sierra
  • ruby 2.5

備考

  • Re:VIEW カタログファイル ガイドには、ファイル名にフォルダ名をつけていいかどうか、記述がありませんでした。なので、これが仕様なのかどうか、わかりませんでした。
  • lib/review/book/compilable.rbReVIEW::Book::Compilable#name() を読むと、ファイル名にフォルダ名が含まれていた場合の対策がしてありました。そのため、仕様としては「フォルダ名を含めてもよい」のではないかと思います。
      def name
        return nil unless @name
        File.basename(@name, '.*')
      end
  • 以下のような変更でbook.texに\input{ファイル名}が入るようになったが、これが望ましい変更かどうかはわかりませんでした。
diff --git a/lib/review/book/chapter.rb b/lib/review/book/chapter.rb
index 54746e8..d3e2416 100644
--- a/lib/review/book/chapter.rb
+++ b/lib/review/book/chapter.rb
@@ -112,7 +112,7 @@ module ReVIEW
       private

       def on_file?(contents)
-        contents.lines.map(&:strip).include?("#{id}#{@book.ext}")
+        contents.lines.map(&:strip).include?(@name)
       end

       # backward compatibility
@kmuto
Copy link
Owner

kmuto commented Jan 14, 2018

これは真面目に考えると大工事になりそうですね。

  • imagesも直下ではなくてフォルダ別にしたくなりそう
  • 別のフォルダに同じファイル名がある場合の判断(IDの指定方法)
  • 章間リンク

@kauplan
Copy link
Author

kauplan commented Feb 6, 2018

imagesも直下ではなくてフォルダ別にしたくなりそう

何か勘違いをされているようですが、「原稿ファイルを章ごとにフォルダに分けたい」ということではなく、「原稿ファイルがプロジェクトフォルダ直下にちらばるので専用のサブフォルダにまとめたい」という提案です。
ちょうど画像をimagesフォルダにまとめてるように、*.reファイルも専用のフォルダに入れたい、というだけなのですが、伝わりますか?

別のフォルダに同じファイル名がある場合の判断(IDの指定方法)

素直に「フォルダ名+ファイル名」でいいと思います。

章間リンク

ファイル名のかわりに「フォルダ名+ファイル名」でいいと思います。

@kmuto
Copy link
Owner

kmuto commented Feb 6, 2018

何か勘違いをされているようですが、「原稿ファイルを章ごとにフォルダに分けたい」ということではなく、「原稿ファイルがプロジェクトフォルダ直下にちらばるので専用のサブフォルダにまとめたい」という提案です。
ちょうど画像をimagesフォルダにまとめてるように、*.reファイルも専用のフォルダに入れたい、というだけなのですが、伝わりますか?

伝わってはいますが、@kauplan さんがそう管理するつもりというだけであって、実際ほかの人にどの程度実用性があるのか、章ごと管理を使いたいというケースのほうがあるのではないかという感想です。
いずれにせよ、まだ手をつけていないものの、大工事が必要になりそうなので気長なTODOとなりそうです。

@kauplan
Copy link
Author

kauplan commented Feb 7, 2018

実際ほかの人にどの程度実用性があるのか、章ごと管理を使いたいというケースのほうがあるのではないか

(原稿を別フォルダに置くことが)ほかの人に実用性がないなら、章ごとにフォルダ分けて管理したいという人もいないのでは?
前半と後半が矛盾してますよ。

大工事が必要になりそう

それでは大工事が必要にならない方法をいっしょに考えてみませんか。
たとえば設定ファイルのimagedirfontdirと同じように、draftdir(*.reファイルを入れるフォルダ名を指定する)を追加するとか。
これなら、懸念されている「IDの指定方法」や「章間リンク」は今までと変わらないはずです。

また「章ごと管理を使いたい」というのは、自分は別に思わないのですが、どうせ今だってできてないし、必要とする人が現れてからでいいのではないでしょうか。
Re:VIEWを使って商業書籍を作っている人(つまりRe:VIEWのヘビーユーザー)はすでに複数人いらっしゃると思いますが、その人たちからも「章ごと管理を使いたい」という意見が出てないなら、「章ごと管理を使いたいというケースのほうがあるのではないか」という推測は、する必要ないと思います。「早すぎる最適化」ならぬ「早すぎる要件化」。

@kmuto
Copy link
Owner

kmuto commented Feb 7, 2018

そもそも私自身は必要性を感じていないので、あまりモチベーションがわかないんですよねぇ。

  • draftdirという名前は要検討。デフォルト値は「.」
  • catalog.ymlはdraftdirではなく直下のほうに置く?

@kmuto
Copy link
Owner

kmuto commented Feb 7, 2018

#938 で実装してみている。catalog.ymlは直下のほうにあることを前提。

サブコマンド系がいろいろダメっぽい。

@kdmsnr
Copy link
Collaborator

kdmsnr commented Feb 7, 2018

仕様として「フォルダ名を含めてはいけない」に変えるのでもいいんじゃないですかねえ

@kauplan
Copy link
Author

kauplan commented Feb 12, 2018

そもそも私自身は必要性を感じていない

付録を含めて22章あるような同人誌だと、原稿ファイルを別フォルダに分ける必要性を感じました。

#938 で実装してみている。

ありがとうございます。

draftdirという名前は要検討。デフォルト値は「.」

互換性のためにはそれがいいと思います。

catalog.ymlはdraftdirではなく直下のほうに置く?

互換性のためには直下でいいと思います。

@kmuto
Copy link
Owner

kmuto commented Feb 26, 2018

@kauplan

draftdirのほうは#938 branchで動くようになっていますので、可能なら実験いただきたいです。
この実装では、catalog.ymlのほうはサブディレクトリは指定できない ということになります。

@kmuto kmuto mentioned this issue Feb 27, 2018
19 tasks
@kauplan
Copy link
Author

kauplan commented Feb 28, 2018

ありがとうございます。draftdirブランチで動かし、以下のことができることを確認しました。

  • config.ymlのcontentdirchaptersを指定する
  • chaptersフォルダをつくり、*.re をそこにいれてrake pdfが正常に完了する
  • ある章から別の章を参照する(@<chapref>{}@<chap>{}
  • ある章から別の章の画像を参照する(@<img>{}

自分が確認した範囲では、動作に問題はありません。

これで、20章を超える同人誌でも、ファイルが散らからずに済みます。ありがとうございました。

(RVIEW 3.0 のissueから参照されてますが、できれば2.5で出していただけると、なおありがたいです。)

@kmuto
Copy link
Owner

kmuto commented Mar 2, 2018

#938 の実装にて対応

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants