
Estou procurando um editor para imprimir (em papel) código C++. Atualmente estou na escola de engenharia e o instrutor nos pediu para enviar o código em papel.
Ele quer nome + sobrenome, o número da turma (no cabeçalho), o número da página no final e as palavras reservadas em negrito para cada página!
No Windows isso pode ser feito com notepadd++
. Mas estou no Linux e não encontrei um IDE ou editor de texto que funcione. (Eu já tentei SCITE
, gedit
, e Syntaxic
)
Responder1
Bem, se você quiser ir além, faça-o em LaTeX e forneça um arquivo PDF de nível profissional. Você não mencionou sua distribuição, então darei instruções para sistemas baseados em Debian. A mesma ideia básica pode ser feita em qualquer Linux.
Instale um sistema LaTeX e os pacotes necessários
sudo apt-get install texlive-latex-extra latex-xcolor texlive-latex-recommended
Crie um novo arquivo (chame-o de
report.tex
) com o seguinte conteúdo:\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}
Apenas certifique-se de alterar
/path/to/your/code.c
a penúltima linha para que aponte para o caminho real do seu arquivo C. Se você tiver mais de um arquivo para incluir, adicione um\newpage
e depois um novo\lstinputlisting
para o outro arquivo.Compile um PDF (isso cria
report.pdf
)pdflatex report.tex
Eu testei isso no meu sistema com um arquivo de exemplo que encontreiaquie cria um PDF parecido com este:
Para um exemplo mais abrangente que encontrará automaticamente todos os arquivos .c na pasta de destino e criará um arquivo PDF indexado com cada um em uma seção separada, veja minha respostaaqui.
Responder2
Eu normalmente usaria enscript: algo como
$ enscript --highlight=cpp
--header='|Real Name|Class 101'
--footer='|Page $% of $=|'
-poutput.ps *.cpp
será um começo - isso grava a saída postscript em output.ps
, para que você possa visualizá-la e substituí-la enquanto estiver mexendo na configuração e depois imprimi-la quando estiver satisfeito. Veja a página de manual para opções mais extensas.
EDITARfazer com que o rodapé funcione corretamente é um pouco complicado com o enscript - eu nunca percebi porque nunca precisei disso. Se você salvareste ficheiropara ~/.enscript/so.hdr
(você provavelmente precisará criar o diretório), você obterá a saída necessária com
$ enscript --highlight=cpp
--header='|Real Name|Class 101'
--footer='|Page $% of $=|'
--fancy-header=so
-poutput.ps *.cpp
dando
Aproximadamente,
- LaTeχ é a melhor qualidade e mais trabalhoso para configurar,
- enscript ou a2ps são intermediários em qualidade e trabalho,
- o comando do vim
:hardcopy
é fácil, mas não tão flexível, e - fazer o realce de sintaxe manualmente em um editor sem reconhecimento de código exige muito esforço para um retorno ruim.
Responder3
Você pode usar o :TOhtml
comando no vim. Isso renderiza o que você vê (ou seja, destaque de sintaxe) como HTML. A partir daí, um navegador da web que pode imprimir em PDF funciona, já que normalmente você pode personalizar o conteúdo do cabeçalho/rodapé.
Provavelmente é semelhante ao :hardcopy
comando mencionado por Useless, mas não posso verificar em meu sistema no momento.
Outra possibilidade é imprimir a partir do QtCreator, porém não parece haver uma maneira de definir os cabeçalhos/rodapés.
Responder4
Já que você pede umeditor, você pode imprimir diretamente do Emacs, usando ps-print-buffer
.
Os cabeçalhos e rodapés estão no grupo Personalizar chamado ps-print-headers
.
Supondo que você use font-lock, você provavelmente terá o destaque de sintaxe necessário. Pode ser ajustado, se necessário, através da ps-extend-face
função.
Dito isto, eu ainda recomendo que você use uma ferramenta de 'grind' adequada, como a2ps, enscript ou LaTeX+listings.