Edytor tekstu do drukowania kodu C ++

34

Szukam edytora do wydrukowania (na papierze) kodu C ++. Jestem obecnie w szkole inżynierskiej, a instruktor poprosił nas o przesłanie kodu na papierze.

On chce imię + nazwisko, numer klasy (w nagłówku), numer strony na dole i zarezerwowane słowa pogrubione dla każdej strony!

W systemie Windows można to zrobić za pomocą notepadd++. Ale korzystam z Linuksa i nie znalazłem IDE lub edytora tekstu, który działałby. (Ja już próbowałem SCITE, gediti Syntaxic)

loi219
źródło
4
a2ps jest twoim przyjacielem. Nie spiesz się, aby go skonfigurować.
Satō Katsura
5
W przypadku takich wniosków warto rozważyć oprogramowanierecs.stackexchange.com
Eric Renouf
30
wygląda na to, że twój nauczyciel zainwestował w branżę pozyskiwania drewna.
Anthon
10
Twój nauczyciel chce kodu ... na papierze ?
Lekkość ściga się z Monicą
8
@ loi219 Nauczyciel „starej szkoły” czy stary „nauczyciel szkoły”, czy jedno i drugie? ;-)
user800

Odpowiedzi:

76

Cóż, jeśli chcesz pójść o krok dalej, zrób to w LaTeX i zapewnij profesjonalny plik PDF. Nie wspomniałeś o swojej dystrybucji, więc dam instrukcje dla systemów opartych na Debianie. Ten sam podstawowy pomysł można jednak wykonać na dowolnym systemie Linux.

  1. Zainstaluj system LaTeX i niezbędne pakiety

    sudo apt-get install texlive-latex-extra latex-xcolor texlive-latex-recommended
    
  2. Utwórz nowy plik (nazwij go report.tex) o następującej treści:

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

    Po prostu pamiętaj o zmianie /path/to/your/code.cw przedostatniej linii, aby wskazywała na rzeczywistą ścieżkę pliku C. Jeśli chcesz dołączyć więcej niż jeden plik, dodaj a, \newpagea następnie nowy \lstinputlistingdla drugiego pliku.

  3. Skompiluj plik PDF (spowoduje to utworzenie report.pdf)

    pdflatex report.tex    
    

Przetestowałem to na moim systemie z przykładowym plikiem, który tu znalazłem i tworzy plik PDF, który wygląda następująco:

pierwsza strona utworzonego pliku pdf

Bardziej wyczerpujący przykład, który automatycznie znajdzie wszystkie pliki .c w folderze docelowym i utworzy indeksowany plik PDF z każdym w osobnej sekcji, znajduje się w mojej odpowiedzi tutaj .

terdon
źródło
17
Gdy tylko zaczniesz korzystać z LaTeX, nie możesz puścić! Szkoda, że ​​nie znałem TeXa w liceum ... (albo nauczą go jako alternatywy dla słowa).
Kyslik,
2
Myślę, że LaTex byłby domyślnie instalowany na większości systemów, szczególnie w szkole inżynierskiej. Wpisz „which latex” w wierszu polecenia: jeśli zwraca ścieżkę, zazwyczaj / usr / bin / latex, możesz pominąć krok nr 1. Ponadto, jeśli wybrany edytor ma przyzwoity język makr, możesz uruchomić ten skrypt z poziomu edytora, używając np. „Gv --watch” do wyświetlania danych wyjściowych na żywo.
jamesqf
4
@ jamesqf Nigdy nie widziałem systemu z zainstalowanym LaTeX domyślnie. Tak, informatycy w niektórych szkołach mogli go zainstalować i mogą istnieć wyspecjalizowane dystrybucje Linuksa, które domyślnie go mają, ale ogromna większość systemów tego nie zrobi.
terdon
3
@terdon - Nigdy nie widziałem instalacji w dziale inżynierii bez LaTeXa. Jest to bardzo istotne dla każdego, kto musi produkować wydruk.
Toby Speight
1
@terdon: „Domyślny” lub wybrany podczas instalacji. Nie przypominam sobie robienia niczego specjalnego, aby uzyskać LaTeX na moich systemach (OpenSuSE), ale minęło trochę czasu od ostatniej instalacji. Tak czy inaczej, sprawdzenie jest proste.
jamesqf
29

Zwykle używam enscript: coś w rodzaju

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

zacznie się - zapisuje dane wyjściowe PostScript output.ps, dzięki czemu można wyświetlić podgląd i zastąpić go podczas majstrowania przy konfiguracji, a następnie wydrukować go, gdy będziesz zadowolony. Zobacz stronę manuala, aby uzyskać bardziej rozbudowane opcje.

EDYCJA poprawne działanie stopki jest trochę uciążliwe przy pomocy encyklopedii - nigdy tego nie zauważyłem, ponieważ nigdy jej nie potrzebowałem. Jeśli zapiszesz ten plik w ~/.enscript/so.hdr(prawdopodobnie musisz utworzyć katalog), faktycznie uzyskasz wymagane dane wyjściowe za pomocą

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

dający

wprowadź opis zdjęcia tutaj


