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

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

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.

  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 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.ca 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 \newpagee depois um novo \lstinputlistingpara 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 encontreiaquie cria um PDF parecido com este:

primeira página do pdf criado

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

insira a descrição da imagem aqui


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 :TOhtmlcomando 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 :hardcopycomando 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-facefunção.


Dito isto, eu ainda recomendo que você use uma ferramenta de 'grind' adequada, como a2ps, enscript ou LaTeX+listings.

informação relacionada