Editor teks untuk mencetak kode C ++

34

Saya mencari editor untuk mencetak (di atas kertas) kode C ++. Saya saat ini di sekolah teknik dan instruktur telah meminta kami untuk menyerahkan kode di atas kertas.

Dia ingin nama + nama keluarga, nomor kelas (di header), jumlah halaman di bagian bawah, dan kata-kata yang dicadangkan dicetak tebal untuk setiap halaman!

Di Windows itu bisa dilakukan dengan notepadd++. Tapi saya di Linux dan saya belum menemukan IDE atau editor teks yang berfungsi. (Aku sudah mencoba SCITE, geditdan Syntaxic)

loi219
sumber
4
a2ps adalah temanmu. Luangkan waktu Anda untuk mengkonfigurasinya.
Satō Katsura
5
Untuk permintaan seperti ini, Anda mungkin ingin mempertimbangkan softwarerecs.stackexchange.com
Eric Renouf
30
Sepertinya guru Anda telah berinvestasi di industri logging.
Anthon
10
Guru Anda ingin kode ... di atas kertas ?!
Lightness Races dengan Monica
8
@ loi219 Seorang guru "sekolah tua" atau "guru sekolah" lama, atau keduanya? ;-)
user800

Jawaban:

76

Nah, jika Anda ingin bekerja lebih keras, lakukan di LaTeX dan berikan file PDF level profesional. Anda belum menyebutkan distribusi Anda, jadi saya akan memberikan instruksi untuk sistem berbasis Debian. Ide dasar yang sama dapat dilakukan pada Linux apa pun.

  1. Instal sistem LaTeX dan paket yang diperlukan

    sudo apt-get install texlive-latex-extra latex-xcolor texlive-latex-recommended
    
  2. Buat file baru (sebut saja report.tex) dengan konten berikut:

    \documentclass{article}
    \usepackage{fancyhdr}
    \pagestyle{fancy}
    %% Define your header here. 
    %% See http://texblog.org/2007/11/07/headerfooter-in-latex-with-fancyhdr/
    \fancyhead[CO,CE]{John Doe, Class 123}
    
    \usepackage[usenames,dvipsnames]{color}  %% Allow color names
    
    %% The listings package will format your source code
    \usepackage{listings}
    \lstdefinestyle{customasm}{
      belowcaptionskip=1\baselineskip,
      xleftmargin=\parindent,
      language=C++,
      breaklines=true, %% Wrap long lines
      basicstyle=\footnotesize\ttfamily,
      commentstyle=\itshape\color{Gray},
      stringstyle=\color{Black},
      keywordstyle=\bfseries\color{OliveGreen},
      identifierstyle=\color{blue},
      xleftmargin=-8em,
      showstringspaces=false
    }        
    \begin{document}
    
    \lstinputlisting[style=customasm]{/path/to/your/code.c}
    
    \end{document}
    

    Pastikan untuk mengubah /path/to/your/code.cbaris kedua dari belakang sehingga mengarah ke jalur sebenarnya file C Anda. Jika Anda memiliki lebih dari satu file untuk dimasukkan, tambahkan \newpagedan kemudian baru \lstinputlistinguntuk file lainnya.

  3. Kompilasi PDF (ini menciptakan report.pdf)

    pdflatex report.tex    
    

Saya menguji ini di sistem saya dengan contoh file yang saya temukan di sini dan itu menciptakan PDF yang terlihat seperti ini:

halaman pertama dari pdf yang dibuat

Untuk contoh yang lebih komprehensif yang secara otomatis akan menemukan semua file .c di folder target dan membuat file PDF yang diindeks dengan masing-masing bagian terpisah, lihat jawaban saya di sini .

