C ++ kodunu yazdırmak için metin editörü


34

(Kağıda) C ++ kodunu yazdırmak için bir editör arıyorum. Şu anda mühendislik okulundayım ve eğitmen kodu kağıda göndermemizi istedi.

Adını soyadı, sınıf numarasını (başlığında), altta sayfanın sayısını ve her sayfa için ayrılmış kelimeleri yazmasını istiyor!

Windows'ta ile yapılabilir notepadd++. Fakat Linux'tayım ve çalışan bir IDE veya metin editörü bulamadım. (Daha önce de denedim SCITE, geditve Syntaxic)


4
a2ps senin arkadaşın. Yapılandırmak için zaman ayırın.
Satō Katsura

5
Bu gibi istekleriniz için softwarerecs.stackexchange.com
Eric Renouf

30
öğretmeninizin günlük endüstrisine yatırım yapmış gibi geliyor.
Anthon,

10
Öğretmenin kod istiyor ... kağıt üstünde ?
Monica ile Hafiflik Yarışları,

8
@ loi219 Bir "eski okul" öğretmeni mi yoksa eski bir "okul öğretmeni" mi, yoksa her ikisi de mi? ;-)
user800,

Yanıtlar:


76

Daha fazla mil çekmek istiyorsanız, LaTeX'te yapın ve profesyonel düzeyde bir PDF dosyası sağlayın. Dağıtımınızdan bahsetmediniz, bu yüzden Debian tabanlı sistemler için talimatlar vereceğim. Aynı temel fikir, herhangi bir Linux'ta da yapılabilir.

  1. LaTeX sistemi ve gerekli paketleri kurun

    sudo apt-get install texlive-latex-extra latex-xcolor texlive-latex-recommended
    
  2. report.texAşağıdaki içeriklere sahip yeni bir dosya oluşturun (arayın ):

    \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}
    

    /path/to/your/code.cPenultimate satırında, C dosyanızın asıl yolunu gösterecek şekilde değiştirdiğinizden emin olun . Dahil etmek için birden fazla dosyanız varsa , diğer dosya için \newpagebir a , ardından yenisini ekleyin \lstinputlisting.

  3. PDF'yi derleyin (bu oluşturur report.pdf)

    pdflatex report.tex    
    

Bunu sistemimde burada bulduğum örnek bir dosyayla test ettim ve şuna benzeyen bir PDF dosyası oluşturdum:

oluşturulan pdf'nin ilk sayfası

Hedef klasördeki tüm .c dosyalarını otomatik olarak bulacak ve her biri ayrı bir bölümde dizine alınmış bir PDF dosyası oluşturacak daha kapsamlı bir örnek için, buradaki cevaba bakın .


17
LaTeX ile başlar başlamaz bırakamazsınız! Keşke TeX'i lisede bilseydim ... (ya da kelimeye alternatif olarak öğretirlerdi).
Kyslik

2
LaTex'in varsayılan olarak çoğu sistemde, özellikle de bir mühendislik okulunda kurulacağını düşünüyorum. Komut isteminde "hangi lateks" yazın: bir yol açarsa, genellikle / usr / bin / latex, # 1 adımını atlayabilirsiniz. Ayrıca, eğer editörünüzün iyi bir makro dili varsa, bu senaryoyu editörün içinden çalıştırabilir, örneğin canlı çıktıyı görüntülemek için "gv --watch" komutunu kullanarak düzenleyebilirsiniz.
jamesqf,

4
@jamesqf Varsayılan olarak LaTeX yüklü bir sistem görmedim. Evet, bazı okullardaki BT insanları kurmuş olabilir ve varsayılan olarak sahip olduğu özel Linux dağıtımları olabilir, ancak sistemlerin büyük çoğunluğu bunu yapmaz.
terdon

3
@terdon - Bir Mühendislik departmanında kurulum görmedim olmadan LaTeX. Yazdırılabilir çıktılar üretmek isteyen herkes için oldukça önemlidir.
Toby Speight

1
@ terdon: 'Varsayılan' veya kurulumda seçili. LaTeX'i sistemlerimde (OpenSuSE) çalıştırmak için özel bir şey yaptığımı hatırlamıyorum, ancak son yüklemeyi yaptığımdan bu yana bir süre geçti. Her iki durumda da, kontrol basittir.
jamesqf

29

Genellikle enscript kullanırdım: gibi bir şey

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

bir başlangıç ​​olacaktır - bu, postscript çıktısını yazar output.ps, böylece config ile uğraşırken bunu önizleyebilir ve üzerine yazabilir ve sonra mutlu olduğunuzda yazdırabilirsiniz. Daha kapsamlı seçenekler için man sayfasına bakın.

Altbilginin doğru çalışmasını sağlamak EDIT , enscriptli bir acıdır - asla farketmedim çünkü buna hiç ihtiyacım olmadı. Eğer kaydederseniz bu dosyayı için ~/.enscript/so.hdr(muhtemelen dizini oluşturmak gerekir), aslında gerekli çıktı ile alırsınız

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

vererek

görüntü tanımını buraya girin


