GitHub 页面上的 Jekyll:在另一个 markdown 文件中包含 markdown

Jekyll on GitHub Pages: include markdown in another markdown file

我在 GitHub 页面上使用 kramdown 和 Jekyll。我有一个 markdown,我想使用两次,并且不想维护它的两个版本。如何将其包含在其他降价文件中?

例如,我想输入类似

的内容
{: include otherFile.md }

并在该命令所在的位置直接呈现 otherFile.md 的内容。请注意,父文件也是 markdown 文件,而不是 HTML 模板。

其他注意事项:如果能够使用默认的 GitHub 页面工作流程执行此操作,并且不必使用 GH 页面禁用的插件并且必须推送编译版本的插件,那就太好了手动网站。

要走的路似乎是include_relative. I found this answer by user geraldb on the old Jekyll forums:

Yes, there's a simple way. It works "out-of-the-box" in Jekyll (and GitHub Pages). Just tried it. See the Vienna.html test page e.g.:

---
layout: default
---

some text here

{% include_relative test_header.md %}

some more text here

{% include_relative test_footer.md %}

See the source -> test.md and the live page.

The "trick" if you want to call it so - is to use include_relative if you want to have the building block texts (e.g. intro.md, explanation.md, conclusion.md, etc.) along with your page (in the same folder). Cheers. Happy Jekylling.


自从我第一次写这个答案后,原来的论坛 post 似乎完全消失了,我还没有在 archive.org 上找到它的存档。旧论坛上的答案 link 是 this (now points to an unrelated post), and the profile of geraldb in the new forum is here

引用答案中的第一个 link 已更新为指向存储库中当前存在的正确文件,1 和第二个 link 已死但保持不变,因为我在这里引用原作者。


1感谢Ben Leggiero找到!

有一个 Ruby gem markdown_helper 支持包含文件。

对我来说,通过 include_relative 导入和使用 normal 无法解决问题 include 不会呈现包含的 Markdown 文件。

但是捕获包含然后通过管道将其通过 markdownify 是一个很好的解决方法:

{% capture my_include %}{% include a_markdown_file.md %}{% endcapture %}
{{ my_include | markdownify }}

我在 GH:/jekyll/jekyll#1303 (comment) 中找到了这个。这是避免捕获的功能请求。不幸的是,它已经关闭了。

我补充了:

---
layout: default
---

到 .html 文件的顶部,{% include my_partial.html %} 终于成功了。