We read every piece of feedback, and take your input very seriously.
To see all available qualifiers, see our documentation.
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
<nav epub:type="toc">
文書内に <nav role="doc-toc"> などのマークアップで目次を入れることで、Vivliostyle Viewer の目次メニューや出力したPDFの「しおり」には目次ができるのに、EPUB出力ではそれがEPUBの目次にならないという問題があります。
<nav role="doc-toc">
例: https://github.com/MurakamiShinyu/shokubutsu_ichinichi/blob/main/shokubutsu_ichinichi.html
これを Vivliostyle CLI で EPUB に変換します。
vivliostyle build shokubutsu_ichinichi.html -o shokubutsu_ichinichi.epub
このEPUBをEPUB閲覧アプリ(Apple Books、Kindle Previewerなど)で開くと、目次メニューにタイトル「植物一日一題」以外に目次項目が表示されません。
EPUBの中のXHTMLファイル shokubutsu_ichinichi.xhtml を見てみると、元のHTMLファイルにあった <nav class="toc" role="doc-toc"> とは別に、次のようにEPUB用の目次がbody要素の終わりに追加されています:
shokubutsu_ichinichi.xhtml
<nav class="toc" role="doc-toc">
<nav epub:type="landmarks" id="landmarks" hidden=""> <ol> <li><a epub:type="toc" href="shokubutsu_ichinichi.xhtml#toc">Table of Contents</a></li> </ol> </nav> <nav id="toc" role="doc-toc" epub:type="toc" hidden=""> <ol> <li><a href="shokubutsu_ichinichi.xhtml">植物一日一題</a></li> </ol> </nav> </body> </html>
このように、本のタイトルだけがEPUBでの目次項目になっています。また、次の問題もあります:
hidden
nav
以下ように修正するとよいと思います:
<nav epub:type="…">
findTocElements()
role="doc-toc"
nav,.toc,#toc,#table-of-contents,#contents,[role=directory]
<ol>
<ul>
epub:type="toc"
<nav epub:type="landmarks">
<h2>Table of Contents</h2>
<h2>Landmarks</h2>
resources
"rel": "contents"
readingOrder
epub:
doc.querySelectorAll("nav[*|type],nav[epub\\:type]")
The text was updated successfully, but these errors were encountered:
No branches or pull requests
文書内に
<nav role="doc-toc">
などのマークアップで目次を入れることで、Vivliostyle Viewer の目次メニューや出力したPDFの「しおり」には目次ができるのに、EPUB出力ではそれがEPUBの目次にならないという問題があります。例:
https://github.com/MurakamiShinyu/shokubutsu_ichinichi/blob/main/shokubutsu_ichinichi.html
これを Vivliostyle CLI で EPUB に変換します。
このEPUBをEPUB閲覧アプリ(Apple Books、Kindle Previewerなど)で開くと、目次メニューにタイトル「植物一日一題」以外に目次項目が表示されません。
EPUBの中のXHTMLファイル
shokubutsu_ichinichi.xhtml
を見てみると、元のHTMLファイルにあった<nav class="toc" role="doc-toc">
とは別に、次のようにEPUB用の目次がbody要素の終わりに追加されています:このように、本のタイトルだけがEPUBでの目次項目になっています。また、次の問題もあります:
hidden
属性で非表示になっているEPUB用のnav
要素になっている。これでは目次ページにジャンプしようとしても文書の最後のページにジャンプするだけとなる。修正の提案
以下ように修正するとよいと思います:
<nav epub:type="…">
がある場合はそれをそのまま活かし、別のnav要素を追加しない。<nav role="doc-toc">
など)が元の文書内にあれば、その内容を使ってEPUB用の目次<nav epub:type="toc">
を作る。findTocElements()
の処理(最近 Improve TOC handling vivliostyle.js#1259 と fix: All<nav epub:type="…">
elements in EPUB navigation doc should be shown in TOC box vivliostyle.js#1271 で修正したもの)を参考に。その要約:<nav epub:type="…">
)があれば、それを使う。それがなくて、webpub用の目次(属性role="doc-toc"
付きの要素)があれば、それを使う。どちらもない場合には、セレクタnav,.toc,#toc,#table-of-contents,#contents,[role=directory]
で見つかる要素を使う。<ol>
しか認められていないが、webpub用の目次では<ol>
,<ul>
とも有効なので、EPUB用の目次に変換するには<ul>
を<ol>
に変える必要がある。<nav role="doc-toc">
にepub:type="toc"
を追加するのではなく、<nav epub:type="toc">
を別の要素として作る必要がある。本の内容として表示する文書(EPUBのspine項目)にそれを入れる場合には、hidden
属性が必要。(EPUB用目次を別のXHTMLファイルに生成して、spine項目にはしない場合にはhidden
属性はなくてよい)<nav epub:type="landmarks">
で目次へのリンクを出力する場合、そのリンク先は文書内に元からある目次の要素(hidden
属性なし)とする。<nav epub:type="landmarks">
は<nav epub:type="toc">
のあとに出力したほうがよい。Vivliostyle ViewerでTOC Boxで出現順に表示される。Landmarksよりも目次が最初にあるほうが便利。<nav epub:type="…">
要素内に見出しがあったほうがよい。例:<h2>Table of Contents</h2>
、<h2>Landmarks</h2>
。参考:Vivliostyle.jsで最近行った目次の扱いの修正について
resources
にある目次文書("rel": "contents"
)がreadingOrder
の最後にあるかのように組版結果に入ってしまうバグを修正しました。これで、EPUBでのspine項目にはしない目次文書と同じ扱いになりました。(See: HTML documents listed in "resources" in pub-manifest should not be rendered as if in "readingOrder" vivliostyle.js#1257)<nav epub:type="…">
elements in EPUB navigation doc should be shown in TOC box vivliostyle.js#1271)<nav epub:type="…">
とwebpub用目次(属性role="doc-toc"
)が両方ある場合には、EPUB用目次だけ使うようにした。<nav epub:type="…">
があればそれを使うようにした。epub:
は名前空間プレフィックスだがHTMLの場合はそうではないのでdoc.querySelectorAll("nav[*|type],nav[epub\\:type]")
で両方を検出するようにした。<nav epub:type="toc">
と書くことができるようになります。The text was updated successfully, but these errors were encountered: