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


当前回答

您实际上可以使用Markdown预处理器(MarkdownPP)。运行其他答案中的假设图书示例,您将创建.mdpp文件来表示您的章节。然后.mdpp文件可以使用!INCLUDE "路径/to/file。Mdpp指令,该指令在最终输出中用引用文件的内容递归地替换该指令。

chapters/preface.mdpp
chapters/introduction.mdpp
chapters/why_markdown_is_useful.mdpp
chapters/limitations_of_markdown.mdpp
chapters/conclusions.mdpp

然后需要一个索引。MDPP包含以下内容:

!INCLUDE "chapters/preface.mdpp"
!INCLUDE "chapters/introduction.mdpp"
!INCLUDE "chapters/why_markdown_is_useful.mdpp"
!INCLUDE "chapters/limitations_of_markdown.mdpp"
!INCLUDE "chapters/conclusions.mdpp"

要渲染你的书,你只需要在index.mdpp上运行预处理器:

$ markdown-pp.py index.mdpp mybook.md

别忘了看自述书。MarkdownPP存储库中的mdpp,用于展示适合大型文档项目的预处理器特性。

其他回答

切换到asciidoc,这样你就不必使用Markdown这样的语言了,这些语言现在非常原始:)

简短的回答是否定的。长一点的答案是肯定的。: -)

Markdown的设计目的是让人们能够编写简单、可读的文本,这些文本可以很容易地转换为简单的HTML标记。它不做文档布局。例如,没有真正的方法来将图像向左或向右对齐。至于你的问题,在任何版本的markdown中都没有包含从一个文件到另一个文件的单个链接的markdown命令(据我所知)。

与此功能最接近的是Pandoc。Pandoc允许您将文件合并为转换的一部分,这允许您轻松地将多个文件呈现为单个输出。例如,如果你正在创建一本书,那么你可以有这样的章节:

01_preface.md
02_introduction.md
03_why_markdown_is_useful.md
04_limitations_of_markdown.md
05_conclusions.md

你可以在同一个目录下执行这个命令来合并它们:

pandoc *.md > markdown_book.html

因为pandoc会在翻译之前合并所有的文件,你可以像这样在最后一个文件中包含你的链接:

01_preface.md
02_introduction.md
03_why_markdown_is_useful.md
04_limitations_of_markdown.md
05_conclusions.md
06_links.md

这是你序言的一部分。Md可以是这样的:

I always wanted to write a book with [markdown][mkdnlink].

也是你02_introduction的一部分。Md可以是这样的:

Let's start digging into [the best text-based syntax][mkdnlink] available.

只要你的最后一个文件包含这行:

[mkdnlink]: http://daringfireball.net/projects/markdown

...之前使用的相同命令将执行合并和转换,同时始终包含该链接。只要确保在文件的开头留下一到两行空白即可。pandoc文档说,它在以这种方式合并的文件之间添加了一个空行,但如果没有空行,这对我来说行不通。

受@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

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

cat *.md | markdown_py > youroutputname.html

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

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

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