Kabaca,

  • LaTeχ, kurulacak en iyi kalite ve en çok iş olanıdır,
  • enscript veya a2ps hem kalite hem de iş bakımından orta düzeydedir,
  • vim'in :hardcopyemri kolay ama esnek değil
  • kod tanımayan bir düzenleyicide manuel olarak vurgulanan sözdizimi yapmak, kötü bir geri dönüş için çok çaba gösterir.

Bu kesinlikle aradığım şey. Çok teşekkür ederim!
loi219

Ben ikinci emscript. Çok seçenek var ve çok iyi sonuçlar veriyor.
rubik

9

:TOhtmlKomutu vim'de kullanabilirsiniz . Bu, gördüğünüzü (örneğin, sözdizimi vurgulama) html olarak işler. Oradan, genellikle üstbilgi / altbilgi içeriğini özelleştirebileceğiniz gibi, pdf'e yazdırabilen bir web tarayıcısı çalışır.

Bu, muhtemelen :hardcopyYararsız tarafından belirtilen komuta benzer , ancak şu anda sistemimi doğrulayamıyorum.

Başka bir olasılık da QtCreator'dan yazdırmaktır, ancak üstbilgileri / altbilgileri ayarlamanın bir yolu görünmemektedir.


4

Geany, başlığa girenler için size birçok seçenek sunan basit bir IDE'dir.

Seçenekler menüsünde ayrılmış kelimeler değiştirilebilir, ancak vurgulayan kod bunu notepad ++ stili için yapar. (İstediğiniz şeyi almak için renk şemalarını "/home/$USER_NAME/.config/geany/colorschemes/" klasörünüze kopyalamanız / indirmeniz gerekebilir)

Çok basit ve kişisel olarak Satır numaralarını ve yazdırdığı formatı gerçekten seviyorum.

Ayrıca, geany hem pencere hem de linux üzerinde çalışır.

Sayfa 1

Sayfa 2

Sayfa 3


2

Bir editör istediğinden beri , doğrudan Emacs'tan yazdırabilirsin ps-print-buffer.

Üstbilgiler ve altbilgiler adı verilen Özelleştir grubunda ps-print-headers.

Yazı tipi kilidini kullandığınızı varsayarsak, muhtemelen gereken sözdizimini vurgulayabilirsiniz. Gerekirse, ps-extend-faceişlev kullanılarak ayarlanabilir .


Bunu söyledikten sonra hala a2ps, enscript veya LaTeX + listeleri gibi uygun bir 'öğütme' aracı kullanmanızı öneririm.


1

Bütünlüğü ve bu çözümü önermesem de, lpprogramın -o prettyprintsözdizimi vurgulama yapabilen bir seçeneği var.

Örneğin bu şekilde kullanabilirsiniz:

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

Burada -tbaşlığı ayarlamak için (başlık) seçeneğini kullandım. Altbilgiyi değiştiremiyorum (ancak sayfa numarası en üstte görünüyor). Dosya türünü bu seçenekle ayarlayabilirsiniz -o document-format (kabul edilebilir değerin listesi içinde olmalı /usr/share/cups/mime/mime.typesveya belki de olmalıdır /etc/cups/mime/mime.types) ancak dosyanızın doğru uzantısı varsa, gerekli olmamalıdır. Ayrıca, sözdizimi vurgulama mükemmel olmaktan uzak.


1

Sadece LibreOffice Writer'a ihtiyacınız var .

C / C ++ kodunuzu yapıştırın.

Kelimeleri bulun ve tüm C ++ anahtar kelimelerini kalın yapın .

Onları burada bulabilirsiniz: http://en.cppreference.com/w/cpp/keyword

Bir kelime bulmak için Ctrl + F tuşlarına basın.

görüntü tanımını buraya girin

Bundan sonra adınız ve sayfa numaranız ile bir Üstbilgi ve Altbilgiye ihtiyacınız var.

EDIT: ( Christophe Strobbe yorumladı :)

Kod renklendirme için bir LibreOffice uzantısı vardır: Kod Renklendirici Formatlayıcı . (Henüz test etmedim.)


41
Eww, manuel sözdizimi vurgulama.
Yararsız

Bir fikrin var mı?
loi219

7
Ayrıca, eww, değişken genişlikli fonttaki kod :(
cat

2
Kod renklendirme için bir LibreOffice uzantısı vardır: Kod Renklendirici Formatlayıcı . (Henüz test etmedim.)
user800

1
Bu acı verici görünüyor
Joe,

0

Bir GUI arayüzünü sevdiğimden yıllar önce Solaris sistemindeyken Nedit kullanıyordum. Görüyorum ki hala buralarda. Bunu kontrol et.


-2

Geçmişte KDE3'ün hala büyük bir şey olduğu zamanlarda, Kate Becaus'u bir metin editörü için kullandım, gerçekten en iyi çıktıyı verdim. Bugün daha lütufsuz bir çözüm için lateks ile giderdim, lstlisting paketi ile. Bu paket renkli çıktılar için değil, bir lazer yazıcıda renkler bir avantaj değil.


2
Bu soruya gerçekten cevap vermiyor, değil mi?
countermode

Aslında soruyu cevaplıyor. Cevap: “Kate'e bir göz atın, geçmişte benim için iyi olduğunu kanıtladı”
Arne
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.