terdon
sumber
17
Segera setelah Anda mulai dengan LaTeX Anda tidak bisa melepaskannya! Saya berharap saya mengenal TeX di sekolah menengah ... (atau mereka akan mengajarkannya sebagai alternatif kata).
Kyslik
2
Saya akan berpikir LaTex akan diinstal secara default pada sebagian besar sistem, terutama di sekolah teknik. Ketik "lateks mana" pada prompt perintah: jika itu mengembalikan path, biasanya / usr / bin / lateks, Anda dapat melewati langkah # 1. Juga, jika editor pilihan Anda memiliki bahasa makro yang layak, Anda dapat menjalankan skrip ini dari dalam editor, menggunakan misalnya "gv --watch" untuk menampilkan keluaran langsung.
jamesqf
4
@ jamesqf Saya belum pernah melihat sistem dengan LaTeX diinstal secara default. Ya, orang-orang IT di beberapa sekolah mungkin telah menginstalnya, dan mungkin ada distribusi Linux khusus yang memilikinya secara default, tetapi sebagian besar sistem tidak mau.
terdon
3
@terdon - Saya belum pernah melihat instalasi di departemen Teknik tanpa LaTeX. Ini sangat penting bagi siapa saja yang perlu menghasilkan hasil cetak.
Toby Speight
1
@terdon: 'Default' atau dipilih saat instalasi. Saya tidak ingat melakukan sesuatu yang istimewa untuk mendapatkan LaTeX di sistem saya (OpenSuSE), tapi sudah lama sejak saya melakukan instalasi terakhir. Either way, memeriksa itu sederhana.
jamesqf
29

Saya biasanya menggunakan enskrip: sesuatu seperti

$ enscript --highlight=cpp
           --header='|Real Name|Class 101'
           --footer='|Page $% of $=|'
           -poutput.ps *.cpp

akan menjadi awal - ini menulis output postscript output.ps, sehingga Anda dapat melihat dan menimpanya saat Anda mengutak-atik konfigurasi dan kemudian mencetaknya setelah Anda senang. Lihat halaman manual untuk opsi yang lebih luas.

EDIT mendapatkan footer untuk bekerja dengan benar adalah sedikit rasa sakit dengan enscript - aku tidak pernah melihat karena saya tidak pernah diperlukan itu. Jika Anda menyimpan file ini ke ~/.enscript/so.hdr(Anda mungkin perlu untuk membuat direktori), Anda akan benar-benar mendapatkan output yang diperlukan dengan

$ enscript --highlight=cpp
           --header='|Real Name|Class 101'
           --footer='|Page $% of $=|'
           --fancy-header=so
           -poutput.ps *.cpp

memberi

masukkan deskripsi gambar di sini


Kurang lebih,

  • LaTeχ adalah kualitas terbaik dan pekerjaan yang paling banyak disiapkan,
  • enscript atau a2ps adalah perantara dalam kualitas dan pekerjaan,
  • :hardcopyPerintah vim mudah tetapi tidak fleksibel, dan
  • melakukan penyorotan sintaksis secara manual dalam editor yang tidak sadar kode adalah banyak upaya untuk pengembalian yang buruk.
Tak berguna
sumber
Ini benar-benar apa yang saya cari. Terima kasih banyak!
loi219
Saya kedua emscript. Ini memiliki banyak pilihan dan memberikan hasil yang sangat bagus.
rubik
9

Anda dapat menggunakan :TOhtmlperintah di vim. Ini menjadikan apa yang Anda lihat (yaitu penyorotan sintaksis) sebagai html. Dari sana, browser web yang dapat mencetak ke pdf berfungsi, karena Anda biasanya dapat menyesuaikan konten header / footer.

Ini mungkin mirip dengan :hardcopyperintah yang disebutkan oleh Useless, tetapi saya tidak dapat memverifikasi sistem saya sekarang.

Kemungkinan lain adalah mencetak dari QtCreator, namun sepertinya tidak ada cara untuk mengatur header / footer.

Naungan
sumber
4

Geany adalah IDE sederhana yang memberi Anda banyak pilihan untuk apa yang ada di header.

Kata-kata yang dicadangkan dapat dimanipulasi dalam menu opsi tetapi penyorotan kode melakukan ini untuk gaya notepad ++. (Anda mungkin perlu menyalin / mengunduh skema warna ke folder "/home/$USER_NAME/.config/geany/colorschemes/" untuk mendapatkan yang Anda inginkan)

