除了使用jQuery().load(url)
之外,有没有办法在另一个中嵌入一个降价(或其子风格 - 我正在使用PanDoc)文档?
我想要一份有例如的文件。 main.md
,chapter1.md
,chapter2.md
,main.md
自动加载chapter1.md
和chapter2.md
。
main.md
将在两章之间插入文字,例如
main.md
:
Some opening text...
...
[chapter1.md]
Some additional text...
...
[chapter2.md]
...
something else.
所以我不能使用cat *.md > final.md
方法
答案 0 :(得分:11)
Markdown本身缺少一个包含文件的符号,而不是那个文件。
pandoc有一个关于在代码块上使用自定义haskell过滤器来包含文件的示例,但是这个。在文本周围留下一个代码块(更重要的是)b。不会将新文件解析为markdown,坦白说我的haskell无法解决这个问题。
但是,可以通过使用perl
*执行预处理过程来实现此目的。我假设每个包含的内容都是上面显示的形式。
perl -ne 's/^\[(.+)\].*/`cat $1`/e;print' main.md > final.md
*我不喜欢使用perl,但是sed缺乏使用匹配模式从文件读取来确定名称的能力。
答案 1 :(得分:3)
如果您不希望子章节内联,则只需将链接插入主章节即可。这样,您就不需要预处理步骤。
正如Oliver Matthews所写,你可以用perl编写自己的预处理步骤。
或者您可以使用现有的预处理器,如m4
或cpp
(C预处理器),它允许包含文件。
但是,cpp
可能无法很好地处理文档中的C代码部分。特别是当它们中包含更多include指令时。
互联网上还有工具链可以将单独的mardown文档组合成更大的文档。不幸的是,我目前无法访问书签的备份。
这是一个类似的问题,答案是: Markdown and including multiple files 虽然答案没有解释如何在其他文本之间插入子章节。
答案 2 :(得分:0)
我最近一直在阅读这些帖子,尽管它们现在有点旧,还有 Markdown and including multiple files 上的帖子。我在这方面比较环保,所以我无法让 Sethen's markdown-include function 工作,因为我不懂 javascript。
但在我看来,你可以很容易地用 Python 编写一个简单的递归函数。它将采用 .md 文件作为其参数并对其进行解析,寻找指示参数文件正在调用另一个 .md 文件的那个/位置的特征语法。解析不仅会寻找特征语法,还会构建一个长字符串,其中包含一路上检查过的所有降价。如果该函数遇到对 .md 文件的引用,它会使用刚刚找到的 .md 文件调用自身。当它到达底部时,它会通过递归级别弹回,返回它通过潜水所经历的所有降价。最终结果将是返回一个包含所有 Markdown 的 .md 文件。
然后很容易将这个更大的、返回的、100% 标准降价 .md 文件提供给 pandoc。