Markdown และรวมถึงหลายไฟล์


199

มี markdown fork ใดบ้างที่อนุญาตให้คุณอ้างอิงไฟล์อื่น ๆ เช่นไฟล์ include? โดยเฉพาะฉันต้องการสร้างไฟล์ markdown แยกต่างหากพร้อมลิงค์ที่ฉันโทรบ่อย แต่ไม่เสมอไป (เรียกว่า B.md นี้) จากนั้นเมื่อฉันลิงก์โดยอ้างอิงในไฟล์ md ที่ฉันเขียน (A.md) ฉันต้องการ ชอบที่จะดึงลิงค์จากไฟล์อื่น (B.md) มากกว่าจากจุดสิ้นสุดของไฟล์ปัจจุบัน (A.md)


1
หากคำถามของคุณเป็นเครื่องหมายที่เกี่ยวข้องกับ GitHub คุณอาจดูที่นี่
Adi Prasetyo

3
กฎง่ายๆสำหรับ Markdown คือคำตอบของ 'Can Markdown ... ' มักจะ 'ไม่จริงไม่แพร่หลายหรือง่าย'
Michael Scheper

4
มีการอภิปรายอย่างเปิดเผยว่าวิธีที่ดีที่สุดในการทำเช่นนี้กับ Pandoc ได้ที่github.com/jgm/pandoc/issues/553และบนฟอรัมทั่วไปที่talk.commonmark.org/t/…
naught101

คำตอบ:


217

คำตอบสั้น ๆ คือไม่ คำตอบที่ยาวคือใช่ :-)

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

ดังนั้นส่วนหนึ่งของคุณ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บอกว่ามันเพิ่มบรรทัดว่างระหว่างไฟล์ที่มีการผสานวิธีนี้ แต่ไม่ทำงานสำหรับฉันโดยไม่มีบรรทัดว่าง


6
นี่เป็นโพสต์ที่มีประโยชน์มากสำหรับฉัน! ขอบคุณแอรอน ดูเหมือนว่าจะเป็นกรณีการใช้งานทั่วไปที่จะมี / chapters dir หนึ่งสคริปต์ที่สร้าง / ผสานบทและจากนั้นสคริปต์ wrapper ระดับบนสุดที่มีขั้นตอนดังนี้: - รวม-before-body $ (include_dir) / merged_chapters .html นั่นเป็นวิธีที่ฉันจะใช้เพื่อให้เกิดประโยชน์ต่อองค์กร
Rob

1
ข้อได้เปรียบอีกข้อหนึ่งของการใช้แพนโดกคือมันรองรับเอาต์พุตที่หลากหลาย: คุณสามารถสร้างไม่เพียง แต่ HTML เท่านั้น แต่ยังสามารถสร้างทุกอย่างตั้งแต่ docx ไปจนถึง LaTeX ถึง ePUB
คริส Krycho

pandoc *.md > markdown_book.htmlผลลัพธ์ในpandoc: *.md: openfile: invalid argument (Invalid argument)- ดูเหมือนจะไม่สนับสนุนไวยากรณ์ที่คุณระบุ
Jason Young

มันทำงานบนระบบของฉัน ฉันสร้างที่เก็บตัวอย่างบน GitHubเพื่อให้คุณสามารถลองกับไฟล์ทั้งหมดที่ฉันใช้
Aaron Massey

คุณสามารถจัดแนวรูปภาพได้โดยรวม CSS ที่เหมาะสมซึ่งเป็นวิธีที่คุณควรทำสิ่งต่อไป
naught101

50

ฉันจะพูดถึงว่าคุณสามารถใช้catคำสั่งเพื่อเชื่อมไฟล์อินพุตก่อนที่จะทำการไพพ์ไฟล์เหล่านั้นmarkdown_pyซึ่งมีผลเช่นเดียวpandocกับไฟล์อินพุตหลายไฟล์ที่เข้ามา

cat *.md | markdown_py > youroutputname.html

ใช้งานได้ดีมากเหมือนกับตัวอย่างของpandocด้านบนสำหรับเวอร์ชัน Python ของ Markdown บน Mac ของฉัน


1
@ tprk77: ยกเว้นว่าคำตอบของแอรอนทำให้ชัดเจนว่าคำสั่ง cat ซ้ำซ้อนที่นี่ ..
naught101

