Editor de texto para imprimir código C ++


34

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 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 notepadd++. Mas eu estou no Linux e não encontrei um IDE ou editor de texto que funcione. (Eu já tentei SCITE, gedite Syntaxic)


4
A2PS é seu amigo. Leve o seu tempo para configurá-lo.
— Satō Katsura

5
Para solicitações como essa, convém considerar softwarerecs.stackexchange.com
— Eric Renouf

30
Parece que seu professor investiu na indústria madeireira.
— Anthon

10
Seu professor quer código ... no papel ?!
— Lightness Races com Monica

8
@ loi219 Um professor da "velha escola" ou um antigo "professor da escola", ou ambos? ;-)
— user800 4/16

Respostas:


76

Bem, se você quiser ir além, faça-o no 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 no Debian. A mesma idéia básica pode ser feita em qualquer Linux.

  1. Instale um sistema LaTeX e 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.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 um novo \lstinputlistingpara o outro arquivo.

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

    pdflatex report.tex    
    

Eu testei isso no meu sistema com um arquivo de exemplo que encontrei aqui e ele 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 resposta aqui .


17
Assim que você começa com o LaTeX, você não pode deixar de ir! Eu gostaria de conhecer o TeX no ensino médio ... (ou eles o ensinariam como uma alternativa à palavra).
— `` Kyslik

2
Eu acho que o LaTex seria instalado por padrão na maioria dos sistemas, especialmente em uma escola de engenharia. Digite "what latex" em um prompt de comando: se ele retornar um caminho, normalmente / usr / bin / latex, você poderá pular a etapa 1. Além disso, se o seu editor de escolha tiver uma linguagem macro decente, você poderá executar este script a partir do editor, usando, por exemplo, "gv --watch" para exibir a saída ao vivo.
— jamesqf

4
@jamesqf Eu nunca vi um sistema com o LaTeX instalado por padrão. Sim, o pessoal de TI de alguma escola pode ter instalado e pode haver distribuições especializadas do Linux que o possuem por padrão, mas a grande maioria dos sistemas não.
— terdon

3
@terdon - nunca vi uma instalação em um departamento de engenharia sem o LaTeX. É muito essencial para quem precisa produzir uma saída imprimível.
— precisa

11
@terdon: 'Padrão' ou selecionado na instalação. Não me lembro de ter feito algo especial para obter o LaTeX nos meus sistemas (OpenSuSE), mas já faz um tempo desde que fiz a última instalação. De qualquer forma, a verificação é simples.
— jamesqf

29

Eu usaria geralmente 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 output.ps, para que você possa visualizar e substituir isso enquanto estiver mexendo na configuração e imprimi-la quando estiver satisfeito. Veja a página de manual para opções mais abrangentes.

EDIT fazer com que o rodapé funcione corretamente é um pouco complicado com o enscript - eu nunca havia notado porque nunca o exigi. Se você salvar este arquivo em ~/.enscript/so.hdr(provavelmente precisará criar o diretório), 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,

  • O LaTeχ é da melhor qualidade e mais trabalho para configurar,
  • enscript ou a2ps são intermediários em qualidade e trabalho,
  • O :hardcopycomando do vim é fácil, mas não tão flexível, e
  • realçar a sintaxe manualmente em um editor que não reconhece código é muito esforço para obter um retorno ruim.

Isso é absolutamente o que estou procurando. Muito obrigado!
— loi219

Eu segundo emscript. Tem muitas opções e oferece resultados muito bons.
— Rubik

9

Você pode usar o :TOhtmlcomando no vim. Isso renderiza o que você vê (ou seja, realce da sintaxe) como html. A partir daí, um navegador da web que pode imprimir em pdf funciona, pois geralmente você pode personalizar o conteúdo do cabeçalho / rodapé.

Provavelmente isso é semelhante ao :hardcopycomando mencionado por Useless, mas não posso verificar no meu sistema no momento.

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


4

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

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

Muito simples e pessoalmente, eu realmente gosto dos números das linhas e do formato que eles imprimem.

Também geany é executado no Windows e no Linux.

Página 1

Página 2

Page 3


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 o bloqueio de fonte, você provavelmente terá o destaque da sintaxe necessário. Pode ser ajustado, se necessário, usando a ps-extend-facefunção


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


1

Para garantir a integridade, e embora eu não recomende essa solução, o lpprograma possui uma -o prettyprintopção que pode destacar 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 -topção (title) para definir o cabeçalho. Não consigo alterar o rodapé (mas o número da página aparece na parte superior). Você pode definir o tipo de arquivo com a opção -o document-format (a lista de valores aceitáveis ​​deve estar /usr/share/cups/mime/mime.typesou talvez /etc/cups/mime/mime.types), mas se o arquivo tiver a extensão correta, não será necessário. Além disso, o destaque da sintaxe está longe de ser perfeito.


1

Você só precisa do LibreOffice Writer .

Cole seu código C / C ++.

Encontre as palavras e faça o Negrito todas as palavras-chave em C ++.

Você pode encontrá-los aqui: http://en.cppreference.com/w/cpp/keyword

Para encontrar uma palavra Pressione Ctrl + F. Selecione "Combinar maiúsculas e minúsculas" e clique em Localizar tudo (como mostrado na captura de tela).

insira a descrição da imagem aqui

Depois disso, você precisa de um cabeçalho e rodapé com seu nome e número da página.

EDIT: ( Christophe Strobbe comentou :)

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


41
Eww, realce de sintaxe manual.
— inútil

Você tem alguma ideia?
— Loi219 /

7
Além disso, eww, código em fonte de largura variável :(
— cat

2
Existe uma extensão do LibreOffice para colorir códigos: Code Colorizer Formatter . (Ainda não testei.) #
— 4500 user800 4/16

11
Isso parece doloroso
— Joe

0

Eu costumava usar o Nedit quando estava em um sistema Solaris há muitos anos, pois gostava de uma interface GUI. Vejo que ainda está por aí. Confira.


-2

No passado, quando o KDE3 ainda era uma grande coisa, eu usei o Kate porque para um editor de texto ele realmente produz a melhor saída. Hoje eu usaria o látex para uma solução mais incorporável, com o pacote lstlisting. Este pacote não é para impressão em cores, mas em uma impressora a laser as cores não são uma vantagem.


2
Isso realmente não responde à pergunta, responde?
— Countermode #

Na verdade, ele responde à pergunta. A resposta é: "Dê uma olhada em Kate, ele provou ser bom no passado para mim"
— Arne
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.