是否有任何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,用于展示适合大型文档项目的预处理器特性。
其他回答
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"
Multimarkdown天生就有这个。它称之为文件传输:
{{some_other_file.txt}}
这就是一切。名字很奇怪,但符合所有条件。
我认为我们最好采用一种新的文件包含语法(这样就不会搞砸了 代码块,我认为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版本,具有相同的效果(不相同,但接近)。
受@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预处理器(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,用于展示适合大型文档项目的预处理器特性。
推荐文章
- 使用pandoc从Markdown转换为PDF时设置空白大小
- 如何显示数学方程在一般github的markdown(不是github的博客)
- 使用Markdown的Sphinx而不是reST
- 降价和图像对齐
- 如何样式一个JSON块在Github维基?
- 标记“本机”文本对齐方式
- Markdown和包括多个文件
- 降价vs加价——它们有关联吗?
- 如何在降价表中编写列表?
- 获得带下划线的文本Markdown
- 我如何测试我的自述。Md文件在提交到github之前会是什么样子?
- 我如何测试我的自述。Md文件在提交到github之前会是什么样子?
- 在Markdown中创建两个空行
- 如何添加脚注到github风味Markdown?
- 如何在Bitbucket中标记嵌套列表项?