Текстовий редактор для друку коду C ++


34

Я шукаю редактора для друку (на папері) коду С ++. Зараз я в інженерній школі, і викладач попросив нас подати код на папері.

Він хоче ім'я + прізвище, номер класу (на заголовку), номер сторінки внизу та зарезервовані слова, виділені жирним шрифтом для кожної сторінки!

У Windows це можна зробити за допомогою notepadd++. Але я в Linux і не знайшов редактора IDE або текстового редактора, який би працював. (Я вже пробував SCITE, geditі Syntaxic)


4
a2ps - твій друг. Знайдіть свій час, щоб налаштувати його.
Satō Katsura

5
Для таких запитів, ви можете розглянути softwarerecs.stackexchange.com
Eric Renouf

30
здається, ваш учитель вклав гроші в галузі лісозаготівлі.
Антон

10
Ваш вчитель хоче код ... на папері ?!
Гонки легкості з Монікою

8
@ loi219 Вчитель "старої школи" чи старий "шкільний учитель", чи те й інше? ;-)
user800

Відповіді:


76

Ну а якщо ви хочете пройти додаткову милю, зробіть це в LaTeX і надайте PDF-файл професійного рівня. Ви не згадали про свій дистрибутив, тому я дам інструкції для систем на базі Debian. Та ж основна ідея може бути зроблена на будь-якому Linux.

  1. Встановіть систему LaTeX та необхідні пакети

    sudo apt-get install texlive-latex-extra latex-xcolor texlive-latex-recommended
    
  2. Створіть новий файл (зателефонуйте report.tex) із наступним вмістом:

    \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.cпередостанню лінію, щоб вона вказувала на фактичний шлях вашого файлу C. Якщо у вас є кілька файлів для включення, додайте а, \newpageа потім новий \lstinputlistingдля іншого файлу.

  3. Складіть PDF (це створює report.pdf)

    pdflatex report.tex    
    

Я перевірив це на своїй системі з файлом прикладу, який я знайшов тут, і він створює PDF, який виглядає приблизно так:

перша сторінка створеного PDF

Більш вичерпний приклад, який автоматично знайде всі .c файли в цільовій папці та створить індексований PDF-файл із кожним в окремому розділі, дивіться мою відповідь тут .


17
Як тільки ви почнете з LaTeX, ви не можете відпустити! Я б хотів, щоб я знав TeX у середній школі ... (або вони навчили б це як альтернативу слову).
Кислик

2
Я думаю, що LaTex буде встановлений за замовчуванням у більшості систем, особливо в інженерній школі. Введіть "який латекс" у командному рядку: якщо він повертає шлях, як правило, / usr / bin / latex, ви можете пропустити крок №1. Крім того, якщо ваш редактор на вибір має гідну мову макросу, ви можете запустити цей скрипт у редакторі, використовуючи, наприклад, "gv --watch" для відображення результатів в реальному часі.
jamesqf

4
@jamesqf Я ніколи не бачив системи з LaTeX, встановленою за замовчуванням. Так, ІТ-люди в якійсь школі, можливо, встановили його, і можуть бути спеціалізовані дистрибутиви Linux, які мають його за замовчуванням, але переважна більшість систем цього не зробить.
тердон

3
@terdon - Я ніколи не бачив установки в інженерному відділі без LaTeX. Це дуже важливо для кожного, кому потрібно виробляти друкований вихід.
Toby Speight

1
@terdon: "За замовчуванням" або вибрано при встановленні. Я не пам'ятаю робити щось особливе, щоб отримати LaTeX на моїх системах (OpenSuSE), але минув час, коли я зробив останню інсталяцію. У будь-якому випадку перевірка проста.
jamesqf

29

Зазвичай я використовую енкрипт: щось подібне

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

буде початком - це записує вихідний постскрипт output.ps, щоб ви могли попередньо переглядати та перезаписувати це під час роботи з конфігурацією, а потім надрукувати його, як тільки будете щасливі. Дивіться довідкову сторінку для більш широких варіантів.

EDIT, щоб колонтитул працював коректно, - це біль, що стосується енкрипту - я ніколи не помічав, тому що ніколи цього не вимагав. Якщо ви збережете цей файл у ~/.enscript/so.hdr(ймовірно, вам потрібно створити каталог), ви фактично отримаєте необхідний вихід із

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

давання

введіть тут опис зображення