Sangat sederhana dan secara pribadi saya sangat suka nomor garis dan memformat cetakannya.

Geany juga berjalan di kedua windows dan linux.

Halaman 1

Halaman 2

Halaman 3

Joe
sumber
2

Karena Anda meminta editor , Anda dapat mencetak langsung dari Emacs, menggunakan ps-print-buffer.

Header dan footer berada dalam grup Customize yang disebut ps-print-headers.

Dengan asumsi Anda menggunakan font-lock, Anda mungkin memiliki penyorotan sintaks yang diperlukan. Itu dapat disesuaikan, jika perlu, menggunakan ps-extend-facefungsi.


Karena itu, saya masih menyarankan Anda menggunakan alat 'grind' yang tepat seperti a2ps, enscript, atau daftar LaTeX +.

Toby Speight
sumber
1

Untuk kelengkapan, dan meskipun saya tidak akan merekomendasikan solusi itu, lpprogram ini memiliki -o prettyprintopsi yang dapat melakukan penyorotan sintaksis.

Anda bisa menggunakannya seperti ini misalnya:

lp -t "Name Surname | Class" -o document-format=application/x-csource -o prettyprint path/to/code.cpp

Di sini saya menggunakan opsi -t(judul) untuk mengatur tajuk. Saya tidak dapat mengubah catatan kaki (tetapi nomor halaman muncul di bagian atas). Anda dapat mengatur jenis file dengan opsi -o document-format (daftar nilai yang dapat diterima harus dalam /usr/share/cups/mime/mime.typesatau mungkin /etc/cups/mime/mime.types) tetapi jika file Anda memiliki ekstensi yang benar, itu tidak perlu. Juga, penyorotan sintaksis jauh dari sempurna.

lororget
sumber
1

Anda hanya perlu LibreOffice Writer .

Rekatkan kode C / C ++ Anda.

Temukan kata-kata dan buat Bold semua kata kunci C ++.

Anda dapat menemukannya di sini: http://en.cppreference.com/w/cpp/keyword

Untuk menemukan kata Tekan Ctrl + F. Pilih "Cocokkan huruf" dan klik Temukan Semua (seperti yang ditunjukkan pada tangkapan layar).

masukkan deskripsi gambar di sini

Setelah itu Anda membutuhkan Header dan Footer dengan nama dan nomor halaman Anda.

EDIT: ( Christophe Strobbe berkomentar :)

Ada ekstensi LibreOffice untuk pewarnaan kode: Code Colorizer Formatter . (Saya belum mengujinya.)

GeoMint
sumber
41
Misalnya, penyorotan sintaksis manual.
berguna
Anda punya ide?
loi219
7
Juga, eww, kode dalam font lebar variabel :(
cat
2
Ada ekstensi LibreOffice untuk pewarnaan kode: Code Colorizer Formatter . (Saya belum mengujinya.)
user800
1
Ini terlihat menyakitkan
Joe
0

Saya dulu menggunakan Nedit ketika saya menggunakan sistem Solaris bertahun-tahun yang lalu karena saya menyukai antarmuka GUI. Saya melihat bahwa itu masih ada. Saksikan berikut ini.

Kalpana N.
sumber
-2

Di masa lalu ketika KDE3 masih merupakan hal yang besar, saya menggunakan Kate becaus untuk editor teks yang benar-benar menghasilkan output terbaik. Hari ini saya menggunakan lateks untuk solusi yang lebih mudah diembed, dengan paket lstlisting. Paket ini bukan untuk keluaran warna, tetapi pada printer laser, warna bukan keuntungan.

Arne
sumber
2
Ini tidak benar-benar menjawab pertanyaan, bukan?
countermode
Sebenarnya itu menjawab pertanyaan. Jawabannya adalah: "Lihatlah Kate, itu terbukti baik untukku di masa lalu"
Arne