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


当前回答

我只想提一下,在将输入文件输送到markdown_py之前,可以使用cat命令连接输入文件,这与pandoc处理多个输入文件的效果相同。

cat *.md | markdown_py > youroutputname.html

在我的Mac上,Python版本的Markdown与上面的pandoc示例几乎相同。

其他回答

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

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

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

事实上,你可以使用\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

我认为我们最好采用一种新的文件包含语法(这样就不会搞砸了 代码块,我认为C风格的包含是完全错误的),我用Perl写了一个小工具,命名为cat.pl, 因为它的工作方式像cat (cat a.txt b.txt c.txt将合并三个 文件),但它合并文件的深度,而不是宽度。如何使用?

$ perl cat.pl <your file>

详细语法为:

递归包含文件:@include <-=path= 只包含一个:%include <-=path=

它可以正确地处理文件包含循环(如果a.txt <- b.txt, b.txt <- a.txt,那么您期望什么?)

例子:

a.txt:

a.txt

    a <- b

    @include <-=b.txt=

a.end

b.txt:

b.txt

    b <- a

    @include <-=a.txt=

b.end

Perl cat.pl .txt > c.txt

a.txt

    a <- b

    b.txt

        b <- a

        a.txt

            a <- b

            @include <-=b.txt= (note:won't include, because it will lead to infinite loop.)

        a.end

    b.end

a.end

更多例子请访问https://github.com/district10/cat/blob/master/tutorial_cat.pl_.md。

我还编写了一个Java版本,具有相同的效果(不相同,但接近)。

阿西多克其实是类固醇的减价品。总的来说,Asciidoc和Markdown看起来非常相似,而且很容易切换。与markdown相比,Asciidoc的一个巨大好处是它已经支持include,用于其他Asciidoc文件,还支持任何您喜欢的格式。您甚至可以根据所包含文件中的行号或标记部分包含文件。

当你写文档时,包含其他文件真的是一个救星。

例如,你可以有一个包含以下内容的asciidoc文件:

// [source,perl]
// ----
// include::script.pl[]
// ----

并在script.pl中维护您的示例

我相信你会想,是的,Github也支持asciidoc。