mdbookで内部リンクを貼るときに、README.md
へのリンクは現時点では少し工夫が必要である旨の備忘録です。
はじめに
mdbookはRust製のmarkdownドキュメントビルダーです。
README.md
への内部リンクを貼ろうとした際に少しハマったので、備忘録を残します。
mdbookで内部リンクを貼る
内部リンクを貼る方法
まず、普通に内部リンクを貼る方法です。
相対パスでmarkdownファイルへのリンクを
[<リンクテキスト>](<リンク先mdファイルへの相対パス>)
形式で貼るだけで問題ありません。
html変換時の整合性はmdbookが担保してくれます。
## Normal Links - Link to Section 1 aaa.md: [section_1 aaa](./section_1/aaa.md)
README.mdへの内部リンクを貼る際の注意点
README.md
へのリンクを貼るときは現時点(2023/03)では注意が必要です。
単純にREADME.md
への相対リンクを書いても上手く機能しません。
// 上手くいかない例 - Link to Section 1 README.md with [./section_1/README.md](./section_1/README.md)
この問題は、README.md
の代わりにindex.md
またはindex.html
と書くことで回避できます。
// 解決策 - Link to Section 1 README.md with [./section_1/index.md](./section_1/index.md) - Link to Section 1 README.md with [./section_1/index.html](./section_1/index.html)
これは、mdbookがREADME.md
への相対リンクを、html変換後のindex.html
に正しく変換できていないことに起因しています。
これを解決するPull Requestはすでに作成されていますが、現時点ではまだmergeには至っていないため、上記のような回避策が必要です。
Fix relative links to README.md files by chrstnst · Pull Request #1921 · rust-lang/mdBook · GitHub
まとめ
成功する内部リンク/失敗する内部リンクを実装例としてまとめます。
# Internal link Examples ## Normal Links - Link to Section 1 aaa.md with [./section_1/aaa.md](./section_1/aaa.md) - Succeeded ## README.md Links - Link to Section 1 README.md with [./section_1/README.md](./section_1/README.md) - Failed (404) - Link to Section 1 README.md with [./section_1/README.html](./section_1/README.html) - Failed (404) - Link to Section 1 README.md with [./section_1/index.md](./section_1/index.md) - Succeeded - Link to Section 1 README.md with [./section_1/index.html](./section_1/index.html) - Succeeded
ソースコード: mdbook-example/internal_links.md at main · bioerrorlog/mdbook-example · GitHub
おわりに
以上、mdbookで内部リンクを貼る方法とその注意点を簡単に整理しました。
どなたかの参考になれば幸いです。
[関連記事]
参考
Mdbook should translate internal references · Issue #408 · rust-lang/mdBook · GitHub
Internal links to README.md are broken · Issue #984 · rust-lang/mdBook · GitHub
Fix relative links to README.md files by chrstnst · Pull Request #1921 · rust-lang/mdBook · GitHub
GitHub - rust-lang/mdBook: Create book from markdown files. Like Gitbook but implemented in Rust