Saya ingin mengonversi kode sumber dari beberapa proyek ke satu file yang dapat dicetak untuk menghemat usb dan mencetak dengan mudah nanti. Bagaimana saya bisa melakukan itu?
Edit
Pertama saya ingin mengklarifikasi bahwa saya hanya ingin mencetak file dan direktori yang tidak disembunyikan (jadi tidak ada konten .git
misalnya).
Untuk mendapatkan daftar semua file yang tidak tersembunyi di direktori yang tidak tersembunyi di direktori saat ini, Anda dapat menjalankan find . -type f ! -regex ".*/\..*" ! -name ".*"
perintah seperti yang terlihat di jawaban di utas ini .
Seperti yang disarankan dalam utas yang sama saya mencoba membuat file pdf dari file dengan menggunakan perintah find . -type f ! -regex ".*/\..*" ! -name ".*" ! -empty -print0 | xargs -0 a2ps -1 --delegate no -P pdf
tapi sayangnya file pdf yang dihasilkan adalah kekacauan lengkap .
a2ps -P file *.src
Anda dapat menghasilkan file postscript dari kode sumber Anda. Tetapi file PS perlu dikonversi dan digabungkan sesudahnya.a2ps -1 --delegate=0 -l 100 --line-numbers=5 -P pdf
- saya menambahkan-l
100 karakter per baris untuk mencegah beberapa kata wraps dan nomor baris, tapi itu hanya preferensi pribadi.Jawaban:
Saya tertarik dengan pertanyaan Anda dan agak terbawa suasana. Solusi ini akan menghasilkan file PDF yang bagus dengan indeks yang dapat diklik dan kode warna yang disorot. Ini akan menemukan semua file di direktori dan subdirektori saat ini dan membuat bagian dalam file PDF untuk masing-masing file (lihat catatan di bawah ini tentang cara membuat perintah find Anda lebih spesifik).
Ini mengharuskan Anda menginstal yang berikut ini (instruksi instal untuk sistem berbasis Debian tetapi ini harus tersedia di repositori distribusi Anda):
pdflatex
,color
danlistings
Ini juga harus menginstal sistem LaTeX dasar jika Anda belum menginstalnya.
Setelah ini diinstal, gunakan skrip ini untuk membuat dokumen LaTeX dengan kode sumber Anda. Caranya menggunakan paket
listings
(bagian daritexlive-latex-recommended
) dancolor
(diinstal olehlatex-xcolor
) LaTeX. Inilah\usepackage[..]{hyperref}
yang membuat daftar di daftar isi tautan dapat diklik.Jalankan skrip di direktori yang berisi file sumber
Itu akan membuat file yang disebut
all.pdf
di direktori saat ini. Saya mencoba ini dengan beberapa file sumber acak yang saya temukan di sistem saya (khususnya, dua file dari sumbervlc-2.0.0
) dan ini adalah tangkapan layar dari dua halaman pertama dari hasil PDF:Beberapa komentar:
! -name "*~"
untuk menghindari file cadangan.Saya sarankan Anda menggunakan
find
perintah yang lebih spesifik untuk menemukan file Anda, jika tidak, file acak apa pun akan disertakan dalam PDF. Jika semua file Anda memiliki ekstensi spesifik (.c
dan.h
misalnya), Anda harus menggantifind
skrip dengan sesuatu seperti inilistings
opsi , Anda dapat mengubah ini menjadi persis seperti yang Anda inginkan.sumber
:)
src2pdf: line 36: warning: here-document at line 5 delimited by end-of-file (wanted EOF')
saat menjalankan skrip Anda harus menghapus spasi putih pada baris EOF agar bisa berfungsi.src2pdf
kemudian masukkan! -name "src2pdf"
dalamfind
baris dalam script seperti inifind . -type f ! -regex ".*/\..*" ! -name "src2pdf" ! -name ".*" ! -name "*~" |
untuk menghilangkan dalam pdf.find
hasil (saya telah menyimpan script di direktori lain yang ada di $ PATH saya jadi saya tidak punya itu masalah). Selain itu, Anda dapat mengubah bahasa yang digunakan untuk file sumber agar memiliki markup yang lebih baik dengan mengubahlanguage=C++
apa pun yang Anda inginkan, dapat menangani banyak bahasa berbeda, lihat di sini .\usepackage[utf8]{inputenc}
\ usepackage [jerman] {babel} `tetapi gagal pada pengujian saya. Namun, saya menduga saya tidak memberi makan utf8 benar. Itu mungkin bernilai pertanyaannya sendiri tetapi saya sarankan Anda bertanya di TeX - LaTeX , mereka harus tahu.(dari StackOverflow )
Ini akan menghasilkan result.txt yang mengandung:
Jika kode sumber Anda memiliki ekstensi yang berbeda, ubah saja sesuai kebutuhan. Anda juga dapat mengedit bit gema untuk menambahkan informasi yang diperlukan (mungkin gema "nama file $ 1" atau mengubah pemisah, atau menambahkan pemisah akhir file).
tautan memiliki metode lain, jadi gunakan metode apa pun yang paling Anda sukai. Saya menemukan ini menjadi paling fleksibel, meskipun itu datang dengan sedikit kurva belajar.
Kode akan berjalan dengan sempurna dari terminal bash (baru saja diuji pada Ubuntu VirtualBox)
Jika Anda tidak peduli dengan nama file dan hanya peduli tentang konten file yang digabungkan:
akan bekerja dengan baik.
Metode lain yang disarankan adalah:
Yang akan mengawali setiap baris tunggal dengan nama file, yang bisa baik bagi sebagian orang, secara pribadi saya merasa terlalu banyak informasi, maka mengapa saran pertama saya adalah untuk loop di atas.
Penghargaan bagi mereka yang ada di forum orang StackOverflow.
EDIT: Saya baru menyadari bahwa Anda setelah khusus HTML atau PDF sebagai hasil akhirnya, beberapa solusi yang saya lihat adalah mencetak file teks ke dalam PostScript dan kemudian mengonversi postscript ke PDF. Beberapa kode yang pernah saya lihat:
kemudian
(Mengharuskan Anda memiliki ghostscript)
Semoga ini membantu.
sumber
Saya tahu saya terlambat, tapi seseorang yang mencari solusi mungkin menemukan ini berguna.
Berdasarkan jawaban @ terdon, saya telah membuat skrip BASH yang berfungsi: https://github.com/eljuanchosf/source-code-to-pdf
sumber