포함 파일과 같은 다른 파일을 참조 할 수있는 마크 다운 포크가 있습니까? 특히, 자주 호출하지만 항상 그렇지는 않지만 (이 B.md라고 부르는) 링크가있는 별도의 마크 다운 파일을 만들고 싶습니다 .md 파일에서 참조로 링크 할 때 (A.md), 나는 현재 파일의 끝 (A.md)이 아닌 다른 파일 (B.md)에서 링크를 가져 오는 것이 좋습니다.
포함 파일과 같은 다른 파일을 참조 할 수있는 마크 다운 포크가 있습니까? 특히, 자주 호출하지만 항상 그렇지는 않지만 (이 B.md라고 부르는) 링크가있는 별도의 마크 다운 파일을 만들고 싶습니다 .md 파일에서 참조로 링크 할 때 (A.md), 나는 현재 파일의 끝 (A.md)이 아닌 다른 파일 (B.md)에서 링크를 가져 오는 것이 좋습니다.
답변:
짧은 대답은 '아니요'입니다. 긴 대답은 그렇습니다. :-)
마크 다운은 사람들이 간단한 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
... 이전에 사용 된 동일한 명령은 병합과 변환을 수행하면서 해당 링크를 전체에 포함시킵니다. 해당 파일의 시작 부분에 빈 줄을 두어 두십시오. pandoc 설명서 는이 방법을 병합 파일 사이에 빈 줄을 추가 있다고하지만, 이것은 빈 줄없이 나를 위해 일을하지 않았다.
pandoc *.md > markdown_book.html
결과 pandoc: *.md: openfile: invalid argument (Invalid argument)
-지정한 구문을 지원하지 않는 것 같습니다.
cat
입력 파일을 파이핑하기 전에 명령을 사용하여 입력 파일을 연결하면 여러 입력 파일이 들어오는 markdown_py
것과 동일한 효과 를 얻을 수 있다고 언급합니다 pandoc
.
cat *.md | markdown_py > youroutputname.html
Mac에서 Python 버전의 Markdown에 대한 위 의 pandoc 예제 와 거의 동일하게 작동합니다 .
cat *.md
유연하지 않은 파일 명명 규칙 을 의미합니다. 이 규칙은 재귀 포함을 반드시 금지 할뿐만 아니라 대규모 문서 프로젝트의 경우 새 파일을 혼합에 추가하는 것이 어려울 수 있습니다. 계산과 이름 바꾸기를 많이해야합니다. 마크 다운 프로젝트는 2010
실제로 MarkdownPP ( 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
상기 볼 잊지 마세요 readme.mdpp
에 MarkdownPP의 전처리의 박람회가 큰 문서 프로젝트에 적합한 기능에 대한 저장소.
내 해결책은 m4를 사용하는 것입니다. 대부분의 플랫폼에서 지원되며 binutils 패키지에 포함되어 있습니다.
먼저 changequote()
파일에 매크로 를 포함 시켜 인용 문자를 원하는대로 변경하십시오 (기본값은` '). 파일이 처리되면 매크로가 제거됩니다.
changequote(`{{', `}}')
include({{other_file}})
명령 행에서 :
m4 -I./dir_containing_other_file/ input.md > _tmp.md
pandoc -o output.html _tmp.md
m4
거의 알려지지 않았지만 그러한 일반적인 포함 요구에 관해서는 실제로 매우 강력한 도구입니다. 문서에 언급이 충분하기 때문에 "정말 중독성"일 수 있습니다.
최근에 markdown-include 라는 노드에 다음과 같이 C 스타일 구문으로 markdown 파일을 포함시킬 수있는 것을 작성했습니다.
#include "my-file.md"
나는 이것이 당신이 묻는 질문과 잘 일치한다고 생각합니다. 나는 이것이 오래된 것을 알고 있지만 적어도 업데이트하고 싶었다.
원하는 마크 다운 파일에이를 포함시킬 수 있습니다. 해당 파일에는 더 많은 포함이있을 수 있으며 markdown-include 는 내부 링크를 만들고 모든 작업을 수행합니다.
통해 다운로드 할 수 있습니다 npm
npm install -g markdown-include
멀티 마크 다운에는 기본적으로이 기능이 있습니다. 파일 변환 이라고합니다 .
{{some_other_file.txt}}
필요한 전부입니다. 이상한 이름이지만 모든 상자를 틱합니다.
includes.txt
다음과 같이 pandoc을 실행하는 올바른 순서로 모든 파일과 함께 파일을 사용합니다 .
pandoc -s $(cat includes.txt) --quiet -f markdown -t html5 --css pandoc.css -o index.html
매력처럼 작동합니다!
glob
파일 번호를 지정하지 않으면 방법으로 수행 할 수 없습니다.
Asciidoc ( http://www.methods.co.nz/asciidoc/ )은 실제로 스테로이드에 대한 마크 다운입니다. 전반적으로 Asciidoc과 Markdown은 매우 비슷해 보이며 전환하기가 쉽습니다. 마크 다운에 비해 Asciidoc 의 큰 이점은 이미 다른 Asciidoc 파일과 원하는 형식에 대한 포함을 지원한다는 것입니다. 포함 된 파일 내부의 줄 번호 또는 태그를 기반으로 파일을 부분적으로 포함 할 수도 있습니다.
다른 파일을 포함하면 문서를 작성할 때 실제로 생명을 구할 수 있습니다.
예를 들어 다음과 같은 내용의 asciidoc 파일을 가질 수 있습니다.
// [source,perl]
// ----
// include::script.pl[]
// ----
그리고 당신의 샘플을 유지 script.pl
Github는 asciidoc도 지원합니다.
나는 우리가 더 나은 생각하는 새로운 파일 포함 구문 채택 (그래서 코드 블록으로 엉망하지, 내가 C 스타일의 포함은 완전히 잘못된 생각됩니다), 나는 이름, 펄의 작은 도구를 썼다 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 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 버전을 작성했습니다 (동일하지는 않지만 가깝습니다).
<<[include_file.md]
(맥 OS에 2 표시된) : gist.github.com/district10/d46a0e207d888d0526aef94fb8d8998c
@
로 pandoc-citeproc
(예 : " @Darwin1859
")로 인용하는 데 사용됩니다 .
실제로이 페이지에 HTML 솔루션을 제공 한 사람이 없다는 것에 놀랐습니다. 지금까지 MarkDown 파일에는 HTML 태그의 전체가 아닐 수도 있습니다. 따라서 다음 단계를 따르십시오.
에서 여기에 : 당신의 인하 파일을 넣어 <span style="display:block"> ... </span>
있는지가 인하로 렌더링됩니다로 태그입니다. 추가 할 수있는 다른 스타일 속성이 많이 있습니다. 내가 좋아하는 것은 text-align:justify
입니다.
에서 여기에 다음을 사용하여 기본 파일에있는 파일을 포함<iframe src="/path/to/file.md" seamless></iframe>
PS1. 이 솔루션은 모든 MarkDown 엔진 / 렌더에서 작동하지 않습니다. 예를 들어 Typora는 파일을 올바르게 렌더링했지만 Visual Studio Code는 그렇지 않았습니다. 다른 사람들이 다른 플랫폼과 경험을 공유 할 수 있다면 좋을 것입니다. 특히 GitHub와 GitLab에 대해 듣고 싶습니다 ...
PS2. 추가 조사에서 Typora, GitHub 및 Visual Studio 코드를 포함한 많은 플랫폼에서 올바르게 렌더링되지 않는 주요 비 호환성 문제가있는 것으로 보입니다. 문제가 해결 될 때까지 사용하지 마십시오. 나는 단지 토론을 위해 답을 삭제하지 않을 것이며 아마도 당신의 의견을 공유 할 수있을 것입니다.
PS3. 이 문제를 더 조사하기 위해 StackOverflow 및 Reddit 에서이 질문을 했습니다 .
PS4. 연구를 거친 후, AsciiDoc이 더 나은 문서화 옵션이라는 결론에 도달했습니다. 내장 기능이 포함되어 있으며 GitHub에 의해 렌더링되며 Atom 및 vscode와 같은 주요 코드 편집기에는 라이브 미리보기 확장 기능이 있습니다. Pandoc 또는 기타 도구를 사용하여 약간의 변경만으로 기존 MarkDown 코드를 AsciiDoc으로 자동 변환 할 수 있습니다.
PS5. 내장 기능이 포함 된 또 다른 간단한 마크 업 언어는 reStructuredText
입니다. .. include:: inclusion.txt
표준 으로 구문 이 제공됩니다 . 실시간 미리보기 기능 이있는 ReText 편집기 도 있습니다.
나는 이것이 오래된 질문이라는 것을 알고 있지만이 효과에 대한 답변을 보지 못했습니다. 기본적으로 markdown 및 pandoc을 사용하여 파일을 pdf로 변환하는 경우 페이지 상단의 yaml 데이터에 다음을 포함 할 수 있습니다 이 같은:
---
header-includes:
- \usepackage{pdfpages}
output: pdf_document
---
\includepdf{/path/to/pdf/document.pdf}
# Section
Blah blah
## Section
Blah blah
pandoc은 라텍스를 사용하여 모든 문서를 변환 header-includes
하므로이 섹션에서는 pdfpages 패키지를 호출합니다. 그런 다음 포함 \includepdf{/path/to/pdf/document.pdf}
하면 해당 문서에 포함 된 내용이 삽입됩니다. 또한이 방법으로 여러 pdf 파일을 포함 할 수 있습니다.
재미있는 보너스로 이것은 라텍스 파일과 같이 마크 다운 이외의 파일을 포함하려는 경우 종종 마크 다운을 사용하기 때문입니다. 이 답변을 다소 수정했습니다 . markdown 파일 markdown1.md가 있다고 가정하십시오.
---
title: Something meaning full
author: Talking head
---
그리고 두 개의 추가 라텍스 파일 document1은 다음과 같습니다.
\section{Section}
Profundity.
\subsection{Section}
Razor's edge.
그리고 다른 document2.tex는 다음과 같습니다.
\section{Section
Glah
\subsection{Section}
Balh Balh
markdown1.md에 document1.tex 및 document2.tex를 포함한다고 가정하면 markdown1.md에이 작업을 수행하면됩니다.
---
title: Something meaning full
author: Talking head
---
\input{/path/to/document1}
\input{/path/to/document2}
예를 들어 pandoc을 실행하십시오.
터미널에서 pandoc markdown1.md -o markdown1.pdf
최종 문서는 다음과 같습니다.
번영.
면도기의 가장자리.
글라
발 발
Mac OS X에서 Marked 2를 사용합니다. 다른 파일을 포함하기 위해 다음 구문을 지원합니다.
<<[chapters/chapter1.md]
<<[chapters/chapter2.md]
<<[chapters/chapter3.md]
<<[chapters/chapter4.md]
슬프게도 구문을 이해하지 못하기 때문에 pandoc에 공급할 수 없습니다. 그러나 pandoc 명령 행을 구성하기 위해 구문을 제거하는 스크립트를 작성하는 것은 매우 쉽습니다.
markdown-it 및 jQuery를 사용하는 또 다른 HTML 기반의 클라이언트 측 솔루션 입니다. 아래는 마스터 문서로서 작은 HTML 래퍼로, 마크 다운 파일의 무제한 포함을 지원하지만 중첩 된 포함은 지원하지 않습니다. JS 주석에 설명이 제공됩니다. 오류 처리가 생략되었습니다.
<script src="/markdown-it.min.js"></script>
<script src="/jquery-3.5.1.min.js"></script>
<script>
$(function() {
var mdit = window.markdownit();
mdit.options.html=true;
// Process all div elements of class include. Follow up with custom callback
$('div.include').each( function() {
var inc = $(this);
// Use contents between div tag as the file to be included from server
var filename = inc.html();
// Unable to intercept load() contents. post-process markdown rendering with callback
inc.load(filename, function () {
inc.html( mdit.render(this.innerHTML) );
});
});
})
</script>
</head>
<body>
<h1>Master Document </h1>
<h1>Section 1</h1>
<div class="include">sec_1.md</div>
<hr/>
<h1>Section 2</h1>
<div class="include">sec_2.md</div>
@import 구문은 vscode-markdown-preview-enhanced에서 지원됩니다.
https://github.com/shd101wyy/vscode-markdown-preview-enhanced
아마도 기본 툴 뮤의 일부를 의미 할 것입니다.
https://github.com/shd101wyy/mume
뮤에 내장 된 다른 도구들