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

footnoteと最新のconfig.ymlの組み合わせでepubmakerがコケる #433

Closed
suzukin opened this issue Jun 24, 2015 · 13 comments · Fixed by #434
Closed

footnoteと最新のconfig.ymlの組み合わせでepubmakerがコケる #433

suzukin opened this issue Jun 24, 2015 · 13 comments · Fixed by #434

Comments

@suzukin
Copy link

suzukin commented Jun 24, 2015

しばらくハマっているので投げます……。

脚注(@{}, //footnote[][])と最新のconfig.yml( https://github.com/kmuto/review/blob/master/test/sample-book/src/config.yml )を組み合わせると、epubmakerのコンパイルが通らなくなりました。Re:VIEWのバージョンを1.3.0〜2.0.0beta1まで試してみましたがいずれもダメでした。以下エラー文です。

Create ch01.html from ch01.re.
/usr/local/Cellar/ruby/2.2.2/lib/ruby/2.2.0/rexml/parsers/baseparser.rb:413:in `block in pull_event': Undefined prefix epub found (REXML::UndefinedNamespaceException)
    from /usr/local/Cellar/ruby/2.2.2/lib/ruby/2.2.0/set.rb:283:in `each_key'
    from /usr/local/Cellar/ruby/2.2.2/lib/ruby/2.2.0/set.rb:283:in `each'
    from /usr/local/Cellar/ruby/2.2.2/lib/ruby/2.2.0/rexml/parsers/baseparser.rb:411:in `pull_event'
    from /usr/local/Cellar/ruby/2.2.2/lib/ruby/2.2.0/rexml/parsers/baseparser.rb:184:in `pull'
    from /usr/local/Cellar/ruby/2.2.2/lib/ruby/2.2.0/rexml/parsers/streamparser.rb:18:in `parse'
    from /usr/local/Cellar/ruby/2.2.2/lib/ruby/2.2.0/rexml/document.rb:241:in `parse_stream'
    from /usr/local/lib/ruby/gems/2.2.0/gems/review-1.5.0/lib/review/epubmaker.rb:311:in `write_info_body'
    from /usr/local/lib/ruby/gems/2.2.0/gems/review-1.5.0/lib/review/epubmaker.rb:290:in `build_chap'
    from /usr/local/lib/ruby/gems/2.2.0/gems/review-1.5.0/lib/review/epubmaker.rb:207:in `block (2 levels) in build_body'
    from /usr/local/lib/ruby/gems/2.2.0/gems/review-1.5.0/lib/review/epubmaker.rb:206:in `each'
    from /usr/local/lib/ruby/gems/2.2.0/gems/review-1.5.0/lib/review/epubmaker.rb:206:in `block in build_body'
    from /usr/local/lib/ruby/gems/2.2.0/gems/review-1.5.0/lib/review/epubmaker.rb:191:in `each'
    from /usr/local/lib/ruby/gems/2.2.0/gems/review-1.5.0/lib/review/epubmaker.rb:191:in `build_body'
    from /usr/local/lib/ruby/gems/2.2.0/gems/review-1.5.0/lib/review/epubmaker.rb:61:in `produce'
    from /usr/local/lib/ruby/gems/2.2.0/gems/review-1.5.0/bin/review-epubmaker:44:in `<top (required)>'
    from /usr/local/bin/review-epubmaker:23:in `load'
    from /usr/local/bin/review-epubmaker:23:in `<main>'

試しにオフィシャルで提供されている sample-book( https://github.com/kmuto/review/tree/master/test/sample-book/src )を使ってみます。このサンプル ch01.re には脚注がないので16〜18行目を以下の通り変更します。

L16: 2行以上以上空いていても1行空いているのと同様に処理します@<fn>{fntest}。
L17: 
L18: //footnote[fntest][test]

やはりepubmakerはエラーになります。ちなみにpdfmakerはちゃんと動きます、実行結果は添付のとおりです。

ただ、手元にある昔のプロジェクトは脚注ありでも動いていたので、今度はconfig.ymlを遡って調べてみます。と、どうやらこのコミット 310a26b からコンパイルが通らなくなった模様です。どのパラメータが影響しているか、はたして本当にconfig.ymlの影響なのか引き続き調査中です。
2015-06-24 14 47 28

@suzukin
Copy link
Author

suzukin commented Jun 24, 2015

ちなみにエラー時点で「book-20150624-1734-m5rblm」といった感じのテンポラリフォルダはありますが「book-epub」は生成されません。book-20150624-1734-m5rblmの中にある ch01.html の脚注部分は問題なく作られていました。
2015-06-24 16 02 15

@takahashim
Copy link
Collaborator

@suzukin ひょっとして、layouts/layout.html.erb を使われていますか?
もし使っている場合、そのlayout.html.erb冒頭のDOCTYPE宣言とhtml要素の中身はどうなってますか?

@kdmsnr
Copy link
Collaborator

kdmsnr commented Jun 24, 2015

epub:type="noteref" みたいなのがREXMLで引っかかってるような

@takahashim
Copy link
Collaborator

(なんとなく、layout.html.erbの中身がXHTML1.1 になっているのに EPUB3を作ろうとしていて、xmlns:epub がなくてエラーになっているのではないかと推測しています)

@kdmsnr
Copy link
Collaborator

kdmsnr commented Jun 24, 2015

layouts/layout.html.erb を以下のように……

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml" xmlns:epub="http://www.idpf.org/2011/epub" lang="ja" xml:lang="ja">
<head>
.
.
.

@kdmsnr
Copy link
Collaborator

kdmsnr commented Jun 24, 2015

layout.epub.html.erb みたいなのを作ったほうがいいですかねえ。

@suzukin
Copy link
Author

suzukin commented Jun 24, 2015

おー! 進行中のプロジェクトはご指摘通り layouts/layout.html.erb が入ってました(layout.tex.erbをいじっていたときにlayout.html.erbも入ってた)、そして推察通りXHTML 1.1になっていました。

ただ、sample-book は layouts フォルダがそもそもないですね。。

@takahashim
Copy link
Collaborator

ひょっとしてconfig.ymlのhtmlversionを5にしないといけないのが自動で行われていないのかもですね…

@kdmsnr
Copy link
Collaborator

kdmsnr commented Jun 24, 2015

あ、手動で変えればエラー出ませんね。

htmlversion: 5

@takahashim
Copy link
Collaborator

#434 でどうでしょうか…

@suzukin
Copy link
Author

suzukin commented Jun 24, 2015

@takahashim @kdmsnr 検証、アドバイスありがとうございました。手動で5にすることでエラー回避できることをこちらでも確認できました。手元のデータでは脚注を使わないとエラーはおきなかったので、、htmlのバージョンに起因していたところまで特定できませんでした。XHTML 1.1の件は、実は自分の中で別のissueで管理していたので一気に2つ解決したことになります。今夜はゆっくり眠れそうです。

@suzukin suzukin closed this as completed Jun 24, 2015
@takahashim
Copy link
Collaborator

@suzukin いちおう最新版ではepubversionを3にすれば自動でhtmlversionも上書きされるはずです

@suzukin
Copy link
Author

suzukin commented Jun 26, 2015

あ、コメントしてませんでした。こちらでも上記の動作確認できました。ご対応ありがとうございます!

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

Successfully merging a pull request may close this issue.

3 participants