Markdown 将一个降价文档嵌入到另一个降价文档中

Markdown 将一个降价文档嵌入到另一个降价文档中,markdown,Markdown,除了使用jQuery().load(url),是否有办法将一个标记(或其子样式-我使用的是PanDoc)文档嵌入到另一个文档中 我希望有一个文档,例如,main.md,chapter1.md,chapter2.md,自动加载main.mdchapter1.md和chapter2.md main.md将在两章之间包含文本,例如 main.md: Some opening text... ... [chapter1.md] Some additional text... ... [chapter2

除了使用
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
方法

标记本身缺少包含文件的符号,这就破坏了它

有一个关于在代码块上使用自定义haskell筛选器来包含文件的示例,但这是一个。在文本和(更重要的)b周围留下一个代码块。不会将新文件解析为markdown,坦率地说,我的haskell无法解决这个问题

但是,您可以通过使用
perl
*,执行预处理过程来实现这一点。我假设每个include都在一行上,其形式如上图所示

perl -ne 's/^\[(.+)\].*/`cat $1`/e;print' main.md > final.md

*我不喜欢求助于perl,但sed缺乏使用匹配模式读取文件以确定名称的能力。

如果不希望子章节内联,只需在主章节中插入链接即可。这样,就不需要预处理步骤

正如Oliver Matthews所写,您可以使用perl编写自己的预处理步骤

或者您可以使用现有的预处理器,如
m4
cpp
(C预处理器),它允许包含文件。
cpp
可能无法很好地处理文档中的C代码部分。特别是当其中包含更多include指令时

互联网上也有工具链,将单独的mardown文档组合成更大的文档。不幸的是,我目前在访问书签备份时遇到问题

这里有一个类似的问题,有答案:
尽管答案没有解释如何在其他文本之间插入子章节。

我最近一直在阅读这些帖子,尽管它们现在有点旧了,也有点过时了。我对所有这些都比较生疏,所以因为我不懂javascript,所以一直无法开始工作

但在我看来,您可以很容易地用Python编写一个简单的递归函数。它将把一个.md文件作为它的参数,并对其进行解析,寻找表明该参数文件调用另一个.md文件的特征语法。解析将不仅查找特征语法,还将构建一个包含所有标记的长字符串。如果函数命中对.md文件的引用,它将使用刚刚找到的.md文件调用自己。当它到达底部时,它会通过递归级别弹出,返回它在下降过程中经过的所有降价。最终结果是返回一个包含所有标记的.md文件


然后很容易将这个更大、返回的100%标准markdown.md文件提供给pandoc。

非常感谢@OliverMatthews。我可能会使用python而不是perl,但预处理听起来是个好主意。在花了几十个小时寻找一种可行且快速的方法来实现Pandoc中的includes之后,这终于奏效了。非常感谢。下面是我的perl语句现在的样子——它经过了一点修改,可以包含带空格的文件路径,并与路径搜索ST插件(如AutoFileName)兼容。它还可以在ST构建系统中工作。语法是
#(path/to/file)
perl-ne的/^\\\((.+)\\).*/
cat\“\\$1\”
/e;打印“${file\u base\u name}.md>result.md
谢谢@Sebastian。这也是一个非常有用的链接。我曾考虑过使用cpp(以及使用#include),但我认为这会是一个痛苦的过程,因为标题也以#s开头。对于那些喜欢更深奥一点的东西的人来说,总是有漏斗网(这可能是我个人会使用的,但我试着把它限制在你会安装的东西上)。