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

TOC generation in an entry file #115

Open
MurakamiShinyu opened this issue Feb 2, 2021 · 3 comments · May be fixed by #485
Open

TOC generation in an entry file #115

MurakamiShinyu opened this issue Feb 2, 2021 · 3 comments · May be fixed by #485
Milestone

Comments

@MurakamiShinyu
Copy link
Member

From #111 (comment)

entry に目次ファイルが指定されたとき

entry に指定されているファイルが目次出力のファイル(デフォルト "index.html")と一致するとき、あるいは entry に rel: "contents" でファイル名が指定されているとき、自動目次生成がされないようになっています。

これを次のように変えるとよいのでないかと思います:

entry に指定されている目次ファイル("index.html" あるいはそのソースとなる "index.md" ファイル、など)が存在するとして、

  • そのHTMLファイル(markdown の場合 HTML に変換したもの)の中の最初に見つかる <nav> 要素を生成された目次に置き換える

    • 元のファイルには <nav></nav> だけあればよい。それがプレースホルダーになる。
    • 元の nav 要素内に見出しなど目次のリスト要素(通常 ol 要素)以外のものがあれば、それらは保持する

補足

  • entryに指定された目次のファイルがHTMLの場合は、そのファイルを直接書き換えるのではなく workspaceDir に出力されるHTMLファイルあるいは組版・変換処理のためのテンポラリファイルのHTML内に目次生成を行う
@phasetr
Copy link

phasetr commented Feb 18, 2021

index だと索引なので、目次に対しては toc (table of contents) だとありがたいです。

@MurakamiShinyu
Copy link
Member Author

MurakamiShinyu commented Feb 19, 2021

@phasetr
toc: true を指定すると "index.html" になりますが、toc: "toc.html" のように自分でファイル名を指定することができます。👉Vivliostyle CLI ユーザーガイド > 構成ファイルでの目次生成の指定

デフォルトを "index.html" にする理由は、Webサイトの最上位のファイルを "index.html" とするWeb標準と合わせるためです。index.html 内の nav 要素にサイト内の他のページへのリンクがあって、サイト内のナビゲーションができるというのが標準的なWebサイトの作り方です。また、Webで本を作るWeb bookの標準を作ろうとするアイデアのひとつである WebBook Level 1, Unofficial Proposal Draft に次のようにあることも参考にしています:

The navigation document MUST be a [html] document named index.html if its serialization is HTML ...

@phasetr
Copy link

phasetr commented Feb 19, 2021

ご指摘ありがとうございます。不勉強で申し訳ありません。ちょうど今、ユーザーガイド内の記述に気づかずに、単純に先頭のファイルとしてvivliostyle.config.jstoc.htmlを指定してやっていました。あらためてユーザーガイドも見直そうと思います。

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