W przybliżeniu,

  • LaTeχ to najlepsza jakość i najwięcej pracy do skonfigurowania,
  • enscript lub a2ps są pośrednie zarówno pod względem jakości, jak i pracy,
  • :hardcopypolecenie vima jest łatwe, ale nie tak elastyczne, i
  • ręczne podświetlanie składni w edytorze nieobsługującym kodu jest dużym wysiłkiem dla uzyskania słabego zwrotu.
Bezużyteczny
źródło
Właśnie tego szukam. Dziękuję Ci bardzo!
loi219
Ja drugi emscript. Ma mnóstwo opcji i daje bardzo dobre wyniki.
rubik
9

Możesz użyć :TOhtmlpolecenia w vimie. To renderuje to, co widzisz (tj. Podświetlanie składni) jako HTML. Stamtąd działa przeglądarka internetowa, która może drukować do formatu pdf, ponieważ zwykle można dostosować zawartość nagłówka / stopki.

Prawdopodobnie jest to podobne do :hardcopypolecenia wspomnianego przez Bezużyteczne, ale nie mogę teraz zweryfikować w moim systemie.

Inną możliwością jest drukowanie z QtCreatora, jednak wydaje się, że nie ma sposobu na ustawienie nagłówków / stopek.

Cień
źródło
4

Geany to proste IDE, które daje wiele opcji dla tego, co znajduje się w nagłówku.

Słowami zastrzeżonymi można manipulować w menu opcji, ale wyróżnianie kodu robi to dla stylu notatnika ++. (może być konieczne skopiowanie / pobranie schematów kolorów do folderu „/home/$USER_NAME/.config/geany/colorschemes/”, aby uzyskać żądany)

Bardzo prosty i osobiście bardzo podoba mi się numer linii i format, który drukuje.

Geany działa także w systemie Windows i Linux.

Strona 1

Strona 2

Strona 3

Joe
źródło
2

Ponieważ prosisz o edytor , możesz drukować bezpośrednio z Emacsa, używając ps-print-buffer.

Nagłówki i stopki znajdują się w grupie Dostosuj o nazwie ps-print-headers.

Zakładając, że używasz blokady czcionek, prawdopodobnie masz podświetlanie składni, które jest wymagane. W razie potrzeby można go dostosować za pomocą ps-extend-facefunkcji.


Powiedziawszy to, nadal zalecałbym użycie odpowiedniego narzędzia „grind”, takiego jak a2ps, enscript lub LaTeX +.

Toby Speight
źródło
1

Dla kompletności i chociaż nie poleciłbym tego rozwiązania, lpprogram ma -o prettyprintopcję, która może wyróżniać składnię.

Możesz użyć tego w następujący sposób:

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

Tutaj użyłem opcji -t(tytuł), aby ustawić nagłówek. Nie mogę jednak zmienić stopki (ale numer strony pojawia się u góry). Możesz ustawić typ pliku za pomocą opcji -o document-format (lista dopuszczalnych wartości powinna być w, /usr/share/cups/mime/mime.typesa może /etc/cups/mime/mime.types), ale jeśli plik ma prawidłowe rozszerzenie, nie powinno być konieczne. Ponadto wyróżnianie składni jest dalekie od doskonałości.

lgeorget
źródło
1

Potrzebujesz tylko LibreOffice Writer .

Wklej swój kod C / C ++.

Znajdź słowa i pogrub wszystkie słowa kluczowe C ++.

Można je znaleźć tutaj: http://en.cppreference.com/w/cpp/keyword

Aby znaleźć słowo Naciśnij Ctrl + F. Wybierz „Dopasuj wielkość liter” i kliknij Znajdź wszystko (jak pokazano na zrzucie ekranu).

wprowadź opis zdjęcia tutaj

Następnie potrzebujesz Nagłówka i Stopki z Twoim imieniem i numerem strony.

EDYCJA: ( komentuje Christophe Strobbe:)

Istnieje rozszerzenie LibreOffice do kolorowania kodu: Code Colorizer Formatter . (Jeszcze tego nie testowałem.)

GeoMint
źródło
41
Eww, ręczne podświetlanie składni.
Bezużyteczne
Masz jakiś pomysł
loi219
7
Ponadto eww, kod czcionką o zmiennej szerokości :(
cat
2
Istnieje rozszerzenie LibreOffice do kolorowania kodu: Code Colorizer Formatter . (Jeszcze tego nie testowałem.)
user800
1
To wygląda bolesnie
Joe
0

Kiedyś korzystałem z Nedit, kiedy byłem na systemie Solaris wiele lat temu, ponieważ lubiłem interfejs GUI. Widzę, że wciąż jest w pobliżu. Sprawdź to.

Kalpana N.
źródło
-2

W przeszłości, gdy KDE3 wciąż było wielką rzeczą, używałem Kate, ponieważ jako edytor tekstów naprawdę produkuje najlepsze wyniki. Dzisiaj wybrałbym lateks, aby uzyskać bardziej osadzalne rozwiązanie z pakietem lstlisting. Ten pakiet nie służy do drukowania w kolorze, ale na drukarce laserowej kolory nie są zaletą.

Arne
źródło
2
To tak naprawdę nie odpowiada na pytanie, prawda?
kontr-
Właściwie to odpowiada na pytanie. Odpowiedź brzmi: „Spójrz na Kate, w przeszłości okazało się to dla mnie dobre”
Arne,