Editor de texto para impressão de código C ++

34

Estou procurando um editor para imprimir (em papel) código C ++. Eu estou atualmente na escola de engenharia e o instrutor nos pediu para enviar o código no papel.

Ele quer o nome + sobrenome, o número da classe (no cabeçalho), o número da página na parte inferior 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 )

    
por loi219 03.10.2016 / 17:42

9 respostas

76

Bem, se você quiser ir mais longe, faça isso em LaTeX e forneça um arquivo PDF de nível profissional. Você não mencionou sua distribuição, então eu darei instruções para sistemas baseados em Debian. A mesma ideia básica pode ser feita em qualquer Linux.

  1. Instale um sistema LaTeX e os pacotes necessários

    sudo apt-get install texlive-latex-extra latex-xcolor texlive-latex-recommended
    
  2. Crie um novo arquivo (chame-o 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 na 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, em seguida, um novo \lstinputlisting para o outro arquivo.

  3. Compile um PDF (isso cria report.pdf )

    pdflatex report.tex    
    

Eu testei isso no meu sistema com um arquivo de exemplo que eu encontrei aqui e ele cria um PDF que se parece com isso:

Paraumexemplomaisabrangentequelocalizaráautomaticamentetodososarquivos.cnapastadedestinoecriaráumarquivoPDFindexadocomcadaumdelesemumaseçãoseparada,vejaminharesposta aqui .

    
por 03.10.2016 / 18:43
29

Eu costumava usar o 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 do postscript em output.ps , para que você possa visualizá-la e sobrescrevê-la enquanto está mexendo na configuração e depois imprimi-la assim que estiver satisfeito. Veja a man page para opções mais extensas.

EDITAR fazer com que o rodapé funcione corretamente é um pouco complicado com o enscript - eu nunca notei porque nunca precisei. Se você salvar este arquivo em ~/.enscript/so.hdr (provavelmente será necessário criar o diretório), na verdade, 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

Mais ou menos,

  • LaTeχ é a melhor qualidade e o maior trabalho para configurar,
  • enscript ou a2ps são intermediários na qualidade e no trabalho,
  • O comando :hardcopy do vim é fácil, mas não flexível, e
  • fazer destaque de sintaxe manualmente em um editor sem reconhecimento de código é um grande esforço para um retorno insatisfatório.
por 03.10.2016 / 18:46
9

Você pode usar o comando :TOhtml no vim. Isso renderiza o que você vê (por exemplo, realce de sintaxe) como html. A partir daí, um navegador da Web que pode imprimir em PDF funciona, pois normalmente você pode personalizar o conteúdo do cabeçalho / rodapé.

Isso provavelmente é semelhante ao comando :hardcopy mencionado por Useless, mas não posso verificar no meu sistema agora.

Outra possibilidade é imprimir a partir do QtCreator, no entanto, parece não haver uma maneira de definir os cabeçalhos / rodapés.

    
por 03.10.2016 / 23:57
4

O Geany é um IDE simples que oferece muitas opções para o que está no cabeçalho.

As palavras reservadas podem ser manipuladas no menu de opções, mas o destaque do código faz isso no estilo do notepad ++. (pode ser necessário copiar / baixar os esquemas de cores para a pasta "/home/$USER_NAME/.config/geany/colorschemes/" para obter o desejado)

Muito simples e pessoalmente, eu realmente gosto dos números de linha e do formato que ela imprime.

O geany também roda em janelas e linux.

    
por 05.10.2016 / 23:18
2

Como você solicita um editor , 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 realce de sintaxe necessário. Pode ser ajustado, se necessário, usando a função ps-extend-face .

Por outro lado, eu ainda recomendo que você use uma ferramenta adequada de 'grind' como a2ps, enscript ou listagens do LaTeX +.

    
por 04.10.2016 / 18:50
2

Para fins de conclusão, e embora eu não recomende essa solução, o programa lp tem uma opção -o prettyprint que pode realçar a sintaxe.

Você pode usá-lo assim, por exemplo:

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

Aqui eu usei a opção -t (title) para definir o cabeçalho. Eu não posso mudar o rodapé embora (mas o número da página aparece no topo). Você pode definir o tipo de arquivo com a opção -o document-format (a lista de valores aceitáveis deve estar em /usr/share/cups/mime/mime.types ou talvez /etc/cups/mime/mime.types ), mas se o arquivo tiver a extensão correta, isso não será necessário. Além disso, o destaque da sintaxe está longe de ser perfeito.

    
por 06.10.2016 / 17:38
1

Você só precisa do LibreOffice Writer .

Cole seu código C / C ++.

Encontre as palavras e crie o Bold com todas as palavras-chave do C ++.

Você pode encontrá-los aqui: link

Para encontrar uma palavra Pressione Ctrl + F. Selecione "Match case" e clique em Find All (como mostrado na captura de tela).

Depoisdisso,vocêprecisadeumcabeçalhoerodapécomseunomeenúmerodepágina.

EDIT:( Christophe Strobbe comentou:)

Existe uma extensão do LibreOffice para colorir códigos: Formatador do Code Colorizer . (Eu não testei ainda.)

    
por 03.10.2016 / 18:16
0

Eu costumava usar o Nedit quando estava em um sistema Solaris muitos anos atrás, como eu gostava de uma interface gráfica. Eu vejo que ainda está por aí. Confira.

    
por 06.10.2016 / 00:26
-2

No passado, quando o KDE3 ainda era uma grande coisa, eu usava o Kate porque, para um editor de texto, ele realmente produz o melhor resultado. Hoje eu iria com o latex para uma solução mais embebida, com o pacote lstlisting. Este pacote não é para saída de cores, mas em uma impressora a laser cores não são uma vantagem.

    
por 04.10.2016 / 15:06

Tags