
Я ищу редактора для печати (на бумаге) кода C++. Я сейчас учусь в инженерной школе, и преподаватель попросил нас отправить код на бумаге.
Он хочет, чтобы имя + фамилия, номер класса (в заголовке), номер страницы внизу и зарезервированные слова были выделены жирным шрифтом на каждой странице!
В Windows это можно сделать с помощью notepadd++
. Но я работаю в Linux и не нашел IDE или текстового редактора, которые работают. (Я уже пробовал SCITE
, gedit
, и Syntaxic
)
решение1
Ну, если вы хотите пройти лишнюю милю, сделайте это в LaTeX и предоставьте файл PDF профессионального уровня. Вы не упомянули свой дистрибутив, поэтому я дам инструкции для систем на базе Debian. Хотя ту же самую базовую идею можно реализовать на любом Linux.
Установить систему LaTeX и необходимые пакеты
sudo apt-get install texlive-latex-extra latex-xcolor texlive-latex-recommended
Создайте новый файл (назовем его
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
для другого файла.Скомпилировать PDF (это создает
report.pdf
)pdflatex report.tex
Я проверил это на своей системе с помощью найденного мной примера файлаздесьи он создает 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.