Приблизно,

  • LaTeχ - це найкраща якість та найвища робота з налаштування,
  • Прописи або a2ps є проміжними як у якості, так і в роботі,
  • :hardcopyКоманда vim проста, але не така гнучка, і
  • робити підсвічування синтаксису вручну в редакторі, який не знає коду, є багато зусиль для поганого повернення.

Це абсолютно те, що я шукаю. Велике спасибі!
loi219

Я другий emscript. Він має безліч варіантів і дає дуже хороші результати.
rubik

9

Ви можете використовувати :TOhtmlкоманду in vim. Це робить те, що ви бачите (тобто виділення синтаксису) як HTML. Звідти працює веб-браузер, який може друкувати на pdf, оскільки зазвичай ви можете налаштувати вміст заголовка / колонтитула.

Це, мабуть, схоже на :hardcopyкоманду, згадану Useless, але я зараз не можу перевірити свою систему.

Інша можливість - друкувати з QtCreator, однак, здається, не існує способу встановлення заголовків / колонтитулів.


4

Geany - це проста програма IDE, яка дає вам багато варіантів того, що відбувається в заголовку.

Зарезервованими словами можна керувати в меню параметрів, але виділення коду робить це для стилю блокнота ++. (Вам може знадобитися скопіювати / завантажити кольорові схеми у папку "/home/$USER_NAME/.config/geany/colorschemes/", щоб отримати потрібну)

Дуже просто і особисто мені дуже подобаються номери рядків та формат, який він друкує.

Також geany працює як у Windows, так і в Linux.

Сторінка 1

Сторінка 2

Сторінка 3


2

Оскільки ви вимагаєте редактора , ви можете друкувати безпосередньо з Emacs, використовуючи ps-print-buffer.

Заголовки та колонтитули перебувають у групі Налаштувати ps-print-headers.

Якщо припустимо, що ви використовуєте блокування шрифтів, у вас, ймовірно, є необхідне виділення синтаксису. Його можна при необхідності відрегулювати за допомогою ps-extend-faceфункції.


Сказавши це, я все-таки рекомендую використовувати належний інструмент "шліфування", такий як a2ps, enccript або списки LaTeX +.


1

Для повноти, і хоча я не рекомендував би це рішення, lpпрограма має -o prettyprintваріант, який може робити підсвічування синтаксису.

Ви можете використовувати його так, наприклад:

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

Тут я використав -tваріант (title) для встановлення заголовка. Я не можу змінити колонтитул (але номер сторінки відображається вгорі). Ви можете встановити тип файлу за допомогою параметра -o document-format (список прийнятного значення повинен бути /usr/share/cups/mime/mime.typesабо, можливо, /etc/cups/mime/mime.types), але якщо ваш файл має правильне розширення, це не повинно бути необхідним. Також виділення синтаксису далеко не ідеальне.


1

Вам просто потрібен LibreOffice Writer .

Вставте свій C / C ++ код.

Знайдіть слова та зробіть жирним усі ключові слова C ++.

Ви можете знайти їх тут: http://en.cppreference.com/w/cpp/keyword

Щоб знайти слово Натисніть Ctrl + F. Виберіть "Зрівняти регістр" та натисніть Знайти все (як показано на знімку екрана).

введіть тут опис зображення

Після цього вам потрібна заголовка та колонтитул із своїм ім'ям та номером сторінки.

EDIT: ( Christophe Strobbe прокоментував :)

Існує розширення LibreOffice для фарбування коду: Code Colorizer Formatter . (Я ще не перевіряв цього.)


41
Eww, підсвічування синтаксису вручну.
Марно

У вас є ідея?
loi219

7
Також eww, код шрифтом змінної ширини :(
кіт

2
Існує розширення LibreOffice для фарбування коду: Code Colorizer Formatter . (Я його ще не перевіряв.)
user800

1
Це виглядає боляче
Джо

0

Раніше я використовував Nedit, коли я був у системі Solaris багато років тому, як мені сподобався інтерфейс GUI. Я бачу, що це все ще навколо. Перевір.


-2

У минулому, коли KDE3 був ще великою справою, я використовував Kate becaus для редактора тексту, він справді дає найкращі результати. Сьогодні я б пішов з латексом для більш можливого рішення, з пакетом, що міститься в списку. Цей пакет не для кольорового виведення, але на лазерному принтері кольори не є перевагою.


2
Це насправді не відповідає на питання, чи не так?
контрмоде

Насправді це відповідає на питання. Відповідь: "Погляньте на Кейт, вона виявилася для мене в минулому"
Арн
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.