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

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

Я ищу редактора для печати (на бумаге) кода C++. Я сейчас учусь в инженерной школе, и преподаватель попросил нас отправить код на бумаге.

Он хочет, чтобы имя + фамилия, номер класса (в заголовке), номер страницы внизу и зарезервированные слова были выделены жирным шрифтом на каждой странице!

В Windows это можно сделать с помощью notepadd++. Но я работаю в Linux и не нашел IDE или текстового редактора, которые работают. (Я уже пробовал SCITE, gedit, и Syntaxic)

решение1

Ну, если вы хотите пройти лишнюю милю, сделайте это в 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-файл с каждым в отдельном разделе, см. в моем ответе.здесь.

решение2

Я обычно использую enscript: что-то вроде

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

будет началом - это записывает вывод postscript в output.ps, так что вы можете просмотреть и перезаписать его, пока вы возитесь с конфигурацией, а затем распечатать его, когда вы будете довольны. Смотрите страницу man для более обширных опций.

РЕДАКТИРОВАТЬзаставить нижний колонтитул работать правильно — это немного мучительно с enscript — я никогда не замечал этого, потому что мне это никогда не требовалось. Если вы сохранитеэтот файл( вероятно ~/.enscript/so.hdr, вам нужно будет создать каталог), вы фактически получите требуемый вывод с помощью

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

давая

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


Грубо,

  • LaTeχ — это лучшее качество и самая трудоемкая настройка,
  • enscript или a2ps являются промежуточными как по качеству, так и по работе,
  • Команда vim :hardcopyпроста, но не настолько гибка, и
  • ручная подсветка синтаксиса в редакторе, не поддерживающем код, требует больших усилий и приводит к плохому результату.

решение3

Вы можете использовать :TOhtmlкоманду в vim. Это преобразует то, что вы видите (т. е. подсветку синтаксиса) в html. Оттуда веб-браузер, который может печатать в pdf, работает, так как вы обычно можете настроить содержимое верхнего/нижнего колонтитула.

Вероятно, это похоже на :hardcopyкоманду, упомянутую Useless, но я сейчас не могу проверить ее на своей системе.

Другая возможность — печать из QtCreator, однако, похоже, нет способа задать верхние/нижние колонтитулы.

решение4

Так как вы проситередактор, вы можете печатать напрямую из Emacs, используя ps-print-buffer.

Верхние и нижние колонтитулы находятся в группе «Настроить» под названием ps-print-headers.

Если вы используете font-lock, то, вероятно, у вас есть требуемая подсветка синтаксиса. При необходимости ее можно настроить с помощью функции ps-extend-face.


Несмотря на это, я бы все равно рекомендовал вам использовать надлежащий инструмент для «шлифовки», такой как a2ps, enscript или LaTeX+listings.

Связанный контент