是否有任何markdown fork允许你引用其他文件,比如包含文件?具体来说,我想创建一个单独的markdown文件,其中包含我经常调用但不总是调用的链接(调用此B.md),然后当我通过引用链接到我正在写入的md文件(A.md)时,我希望它从另一个文件(B.md)中拉出链接,而不是从当前文件(A.md)的末尾。


当前回答

我在Mac OS x上使用标记2,它支持以下语法来包含其他文件。

<<[chapters/chapter1.md]
<<[chapters/chapter2.md]
<<[chapters/chapter3.md]
<<[chapters/chapter4.md]

遗憾的是,您不能将其提供给pandoc,因为它不理解语法。但是,编写一个脚本来剥离语法来构造一个pandoc命令行是非常容易的。

其他回答

我的解是用m4。大多数平台都支持它,并且包含在binutils包中。

首先在文件中包含一个宏changequote(),以将引用字符更改为您喜欢的字符(默认为“)。处理文件时将删除宏。

changequote(`{{', `}}')
include({{other_file}})

在命令行中:

m4 -I./dir_containing_other_file/ input.md > _tmp.md
pandoc -o output.html _tmp.md

事实上,你可以使用\input{filename}和\include{filename}这两个乳胶命令, 因为它支持几乎所有的html和latex语法。

但是要注意,包含的文件将被视为乳胶文件。但是您可以使用Pandox轻松地将您的markdown编译为latex。

受@Oliver Matthews回答的启发,你可以创建一个perl脚本,递归地查找语法!md]],并将其替换为B.md content


让我们创建名为parsem .sh的递归脚本

#!/usr/bin/env bash
perl -ne 's#^!\[\[(.+?)\]\].*#`'$0' "$1"`#e;print' "$@"

像这样使用它

./parseMd.sh A.md > result.md

使用它和pandoc一起导出为pdf

pandoc <(./parseMd.sh A.md) -o result.pdf

Multimarkdown天生就有这个。它称之为文件传输:

{{some_other_file.txt}}

这就是一切。名字很奇怪,但符合所有条件。

我使用一个包含我所有文件的正确顺序的include .txt文件 我像这样执行pandoc:

Pandoc -s $(cat includes.txt)——quiet -f markdown -t html5——css Pandoc .css -o index.html

效果好极了!