1
การใช้cat *.mdหมายถึงแผนการตั้งชื่อไฟล์ที่ไม่ยืดหยุ่น การประชุมนี้ไม่เพียง แต่จะต้องห้ามการเรียกซ้ำซ้ำอีกด้วยสำหรับโครงการเอกสารที่มีขนาดใหญ่ขึ้นมันจะเป็นเรื่องเจ็บปวดที่จะเพิ่มไฟล์ใหม่ลงในส่วนผสม คุณจะต้องทำการนับและเปลี่ยนชื่อเป็นจำนวนมาก โครงการ markdown มีตัวประมวลผลล่วงหน้าสำหรับจุดประสงค์นี้ตั้งแต่ปี 2010
9

@ninegrid ในขณะที่ MarkdownPP ดูเหมือนมีประโยชน์มากจากการดู repo แหล่งที่คุณอ้างอิงในคำตอบของคุณดูเหมือนว่าฉัน (a) MarkdownPP เป็นโครงการของ John Reese เท่านั้น; (b) มันไม่ได้เป็นส่วนหนึ่งของ "โครงการ markdown" (รสชาติใด ๆ ที่หลากหลาย) เลย; และ (c) MarkdownPP ให้ผลลัพธ์ GFM โดยเฉพาะ แก้ไข? อย่างที่ฉันพูดมันดูน่าสนใจและเป็นประโยชน์ แต่ความคิดเห็นของคุณที่นี่ทำให้ดูเหมือนว่าเป็นคุณสมบัติมาตรฐานที่ทุกคนควรนำมาใช้ แต่จากการดูที่ repo สถานการณ์ดูเหมือนจะตรงกันข้ามกัน
FeRD

ไม่สามารถแปลงตาราง MD เป็นตาราง HTML ได้
james.garriss

30

