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


当前回答

实际上,让我感到惊讶的是,这个页面上没有人提供任何HTML解决方案。据我所知,MarkDown文件可以包括大部分(如果不是全部)HTML标签。所以请遵循以下步骤:

从这里:把你的MarkDown文件放在<span style="display:block">…</span>标签,以确保它们将被呈现为markdown。你还有很多其他的样式属性可以添加。我喜欢的一个是text-align:justify。 从这里开始:使用<iframe src="/path/to/file将文件包含在主文件中。医学博士“无缝> < / iframe >

p.s. 1。这个解决方案并不适用于所有MarkDown引擎/渲染。例如,Typora确实正确地渲染了文件,但Visual Studio Code却没有。如果其他人能在其他平台上分享他们的经验,那就太好了。我特别想了解GitHub和GitLab…

P.S.2。在进一步的调查中,似乎有重大的不兼容问题导致在许多平台上不能正确地呈现,包括Typora, GitHub和Visual Studio代码。在我解决之前请不要用这个。我不会删除答案只是为了讨论,如果你可以分享你的意见。

P.S.3。为了进一步调查这个问题,我在StackOverflow和Reddit上提出了这个问题。

P.S.4。经过一番深入研究后,我得出的结论是,就目前而言,AsciiDoc是更好的文档选择。它带有内置的包含功能,由GitHub呈现,Atom和vscode等主要代码编辑器都有用于实时预览的扩展。可以使用Pandoc或其他工具自动将现有MarkDown代码转换为AsciiDoc,并进行微小的更改。

P.S.5。另一种具有内置包含功能的轻量级标记语言是reStructuredText。它附带…包括::inclusion.txt 标准语法。还有带有实时预览的文本编辑器。

其他回答

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

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

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

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

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

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

vcode -markdown-preview-enhanced支持@import语法

https://github.com/shd101wyy/vscode-markdown-preview-enhanced

这可能意味着它是底层工具的一部分

https://github.com/shd101wyy/mume

以及其他基于mume的工具

https://github.com/gabyx/TechnicalMarkdown

下面是我如何在我的文档中使用它的一个例子,我用vcode -markdown-preview-enhanced处理:


[[Epigenetics]]
@import "epigenetics.md"

我认为我们最好采用一种新的文件包含语法(这样就不会搞砸了 代码块,我认为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版本,具有相同的效果(不相同,但接近)。

恕我直言,你可以通过连接你的输入得到你的结果*。Md文件如下:

$ pandoc -s -o outputDoc.pdf inputDoc1.md inputDoc2.md outputDoc3.md

就在最近,我在Node中写了一些类似的东西,叫做markdown-include,它允许你用C风格的语法包含markdown文件,像这样:

#include "my-file.md"

我相信这和你问的问题很吻合。我知道这是一个旧的,但我至少想更新它。

您可以将此包含在任何您希望的标记文件中。该文件还可以有更多的include, markdown-include将创建一个内部链接,并为您完成所有工作。

你可以通过npm下载它

npm install -g markdown-include