Apakah ada garpu penurunan harga yang memungkinkan Anda untuk mereferensikan file lain, seperti file yang menyertakan? Secara khusus, saya ingin membuat file penurunan harga terpisah dengan tautan yang sering saya panggil tetapi tidak selalu (panggil B.md ini), kemudian ketika saya tautkan dengan referensi dalam file md yang saya tulis (A.md), saya akan suka untuk menarik tautan dari file lain (B.md) daripada dari akhir file saat ini (A.md).
197
Jawaban:
Jawaban singkatnya adalah tidak. Jawaban panjangnya ya. :-)
Penurunan harga dirancang untuk memungkinkan orang menulis teks sederhana dan mudah dibaca yang dapat dengan mudah dikonversi ke markup HTML sederhana. Itu tidak benar-benar melakukan tata letak dokumen. Misalnya, tidak ada cara nyata untuk menyelaraskan gambar ke kanan atau kiri. Mengenai pertanyaan Anda, tidak ada perintah penurunan harga untuk memasukkan satu tautan dari satu file ke file lain dalam versi penurunan harga apa pun (sejauh yang saya tahu).
Yang paling dekat dengan fungsi ini adalah Pandoc . Pandoc memungkinkan Anda untuk menggabungkan file sebagai bagian dari transformasi, yang memungkinkan Anda untuk dengan mudah membuat beberapa file menjadi satu output. Misalnya, jika Anda membuat buku, maka Anda bisa memiliki bab seperti ini:
Anda dapat menggabungkan mereka dengan melakukan mengeksekusi perintah ini dalam direktori yang sama:
Karena pandoc akan menggabungkan semua file sebelum melakukan terjemahan, Anda dapat memasukkan tautan Anda ke file terakhir seperti ini:
Jadi bagian dari Anda
01_preface.md
dapat terlihat seperti ini:Dan sebagian dari Anda
02_introduction.md
dapat terlihat seperti ini:Selama file terakhir Anda termasuk baris:
... perintah yang sama yang digunakan sebelumnya akan melakukan penggabungan dan konversi sambil menyertakan tautan itu di seluruh. Pastikan Anda meninggalkan satu atau dua baris kosong di awal file itu. The dokumentasi Pandoc mengatakan bahwa hal itu menambah baris kosong antara file yang digabung dengan cara ini, tapi ini tidak bekerja untuk saya tanpa baris kosong.
sumber
pandoc *.md > markdown_book.html
hasilpandoc: *.md: openfile: invalid argument (Invalid argument)
- itu tidak muncul untuk mendukung sintaks yang Anda tentukan.Saya hanya akan menyebutkan bahwa Anda dapat menggunakan
cat
perintah untuk menyatukan file input sebelum mem-pipe merekamarkdown_py
yang memiliki efek yang sama seperti apa yangpandoc
terjadi dengan beberapa file input yang masuk.bekerja hampir sama dengan contoh pandoc di atas untuk versi Python Markdown pada Mac saya.
sumber
cat *.md
menyiratkan konvensi penamaan file tidak fleksibel. Konvensi ini tidak hanya akan melarang rekursif termasuk, untuk proyek dokumentasi yang lebih besar akan menyakitkan untuk menambahkan file baru ke dalam campuran. Anda harus melakukan banyak penghitungan dan penggantian nama. Proyek penurunan harga telah memiliki preprocessor untuk tujuan ini sejak tahun 2010.Anda sebenarnya dapat menggunakan Markdown Preprocessor ( MarkdownPP ). Berjalan dengan contoh buku hipotetis dari jawaban lain, Anda akan membuat
.mdpp
file yang mewakili bab Anda..mdpp
File - file kemudian dapat menggunakan!INCLUDE "path/to/file.mdpp"
arahan, yang beroperasi secara rekursif menggantikan arahan dengan isi dari file yang direferensikan di output akhir.Anda akan membutuhkan
index.mdpp
yang berisi:Untuk merender buku Anda, Anda cukup menjalankan preprosesor pada
index.mdpp
:Jangan lupa untuk melihat di
readme.mdpp
dalam penyimpanan MarkdownPP untuk penjelasan tentang fitur preprosesor yang cocok untuk proyek dokumentasi yang lebih besar.sumber
Solusi saya adalah menggunakan m4. Ini didukung pada sebagian besar platform dan termasuk dalam paket binutils.
Pertama-tama sertakan makro
changequote()
dalam file untuk mengubah karakter kutipan ke apa yang Anda inginkan (standarnya adalah `'). Makro dihapus ketika file diproses.Di baris perintah:
sumber
m4
hampir tidak dikenal, tetapi memang alat yang sangat kuat ketika datang ke kebutuhan termasuk generik tersebut. Cukup untuk memiliki dokumentasi menyebutkan itu bisa "cukup membuat ketagihan".Baru-baru ini saya menulis sesuatu seperti ini di Node yang disebut markdown-include yang memungkinkan Anda untuk memasukkan file markdown dengan sintaks gaya C, seperti:
Saya percaya ini selaras dengan pertanyaan yang Anda ajukan. Saya tahu ini sudah lama, tapi setidaknya saya ingin memperbaruinya.
Anda dapat memasukkan ini dalam file penurunan harga yang Anda inginkan. File itu juga dapat memiliki lebih banyak menyertakan dan penurunan harga-termasuk akan membuat tautan internal dan melakukan semua pekerjaan untuk Anda.
Anda dapat mengunduhnya melalui
npm
sumber
Multimarkdown memiliki ini secara asli. Ini menyebutnya transclusion file :
hanya itu yang dibutuhkan. Nama yang aneh, tetapi mencentang semua kotak.
sumber
Saya menggunakan
includes.txt
file dengan semua file saya dalam urutan yang benar saya menjalankan pandoc seperti ini:pandoc -s $(cat includes.txt) --quiet -f markdown -t html5 --css pandoc.css -o index.html
Bekerja seperti pesona!
sumber
glob
metode kecuali Anda memberi nomor file.Bahkan Anda dapat menggunakan
\input{filename}
dan\include{filename}
yang merupakan perintah lateks, langsung masukPandoc
, karena mendukung hampir semuahtml
danlatex
sintaksis.Namun berhati-hatilah, file yang disertakan akan diperlakukan sebagai
latex
file. Tapi Anda bisa mengkompilasi Andamarkdown
untuklatex
denganPandox
mudah.sumber
Asciidoc ( http://www.methods.co.nz/asciidoc/ ) sebenarnya adalah penurunan harga pada steroid. Secara keseluruhan, Asciidoc dan Markdown akan terlihat sangat mirip dan agak mudah untuk beralih. Sangat besar manfaat Asciidoc lebih penurunan harga adalah bahwa hal itu mendukung termasuk sudah, untuk file Asciidoc lain, tetapi juga untuk format apapun yang Anda suka. Anda bahkan dapat memasukkan sebagian file berdasarkan nomor baris atau tag di dalam file yang disertakan.
Menyertakan file lain benar-benar penyelamat ketika Anda menulis dokumen.
Misalnya Anda dapat memiliki file asciidoc dengan konten tersebut:
dan pertahankan sampel Anda di
script.pl
Dan saya yakin Anda akan bertanya-tanya ya, Github juga mendukung asciidoc.
sumber
Saya pikir kita lebih baik mengadopsi sintaks penyertaan file baru (jadi tidak akan mengacaukan dengan blok kode, saya pikir inklusi gaya C benar-benar salah), dan saya menulis sebuah alat kecil di Perl, penamaan
cat.pl
, karena berfungsi seperticat
(cat a.txt b.txt c.txt
akan menggabungkan tiga file), tetapi menggabungkan file secara mendalam , tidak lebarnya . Cara Penggunaan?Sintaksnya secara rinci adalah:
@include <-=path=
%include <-=path=
Itu benar dapat menangani loop inklusi file (jika a.txt <- b.txt, b.txt <- a.txt, lalu apa yang Anda harapkan?).
Contoh:
a.txt:
b.txt:
perl cat.pl a.txt > c.txt
, c.txt:Contoh lainnya di https://github.com/district10/cat/blob/master/tutorial_cat.pl_.md .
Saya juga menulis versi Java yang memiliki efek identik (tidak sama, tetapi tutup).
sumber
<<[include_file.md]
(Ditandai 2 di macOS): gist.github.com/district10/d46a0e207d888d0526aef94fb8d8998c@
digunakan untuk kutipan denganpandoc-citeproc
(mis. "@Darwin1859
").Saya benar-benar terkejut bahwa tidak ada seorang pun di halaman ini yang menawarkan solusi HTML. Sejauh yang saya pahami, file MarkDown dapat menyertakan sebagian besar (jika tidak semua) tag HTML. Jadi ikuti langkah-langkah ini:
Dari sini : masukkan file MarkDown Anda ke dalam
<span style="display:block"> ... </span>
tag untuk memastikan bahwa itu akan diberikan sebagai penurunan harga. Anda memiliki banyak properti gaya lain yang dapat Anda tambahkan. Yang saya suka adalahtext-align:justify
.Dari sini : Sertakan file dalam file utama Anda menggunakan
<iframe src="/path/to/file.md" seamless></iframe>
PS1. solusi ini tidak bekerja pada semua mesin / render MarkDown. Misalnya Typora memang membuat file dengan benar tetapi Visual Studio Code tidak. Alangkah baiknya jika orang lain bisa berbagi pengalaman mereka dengan platform lain. Khususnya saya ingin mendengar tentang GitHub dan GitLab ...
PS2. Pada penyelidikan lebih lanjut tampaknya ada masalah ketidakcocokan utama yang menyebabkan ini tidak diterjemahkan dengan benar pada banyak platform, termasuk kode Typora, GitHub dan Visual Studio. Tolong jangan gunakan ini sampai saya menyelesaikannya. Saya tidak akan menghapus jawabannya hanya untuk kepentingan diskusi dan jika mungkin Anda bisa membagikan pendapat Anda.
PS3. Untuk menyelidiki lebih lanjut masalah ini, saya telah mengajukan pertanyaan ini di sini di StackOverflow dan di sini di Reddit .
PS4. Setelah melalui beberapa studi, saya sampai pada kesimpulan bahwa untuk saat ini AsciiDoc adalah pilihan yang lebih baik untuk dokumentasi. Muncul dengan fungsionalitas built-in termasuk, itu diberikan oleh GitHub, dan editor kode utama seperti Atom dan vscode memiliki ekstensi untuk pratinjau langsung. Seseorang dapat menggunakan Pandoc atau alat lain untuk secara otomatis mengkonversi Kode MarkDown yang ada ke AsciiDoc dengan perubahan kecil.
PS5. Bahasa markup ringan lainnya dengan fungsionalitas built-in adalah
reStructuredText
. Muncul dengan.. include:: inclusion.txt
sintaks secara standar. Ada editor ReText dengan pratinjau langsung juga.sumber
Saya tahu ini adalah pertanyaan lama, tetapi saya belum melihat jawaban untuk efek ini: Intinya, jika Anda menggunakan markdown dan pandoc untuk mengonversi file Anda ke pdf, dalam data yaml Anda di bagian atas halaman, Anda dapat memasukkan sesuatu seperti ini:
Karena pandoc menggunakan lateks untuk mengonversi semua dokumen Anda,
header-includes
bagian ini memanggil paket pdfpages. Kemudian ketika Anda memasukkannya\includepdf{/path/to/pdf/document.pdf}
akan memasukkan apa pun yang termasuk dalam dokumen itu. Selanjutnya, Anda dapat memasukkan beberapa file pdf dengan cara ini.Sebagai bonus yang menyenangkan, dan ini hanya karena saya sering menggunakan penurunan harga, jika Anda ingin menyertakan file selain penurunan harga, misalnya file lateks. Saya telah memodifikasi jawaban ini . Katakanlah Anda memiliki file markdown markdown1.md:
Dan dua file lateks tambahan document1, yang terlihat seperti ini:
Dan yang lain, document2.tex, yang terlihat seperti ini:
Dengan asumsi bahwa Anda ingin memasukkan document1.tex dan document2.tex ke markdown1.md, Anda hanya perlu melakukan ini ke markdown1.md
Jalankan pandoc di atasnya, misalnya
di terminal
pandoc markdown1.md -o markdown1.pdf
Dokumen akhir Anda akan terlihat seperti ini:
Sesuatu Yang Berarti Penuh
Kepala Bicara
Bagian
Kedalaman.
Bagian
Tepi pisau cukur.
Bagian
Glah
Bagian
Balh Balh
sumber
Saya menggunakan Marked 2 pada Mac OS X. Mendukung sintaks berikut untuk menyertakan file lain.
Sayangnya, Anda tidak dapat memberi makan itu ke pandoc karena tidak mengerti sintaks. Namun, menulis skrip untuk menghapus sintaks untuk membangun baris perintah pandoc cukup mudah.
sumber
Solusi sisi klien berbasis HTML lainnya menggunakan markdown-it dan jQuery . Di bawah ini adalah pembungkus HTML kecil sebagai dokumen master, yang mendukung file markdown yang tidak terbatas, tetapi tidak termasuk nested. Penjelasan diberikan dalam komentar JS. Penanganan kesalahan dihilangkan.
sumber
IMHO, Anda bisa mendapatkan hasil dengan menggabungkan input * .md file Anda seperti:
sumber