他のファイル、インクルードファイルなどを参照できるマークダウンフォークはありますか?具体的には、頻繁に呼び出すリンクを含む別個のマークダウンファイルを作成しますが、常にではありません(このB.mdを呼び出します)。現在のファイル(A.md)の最後からではなく、他のファイル(B.md)からリンクをプルするようにします。
短い答えはノーです。長い答えはイエスです。 :-)
Markdownは、人々が簡単なHTMLマークアップに簡単に変換できるシンプルで読みやすいテキストを作成できるように設計されました。ドキュメントのレイアウトは実際には行いません。たとえば、画像を右または左に揃える実際の方法はありません。あなたの質問に関しては、マークダウンのどのバージョンにも、あるファイルから別のファイルへの単一のリンクを含めるためのマークダウンコマンドはありません(私の知る限り)。
この機能に最も近いのは 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
したがって、01_preface.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
...以前に使用したのと同じコマンドが、リンク全体を含めながらマージと変換を実行します。そのファイルの先頭に空白行または2行を残すようにしてください。 pandoc documentation は、この方法でマージされたファイル間に空白行を追加することを示していますが、空白行がないとこれは機能しませんでした。
cat
コマンドを使用して、入力ファイルをmarkdown_py
に連結する前に連結することができます。これは、入力される複数の入力ファイルでpandoc
と同じ効果があります。
cat *.md | markdown_py > youroutputname.html
私のMac上のPythonバージョンのMarkdownの上記のpandocの例とほとんど同じように機能します。
実際にマークダウンプリプロセッサを使用できます( MarkdownPP )。他の回答からの架空の本の例を使用して、章を表す.mdpp
ファイルを作成します。その後、.mdpp
ファイルは!INCLUDE "path/to/file.mdpp"
ディレクティブを使用できます。このディレクティブは、最終出力の参照ファイルの内容でディレクティブを再帰的に置き換えて動作します。
chapters/preface.mdpp
chapters/introduction.mdpp
chapters/why_markdown_is_useful.mdpp
chapters/limitations_of_markdown.mdpp
chapters/conclusions.mdpp
次に、以下を含むindex.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 リポジトリの readme.mdpp
を確認することを忘れないでください。
私の解決策はm4を使用することです。ほとんどのプラットフォームでサポートされており、binutilsパッケージに含まれています。
最初にマクロchangequote()
をファイルにインクルードして、引用文字を好みのものに変更します(デフォルトは `')。ファイルが処理されると、マクロは削除されます。
changequote(`{{', `}}')
include({{other_file}})
コマンドラインで:
m4 -I./dir_containing_other_file/ input.md > _tmp.md
pandoc -o output.html _tmp.md
つい最近、Nodeに markdown-include という名前のこのようなものを書きました。これにより、Cスタイルの構文でマークダウンファイルを含めることができます。
#include "my-file.md"
これはあなたが尋ねている質問とうまく調和していると思います。私はこれが古いものであることを知っていますが、少なくとも更新したかったです。
これを任意のマークダウンファイルに含めることができます。そのファイルにはさらにインクルードを含めることができ、markdown-includeは内部リンクを作成し、すべての作業を行います。
npm
からダウンロードできます
npm install -g markdown-include
Multimarkdown はこれをネイティブに持っています。それを呼び出します ファイルトランスクルージョン :
{{some_other_file.txt}}
必要なのはそれだけです。奇妙な名前ですが、すべてのボックスにチェックマークが付いています。
includes.txt
ファイルを使用し、すべてのファイルを正しい順序で使用して、次のようにpandocを実行します。
pandoc -s $(cat includes.txt) --quiet -f markdown -t html5 --css pandoc.css -o index.html
チャームのように機能します!
実際、ほとんどすべてのPandoc
およびhtml
構文をサポートしているため、latex
で直接ラテックスコマンドである\input{filename}
および\include{filename}
を使用できます。
ただし、含まれているファイルはlatex
ファイルとして扱われることに注意してください。ただし、markdown
を使用してlatex
をPandox
に簡単にコンパイルできます。
Asciidoc( http://www.methods.co.nz/asciidoc/ )は、実際にはステロイドの値下げです。全体として、アスキードックとマークダウンは非常に似ており、切り替えるのはかなり簡単です。 hugeマークダウンに対するAsciidocの利点は、他のAsciidocファイルに対してだけでなく、任意の形式に対してもインクルードをサポートしていることです。インクルードファイル内の行番号またはタグに基づいて、ファイルを部分的にインクルードすることもできます。
ドキュメントを書くとき、他のファイルを含めることは本当に命の恩人です。
たとえば、次のような内容のasciidocファイルを作成できます。
// [source,Perl]
// ----
// include::script.pl[]
// ----
script.pl
でサンプルを管理します
そして、きっと疑問に思うでしょう。Githubはasciidocもサポートしています。
新しいファイルインクルード構文を採用する方が良いと思います(コードブロックを台無しにしないで、Cスタイルのインクルードはまったく間違っていると思います)、私はPerlで小さなツールを書きました。 cat.pl
の命名。これはcat
(cat a.txt b.txt c.txt
は3つのファイルをマージします)のように動作しますが、ファイルをマージしますin depthではなく、in widthではありません。使い方?
$ Perl cat.pl <your file>
構文の詳細は次のとおりです。
@include <-=path=
%include <-=path=
ファイルのインクルードloopsを適切に処理できます(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 a.txt > c.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バージョンも作成しました。
実際、このページの誰もHTMLソリューションを提供していないことに驚いています。 MarkDownファイルには、HTMLタグの広い部分(すべてではないにしても)を含めることができることを理解しています。したがって、次の手順に従ってください。
From here :MarkDownファイルを<span style="display:block"> ... </span>
タグに入れて、それらがマークダウンとしてレンダリングされるようにします。追加できるスタイルプロパティは他にもたくさんあります。私が好きなのはtext-align:justify
です。
From here :<iframe src="/path/to/file.md" seamless></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
です。標準で.. include:: inclusion.txt
構文が付属しています。 ReText editor があり、ライブプレビューもあります。
Mac OS XではMarked 2を使用しています。他のファイルを含めるために次の構文をサポートしています。
<<[chapters/chapter1.md]
<<[chapters/chapter2.md]
<<[chapters/chapter3.md]
<<[chapters/chapter4.md]
残念ながら、構文を理解していないため、これをpandocにフィードすることはできません。ただし、構文を削除してpandocコマンドラインを作成するスクリプトを作成するのは簡単です。