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

バージョン 1.1.1 以降のAozoraEpub3改造版に Narou.rb の CSS が適用されない #419

Open
happynow opened this issue Feb 20, 2024 · 3 comments

Comments

@happynow
Copy link
Contributor

状況整理

AozoraEpub3(以下、Aozora)の改造版は、電書協の制作ガイドに準拠するため、
バージョン 1.1.1 からepubファイル1とそのテンプレートのディレクトリ構成を変更した。

Narou.rb でこの新しい改造版を使うと CSS やフォントを Aozora 側にコピーする際、
コピー先のディレクトリがなくてエラーが発生。
その後、プログラムが改修されエラーは出なくなったものの、
コピー先のパスが正しくないため、新しい改造版では Narou.rb の CSS が反映されなかった。

AozoraEpub3 の仕様

カスタムテンプレートのパス

本家も改造版もカスタムテンプレートファイルは下記のようなパスに配置する必要がある(フォントファイルは除く)

  • ファイル名はオリジナルファイルと同じ名前
  • 親フォルダのパスは、「オリジナルファイルの親フォルダのパス」+"_custom"


オリジナルのテンプレートファイルのパスが
C:/AozoraEpub3-1.1.1b22Q/template/item/style/aozora.css
であれば、カスタムテンプレートのパスは
C:/AozoraEpub3-1.1.1b22Q/template/item/style_custom/aozora.css
になる

(参考)AozoraEpub3 でカスタムテンプレートを処理してる箇所
Epub3Writer.java#L402-L406

CSS のインポート構成について2

・電書協フォーマットに対応した改造版には book-style.css というメインのCSSがある。
・他の CSS はこの book-style.css@import 文で取り込まれる
・作品の本文HTMLは book-style.css だけをリンクする

book-style.css …… 本文HTMLが取り込むCSS
  │
  ├─ style-reset.css …… book-style.css にインポートされるCSS
  ├─ style-standard.css …… 〃
  ├─ style-advance.css …… 〃
  ├─ aozora.css ………〃
  ├─ font.css ………〃
  └─ text.css ………〃

Footnotes

  1. epubファイルは拡張子がepubなだけで実体はzipファイル、そのzipファイル内のディレクトリ構成が変更された。

  2. 「電書協 EPUB 3 制作ガイド ver.1.1.3」76ページにも記載がある。 http://ebpaj.jp/counsel/guide よりダウロード可能。

@happynow
Copy link
Contributor Author

下記の案をもとに修正してPRしてみました。#420

ひとつの対応案

下記のようにメインの book-style.css の最後に Narou.rb のCSSファイルの内容を追記する。
こうすれば Narou.rb のスタイル定義が最後になり同じセレクタなら優先的に使われる。

book-style.css

@charset "UTF-8";
@import "style-reset.css";
@import "style-standard.css";
@import "style-advance.css";
@import "aozora.css";
@import "font.css";
@import "text.css";

‥ Aozora のスタイル定義 ‥


/*** [START] Narou.rb embedded custom style ***/Narou.rb のスタイル定義を追記 ‥

/*** [END]  Narou.rb embedded custom style ***/

また追記方式なら、Aozoraが資材を改訂してもNarou.rbの資材をそのまま使える可能性が高くなる。
現行でも chuki_tag.txt は追記で更新している。

@kokotaro
Copy link

リクエスト内容だと初期状態でstyle_customがないのでエラーが発生してました。
ディレクトリ作成でエラー解消されるので、style_customが無ければディレクトリ作成する処理追加で問題ないんじゃないかと

コードは適当なのですがディレクトリ判定して、無ければ作成してから渡すといいのかな?と
def self.get_custom_file_path(file_path)
puts "IN: self.get_custom_file_path"
custom_file_path = File.join(File.dirname(file_path) + "_custom")
unless File.directory?(custom_file_path)
FileUtils.mkdir_p(custom_file_path)
end
File.join(File.dirname(file_path) + "_custom", File.basename(file_path))
end

@happynow
Copy link
Contributor Author

@kokotaro ご指摘ありがとうございます。恥ずかしいバグでした。
修正案は少し変更させて頂きました。
FileUtils.mkdir_p は対象ディレクトリが存在しても実行できるので、ディレクトリ存在チェックは取り除きました。
de42514
でコミットしました。

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

2 participants