将一个降价文档嵌入另一个

时间:2013-08-26 07:33:10

标签: markdown

除了使用jQuery().load(url)之外,有没有办法在另一个中嵌入一个降价(或其子风格 - 我正在使用PanDoc)文档?

我想要一份有例如的文件。 main.mdchapter1.mdchapter2.mdmain.md自动加载chapter1.mdchapter2.md

main.md将在两章之间插入文字,例如

main.md

Some opening text...
...
[chapter1.md]

Some additional text...
...
[chapter2.md]
...
something else.

所以我不能使用cat *.md > final.md方法

3 个答案:

答案 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编写自己的预处理步骤。

或者您可以使用现有的预处理器,如m4cpp(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。

相关问题