คุณสามารถใช้ Markdown Preprocessor ( 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สำหรับการแสดงออกของคุณสมบัติตัวประมวลผลที่เหมาะสำหรับโครงการเอกสารขนาดใหญ่


19

ทางออกของฉันคือการใช้ m4 รองรับแพลตฟอร์มส่วนใหญ่และรวมอยู่ในแพ็คเกจ binutils

ก่อนอื่นให้รวมแมโครchangequote()ในไฟล์เพื่อเปลี่ยนอักขระการอ้างถึงสิ่งที่คุณต้องการ (ค่าเริ่มต้นคือ `') แมโครจะถูกลบออกเมื่อประมวลผลไฟล์

changequote(`{{', `}}')
include({{other_file}})

บน commandline:

m4 -I./dir_containing_other_file/ input.md > _tmp.md
pandoc -o output.html _tmp.md

2
m4เป็นที่รู้จักกันแทบจะไม่ แต่เป็นเครื่องมือที่มีประสิทธิภาพอย่างเหลือเชื่อเมื่อมันมาถึงความต้องการทั่วไปรวมถึง เพียงพอที่จะมีเอกสารกล่าวถึงมันอาจเป็น "ค่อนข้างเสพติด"
Uriel

ตอนนี้นั่นคือทางออก! Genius
แบรนด์

+1 สำหรับความคิดและการเตือนของm4 ! สิ่งที่ตลกคือว่าเมื่อผมเห็นส่วนขยายดังกล่าวข้างต้นเป็น 'md' ฉันคิดในหัวของฉันของM4 ว่าแล้วคุณจะต้องรวมตัวอย่างเป็นอย่างมาก ฉันไม่แน่ใจว่าคำถามนี้ถามสิ่งที่ฉันหลังจาก แต่มันอาจทำ ขอบคุณทั้งสองทาง
Pryftan

15

เมื่อเร็ว ๆ นี้ฉันได้เขียนบางอย่างเช่นนี้ในโหนดที่เรียกว่าmarkdown-includeที่ให้คุณรวมไฟล์ markdown ด้วยไวยากรณ์สไตล์ C ดังนี้:

#include "my-file.md"

ฉันเชื่อว่าสิ่งนี้สอดคล้องกับคำถามที่คุณถาม ฉันรู้ว่ามันเก่า แต่ฉันต้องการอัปเดตอย่างน้อย

คุณสามารถรวมสิ่งนี้ไว้ในไฟล์ markdown ที่คุณต้องการ ไฟล์ดังกล่าวสามารถมีการรวมมากขึ้นและการรวมมาร์กอัปจะทำการเชื่อมโยงภายในและทำทุกอย่างให้คุณ

คุณสามารถดาวน์โหลดได้ผ่าน npm

npm install -g markdown-include

1
สิ่งนี้มีประโยชน์มาก! ขอบคุณ!
leas

@leas ดีใจที่ได้รับบริการ ... ฉันไม่ได้ทำงานกับมันในช่วงไม่กี่ปีที่ผ่านมา แต่ฉันมักจะกลับไปที่จุดนั้นเสมอ หวังว่ามันจะดีสำหรับวัตถุประสงค์ของคุณ
เซท

9

Multimarkdownมีลักษณะนี้ มันเรียกว่าการรวมไฟล์ :

{{some_other_file.txt}}

มันคือทั้งหมดที่ใช้ ชื่อแปลก ๆ แต่ทำเครื่องหมายในช่องทั้งหมด


มีบรรณาธิการฟรีและโอเพนซอร์สเพื่อแสดงไวยากรณ์นี้หรือไม่ ฉันได้ถามคำถามนี้ที่นี่พร้อมรายละเอียดเพิ่มเติม ฉันจะขอบคุณถ้าคุณสามารถช่วยฉันได้
Foad

1
@Foad: ฉันเกรงว่าฉันเป็นผู้ใช้กลุ่มและไม่รู้ตัวจากการแก้ไขดังกล่าว ฉันเห็น reddit Q ของคุณคุณพบว่า Asciidoc และบรรณาธิการหลายคนสนับสนุนสิ่งนี้ ฉันไม่รู้สิ่งนี้ - ขอบคุณ
เอฟเอฟ

ดีใจที่มันมีประโยชน์ แต่เสียงเรียกเข้ามีการแสดงตัวอย่างแบบสดสำหรับ MultiMarkDown? คุณจะแบ่งปันการตั้งค่าและไฟล์ดอทด้วยรายละเอียดเพิ่มเติมได้ไหม?
Foad

1
ไม่มีการพรีวิวสดฉันไม่ใช่คนแบบนั้น ;) เหตุผลหลักที่ฉันใช้ markdown เลยก็เพราะว่ามันมีจุดมุ่งหมายให้มนุษย์อ่านได้เมื่อไม่ได้ประมวลผลดังนั้นฉันจึงไม่สนใจเกี่ยวกับภาพตัวอย่างมากเกินไป (แม้ว่าฉันจะเข้าใจว่าทำไมคนอื่นถึงทำ) สิ่งเดียวที่ฉันสนใจในกรณีนี้คือการเน้นไวยากรณ์และการเน้นไวยากรณ์เริ่มต้นทำงานได้ดีพอสำหรับฉัน ขออภัยที่ไม่ต้องการความช่วยเหลือเพิ่มเติม
eff

1
ดูเหมือนว่าจะน่าสนใจแม้ว่าฉันจะไม่เห็นเหตุผลที่จะเลือกมากกว่า markdown / asciidoc สำหรับวัตถุประสงค์ของฉัน (น้อย) อย่างน้อย
เอฟเอฟ

8

ฉันใช้includes.txtไฟล์กับไฟล์ทั้งหมดของฉันในลำดับที่ถูกต้องที่ฉันรัน pandoc เช่นนี้:

pandoc -s $(cat includes.txt) --quiet -f markdown -t html5 --css pandoc.css -o index.html

ทำงานเหมือนจับใจ!


1
วิธีการที่ดี การระบุลำดับไฟล์เป็นพื้นฐาน แต่ไม่สามารถทำได้โดยใช้globวิธีการยกเว้นว่าคุณจะกำหนดหมายเลขไฟล์
ephsmith

คุณช่วยอธิบายขั้นตอนได้หรือไม่? ดูเหมือนว่าทรงพลัง! ฉันต้องการทราบว่าเป็นไปได้ไหมที่จะลดระดับลงเพื่อสร้างการแปลงอื่น ๆ เช่น. pdf และ. tex
nilon

6

ในความเป็นจริงคุณสามารถใช้\input{filename}และ\include{filename}ซึ่งเป็นคำสั่งลาเท็กซ์โดยตรงPandocเพราะรองรับเกือบทั้งหมดhtmlและlatexไวยากรณ์

แต่ระวังไฟล์ที่รวมจะถือว่าเป็นlatexไฟล์ แต่คุณสามารถรวบรวมของคุณmarkdownจะlatexมีPandoxได้อย่างง่ายดาย


6

Asciidoc ( http://www.methods.co.nz/asciidoc/ ) จริง ๆ แล้วเป็น markdown บนเตียรอยด์ โดยรวมแล้ว Asciidoc และ Markdown จะดูคล้ายกันมากและมันค่อนข้างง่ายที่จะเปลี่ยน ใหญ่ประโยชน์ของ Asciidoc กว่า markdown เป็นที่รองรับรวมแล้วสำหรับไฟล์ Asciidoc อื่น ๆ แต่ยังสำหรับรูปแบบที่คุณชอบ คุณสามารถรวมไฟล์บางส่วนตามหมายเลขบรรทัดหรือแท็กในไฟล์ที่รวมอยู่ด้วย

การรวมไฟล์อื่น ๆ เป็นเครื่องมือช่วยชีวิตเมื่อคุณเขียนเอกสาร

ตัวอย่างเช่นคุณสามารถมีไฟล์ asciidoc พร้อมเนื้อหาดังกล่าว:

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

และรักษาตัวอย่างของคุณใน script.pl

และฉันแน่ใจว่าคุณจะประหลาดใจใช่ Github ยังสนับสนุน asciidoc


ดูเหมือนจะมีสัญญาที่ดีที่นี่ แต่ไม่ได้ให้คำตอบที่สมบูรณ์กับขั้นตอนวิธีการ เป็นไปได้หรือไม่ที่จะระบุวิธีแปลงเอกสารหลายไฟล์เป็นเอกสารเดี่ยว?
nilon

นี่เป็นทางออกที่ดีที่สุดในหน้านี้ ผมมาสรุปนี้และการแก้ไขปัญหาที่นี่เมื่อ Reddit AsciiDoc มีการรวมในตัวและมันถูกสร้างการแสดงผลโดย GitHub Atom และ vscode ทั้งสองมีปลั๊กอินที่ดีสำหรับการแสดงตัวอย่างแบบสด ฉันสงสัยว่าทำไม AsciiDoc ไม่ได้เป็นมาตรฐานอุตสาหกรรมอยู่แล้ว!
Foad

4

ฉันคิดว่าเราควรปรับใช้ไวยากรณ์การรวมไฟล์ใหม่ (ดังนั้นจะไม่ทำให้ยุ่งเหยิงกับโค้ดบล็อกฉันคิดว่าการรวมสไตล์ 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 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](ทำเครื่องหมาย 2 บน macOS): gist.github.com/district10/d46a0e207d888d0526aef94fb8d8998c
dvorak4tzx

โดย@ใช้สำหรับการอ้างอิงด้วยpandoc-citeproc(เช่น " @Darwin1859")
PlasmaBinturong

4

ฉันแปลกใจจริง ๆ ที่ไม่มีใครในหน้านี้ได้นำเสนอโซลูชั่น HTML ใด ๆ เท่าที่ฉันเข้าใจไฟล์ MarkDown สามารถรวมแท็ก HTML (ถ้าไม่ทั้งหมด) ส่วนกว้าง ดังนั้นทำตามขั้นตอนเหล่านี้:

  1. จากที่นี่ : วางไฟล์ MarkDown ของคุณลงใน<span style="display:block"> ... </span>แท็กเพื่อให้แน่ใจว่าไฟล์นั้นจะถูกแสดงผลเป็นมาร์กดาวน์ คุณมีคุณสมบัติสไตล์อื่น ๆ มากมายที่คุณสามารถเพิ่มได้ text-align:justifyหนึ่งที่ผมชอบคือ

  2. จากที่นี่ : รวมไฟล์ในไฟล์หลักของคุณโดยใช้<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 Code ที่มีอยู่เป็น AsciiDoc โดยอัตโนมัติด้วยการเปลี่ยนแปลงเล็กน้อย

PS5 ภาษามาร์กอัปน้ำหนักเบาอีกอันที่มีฟังก์ชั่นรวมอยู่reStructuredTextด้วย มันมาพร้อมกับ.. include:: inclusion.txt ไวยากรณ์ตามมาตรฐาน มีตัวแก้ไข ReTextพร้อมพรีวิวสดด้วยเช่นกัน


1

ฉันรู้ว่านี่เป็นคำถามเก่า แต่ฉันไม่ได้เห็นคำตอบสำหรับผลกระทบนี้: เป็นหลักถ้าคุณใช้ markdown และ pandoc เพื่อแปลงไฟล์ของคุณเป็น pdf ในข้อมูล yaml ที่ด้านบนของหน้าคุณสามารถรวม บางสิ่งเช่นนี้

---
header-includes:
- \usepackage{pdfpages}
output: pdf_document
---

\includepdf{/path/to/pdf/document.pdf}

# Section

Blah blah

## Section 

Blah blah

เนื่องจาก pandoc ใช้ latex ในการแปลงเอกสารทั้งหมดของคุณheader-includesส่วนจึงเรียกแพคเกจ pdfpages จากนั้นเมื่อคุณรวม\includepdf{/path/to/pdf/document.pdf}มันจะแทรกสิ่งที่รวมอยู่ในเอกสารนั้น นอกจากนี้คุณสามารถรวมไฟล์ PDF หลาย ๆ ไฟล์ด้วยวิธีนี้

เป็นโบนัสที่สนุกและเป็นเพราะฉันมักใช้ markdown ถ้าคุณต้องการรวมไฟล์อื่นนอกเหนือจาก markdown เช่นไฟล์ latex ฉันได้แก้ไขคำตอบนี้แล้ว บอกว่าคุณมีไฟล์ markdown markdown1.md:

---
title: Something meaning full
author: Talking head
---

และสองไฟล์ addtional ลาเท็กซ์ document1 ที่มีลักษณะดังนี้:

\section{Section}

Profundity.

\subsection{Section}

Razor's edge.

และอีกอย่างคือ document2.tex ที่มีลักษณะเช่นนี้:

\section{Section

Glah

\subsection{Section}

Balh Balh

สมมติว่าคุณต้องการรวม document1.tex และ document2.tex ไว้ใน markdown1.md คุณเพียงแค่ทำสิ่งนี้กับ markdown1.md

---
title: Something meaning full
author: Talking head
---

\input{/path/to/document1}
\input{/path/to/document2}

เรียกใช้ pandoc เหนือมันเช่น

ในอาคารผู้โดยสาร pandoc markdown1.md -o markdown1.pdf

เอกสารสุดท้ายของคุณจะมีลักษณะเช่นนี้:

บางสิ่งที่มีความหมายเต็ม

หัวหน้าช่างพูด

มาตรา

ความลึกซึ้ง

มาตรา

คมของมีดโกน

มาตรา

Glah

มาตรา

บาล์ม


0

ฉันใช้ Marked 2 บน Mac OS X ซึ่งรองรับไวยากรณ์ต่อไปนี้สำหรับการรวมไฟล์อื่น ๆ

<<[chapters/chapter1.md]
<<[chapters/chapter2.md]
<<[chapters/chapter3.md]
<<[chapters/chapter4.md]

น่าเศร้าที่คุณไม่สามารถให้อาหารกับแพนโดกเพราะมันไม่เข้าใจไวยากรณ์ อย่างไรก็ตามการเขียนสคริปต์เพื่อตัดไวยากรณ์ออกเพื่อสร้างบรรทัดคำสั่ง pandoc นั้นง่ายพอ


7
คุณจะมีสคริปต์แทนที่จะบอกว่ามันง่ายหรือไม่ :)
toobulkeh

0

อีก HTML-based โซลูชั่นฝั่งไคลเอ็นต์ใช้markdown มันและjQuery ด้านล่างเป็น wrapper HTML ขนาดเล็กเป็นเอกสารหลักที่รองรับการรวมไฟล์ markdown ไม่ จำกัด แต่ไม่รวมถึงการซ้อนกัน คำอธิบายมีให้ในความคิดเห็น 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>

0

สนับสนุนไวยากรณ์ @import ใน vscode-markdown-preview-enhanced

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

ซึ่งอาจหมายถึงส่วนหนึ่งของ mume เครื่องมือพื้นฐาน

https://github.com/shd101wyy/mume

และเครื่องมืออื่น ๆ ที่สร้างขึ้นบน mume

https://github.com/gabyx/TechnicalMarkdown


-5

IMHO คุณสามารถรับผลของคุณได้โดยต่อไฟล์ * .md ที่คุณป้อนเข้าไว้เช่น:

$ pandoc -s -o outputDoc.pdf inputDoc1.md inputDoc2.md outputDoc3.md
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.