Closed happynow closed 9 months ago
本件、個人的に修正したので情報共有させて頂きます。
問題があったは Epub3Writer.java の738行目あたりの ChapterInfo オブジェクトに目次階層を設定する処理です。 ChapterInfo オブジェクトの chapterLevel フィールドには、最初に 大見出し=1,中見出し=2 など見出しに応じたレベルが設定されます。その後でまた nav.xhtml を作成する際、 同フィールドに目次構築のためのレベルが再設定されます。 その処理方法は下図のとおりです。
しかし、この処理は場合によって上手く機能しません。 そこで次のように直しました。
どちらの方法でも見出しが大中小の並びで順序よく使われていれば、目次レベルの設定値は同じになります。 なお、上のふたつの図はプログラムと同等の処理に置き換えて説明しています。 実際のプログラムでは表現が異なります。修正後は割りと簡単なループ処理です。
参考までに修正版を添付させて頂きます。 AozoraEpub3_20240118.zip
この中にある TocLevel.html は新ロジックをシミュレーションするHTMLです。 これを試せば、上述の内容が感覚的に分かると思います。
作業性の向上のためにgitの機能を利用して、プルリクエストをしてほしいのですが。
承知しました。 gitの使い方を学びながらやりますので遅くなりそうですが 次の週末ぐらいまでにはやっておきたいと思います。
GitHub Desktopであればマウス操作だけでプルリクエストができるので簡単かなと思います。
GitHub Desktopをインストールしてログインして、このリポジトリである「git@github.com:kyukyunyorituryo/AozoraEpub3.git」をクローンして、PCにコピーされたファイルを変更してコミットしてプッシュしてから。GitHub DesktopのBranch、Create Pull requestという操作です。
GitHub Desktopの基本操作 https://pengi-n.co.jp/blog/github-desktop/
gitに慣れていなければ、こちらでやってもいいのですが
途中までやってみましたが、下手な操作して環境を壊しそうです。 申し訳ありませんが今回はそちらでgitの作業をお願いしたく思います。 修正したソースコードは次の2本です。modifiedフォルダに入ってます。 src/com/github/hmdev/info/ChapterInfo.java src/com/github/hmdev/writer/Epub3Writer.java
なお、添付ファイルは昨晩、Epub3Writer.java を修正し 差し替えてますのでお手数ですが再ダウンロードして下さい。
参考までに申しますと、GitHub Desktop で Cloneを作ったところ、 全てのファイルの改行コードがCRLFに変換されてしまいました。 次のような問題があるようです。 Windows版Github Desktopで改行コードがCRLFに勝手になっちゃう問題を解決する
issueの内容をコミットしました。 https://github.com/kyukyunyorituryo/AozoraEpub3/commit/b3d3611b94180619ea7e5b90bbba6b0ddf68a171
私もGitHub Desktop で CloneをしているのでCRLFで作業はしています。ただ、GitHubのページからダウンロードするとLFなのかもしれません。
返信が遅くなりすいません。早々とコミットありがとうございました。 masterの最新版をダウンロード、コンパイルして、いくつかの作品を試したところ、よい感じで動作しました。 質問になってしまい申し訳ありませんが issue のクローズはどの段階で行えば宜しいでしょうか。 今回コミットした内容でOKであればクローズなのでしょうか それとも次回のリリース版で issue の解消を確認すべきでしょうか
改行コードの件、仰るとおりGitHubのページからダウンロードしたものに LFのファイルが含まれていました。
Readme.md
などが LF でした。あと、ソースファイルも com/github/hmdev/util/Detector.java
だけ LF だったりします。
issue内容を反映したビルドをリリースしました。 https://github.com/kyukyunyorituryo/AozoraEpub3/releases/tag/v1.1.1b20Q issue のクローズは人それぞれで、リリースを確認してくれればありがたいです。
遅くなりまして申し訳ありません。確認は v1.1.1b21Q のほうで確認させて頂きました。 https://github.com/kyukyunyorituryo/AozoraEpub3/releases/tag/v1.1.1b21Q 件の作品については無事に目次が作成できました。クローズさせて頂きます。 対応ありがとうございました。
大中小の見出しを、小さい見出しから使い始めているテキストファイルを変換すると epub ファイル内の nav.xhtml が不正な形式で作成されます。 <ol> の開始タグと終了タグの数が合いません。 本件、最新版のAozoraEpub3 1.1.1b19Qでも発生します。
例)エラーとなる入力ファイル 例えば下記のように[#中見出し]が[#大見出し]より先に使われ始めてるものです。
実用上の問題1
改造版 1.1.1b19Q の GUI で次の作品をURLを貼り付け書籍化すると、目次ナビゲーションが正しく作成されません。
町人Aは悪役令嬢をどうしても救いたい ttps://kakuyomu.jp/works/16816452218841045726
この作品の目次は、上の例で示したような構成になっています。 出力された epub や mobi ファイルを開くと 「後日談」より前のタイトル(第1話など)が目次ナビゲーションに表示されません。
実用上の問題2
Narou.rb という、AozoraEpub3 を利用して電子書籍を作成するツールがあります。 本家の AozoraEpub3 1.1.0b46 を利用して Narou.rb から先の作品(町人Aは~)を書籍化した場合、 作成された mobiファイルをkindle端末で開くと目次ナビゲーションが正しく表示されます。 しかし、改造版を利用すると表示がおかしくなります。
それは本家と改造版では nav.xhtml のテンプレート xhtml_nav.vm に違いがあるためです。
本家版では nav.xhtml が epub仕様に則った形式では作成されませんが、XML構造が壊れるようなことはありません。 一方、改造版は nav.xhtml が epub仕様に則って作成されますが、場合によってはXML構造が壊れることがあります。 ただ、改造版のテンプレートの修正が間違っていたわけではなく、Javaプログラムにまだ問題が残っていたようです。