Editeur de texte pour l'impression de code C ++

34

Je cherche un éditeur pour imprimer (sur papier) du code C ++. Je suis actuellement en école d'ingénieur et l'instructeur nous a demandé de soumettre le code sur papier.

Il veut le nom + le nom de famille, le numéro de classe (sur l'en-tête), le numéro de page en bas et les mots réservés en gras pour chaque page!

Sous Windows, cela peut être fait avec notepadd++. Mais je suis sous Linux et je n’ai pas trouvé d’EDI ou d’éditeur de texte qui fonctionne. (Je l' ai déjà essayé SCITE, geditet Syntaxic)

loi219
la source
4
a2ps est ton ami. Prenez votre temps pour le configurer.
Satō Katsura
5
Pour des demandes comme celle-ci, vous pouvez envisager softwarerecs.stackexchange.com
Eric Renouf
30
sonne comme si votre professeur avait investi dans l’industrie forestière.
Anthon
10
Votre professeur veut du code ... sur papier ?!
Courses de légèreté avec Monica
8
@ loi219 Un enseignant "old school" ou un vieil "enseignant", ou les deux? ;-)
user800

Réponses:

76

Eh bien, si vous voulez faire un effort supplémentaire, faites-le dans LaTeX et fournissez un fichier PDF de niveau professionnel. Vous n'avez pas mentionné votre distribution, je vais donc donner des instructions pour les systèmes basés sur Debian. La même idée de base peut être faite sur n’importe quel Linux.

  1. Installer un système LaTeX et les packages nécessaires

    sudo apt-get install texlive-latex-extra latex-xcolor texlive-latex-recommended
    
  2. Créez un nouveau fichier (appelez-le report.tex) avec le contenu suivant:

    \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}
    

    Assurez-vous simplement de modifier /path/to/your/code.cl'avant-dernière ligne afin qu'elle pointe vers le chemin d'accès réel de votre fichier C. Si vous avez plusieurs fichiers à inclure, ajoutez un \newpage, puis un nouveau \lstinputlistingpour l'autre fichier.

  3. Compiler un PDF (cela crée report.pdf)

    pdflatex report.tex    
    

J'ai testé cela sur mon système avec un exemple de fichier trouvé ici et il crée un PDF qui ressemble à ceci:

première page du pdf créé

Pour un exemple plus complet qui trouvera automatiquement tous les fichiers .c dans le dossier cible et créera un fichier PDF indexé avec chacun dans une section distincte, voir ma réponse ici .

terdon
la source
17
Dès que vous commencez avec LaTeX, vous ne pouvez plus vous en passer! J'aimerais connaître TeX au lycée ... (ou ils l'enseigneraient comme une alternative au mot).
Kyslik
2
Je pense que LaTex serait installé par défaut sur la plupart des systèmes, en particulier dans une école d'ingénieur. Tapez "quel latex" à l'invite de commande: s'il renvoie un chemin, généralement / usr / bin / latex, vous pouvez ignorer l'étape n ° 1. De plus, si votre éditeur de choix utilise un langage macro décent, vous pouvez exécuter ce script depuis l'éditeur, en utilisant, par exemple, "gv --watch" pour afficher les résultats en direct.
Jamesqf
4
@jamesqf Je n'ai jamais vu un système avec LaTeX installé par défaut. Oui, le personnel informatique de certaines écoles l’a peut-être installé, et il peut y avoir des distributions spécialisées de Linux qui l’ont par défaut, mais la grande majorité des systèmes ne le fera pas.
terdon
3
@terdon - Je n'ai jamais vu d'installation dans un département d'ingénierie sans LaTeX. C'est assez essentiel pour quiconque a besoin de produire une sortie imprimable.
Toby Speight
1
@terdon: 'Default' ou sélectionné à l'installation. Je ne me souviens pas d'avoir fait quelque chose de spécial pour installer LaTeX sur mes systèmes (OpenSuSE), mais cela fait longtemps que je n'ai pas effectué la dernière installation. De toute façon, la vérification est simple.
Jamesqf
29

J'utilise habituellement enscript: quelque chose comme

$ enscript --highlight=cpp
           --header='|Real Name|Class 101'
           --footer='|Page $% of $=|'
           -poutput.ps *.cpp

sera un début - cela écrit la sortie postscript à output.ps , ainsi vous pouvez prévisualiser et écraser cela pendant que vous bricolez avec la configuration, puis l’imprimer une fois que vous êtes satisfait. Voir la page de manuel pour des options plus complètes.

Editer obtenir que le pied de page fonctionne correctement est un peu pénible avec enscript - je ne l’avais jamais remarqué car je ne l’avais jamais demandé. Si vous enregistrez ce fichier dans ~/.enscript/so.hdr(vous aurez probablement besoin de créer le répertoire), vous obtiendrez la sortie requise avec

$ enscript --highlight=cpp
           --header='|Real Name|Class 101'
           --footer='|Page $% of $=|'
           --fancy-header=so
           -poutput.ps *.cpp

donnant

entrez la description de l'image ici


Grossièrement,

  • LaTeχ est la meilleure qualité et le plus de travail à mettre en place,
  • enscript ou a2ps sont intermédiaires en qualité et en travail,
  • La :hardcopycommande de Vim est facile mais pas si flexible, et
  • La mise en évidence manuelle de la syntaxe dans un éditeur ne prenant pas en compte le code demande beaucoup d'efforts pour obtenir un rendement médiocre.
Inutile
la source
C'est absolument ce que je cherche. Merci beaucoup!
loi219
Je seconde emscript. Il a beaucoup d'options et donne de très bons résultats.
rubik
9

Vous pouvez utiliser le :TOhtml commande dans vim. Cela rend ce que vous voyez (la syntaxe en surbrillance) en HTML. À partir de là, un navigateur Web capable d'imprimer au format PDF fonctionne, car vous pouvez généralement personnaliser le contenu de l'en-tête / du pied de page.

Ceci est probablement similaire à la :hardcopy commande mentionnée par Useless, mais je ne peux pas vérifier sur mon système pour le moment.

Une autre possibilité consiste à imprimer à partir de QtCreator, mais il ne semble pas y avoir de moyen de définir les en-têtes / pieds de page.

Ombre
la source
4

Geany est un IDE simple qui vous offre de nombreuses options pour ce qui se trouve dans l'en-tête.

Les mots réservés peuvent être manipulés dans le menu des options mais la mise en surbrillance du code le fait pour le style Notepad ++. (vous devrez peut-être copier / télécharger les jeux de couleurs dans votre dossier "/home/$USER_NAME/.config/geany/colorschemes/" pour obtenir celui de votre choix)

Très simple et personnellement, j'aime beaucoup les numéros de ligne et le format imprimé.

Geany fonctionne aussi bien sous Windows que sous Linux.

Page 1

Page 2

Page 3

Joe
la source
2

Depuis que vous demandez un éditeur , vous pouvez imprimer directement depuis Emacs, en utilisant ps-print-buffer.

Les en-têtes et les pieds de page sont dans le groupe Personnaliser appelé ps-print-headers .

En supposant que vous utilisez font-lock, vous avez probablement la coloration syntaxique requise. Il peut être ajusté, si nécessaire, à l'aide de la ps-extend-facefonction.


Cela dit, je vous recommanderais quand même d'utiliser un outil approprié, tel que a2ps, enscript ou LaTeX +.

Toby Speight
la source
1

Pour être complet, et même si je ne recommanderais pas cette solution, le lpprogramme a une-o prettyprint option permettant de mettre en évidence la syntaxe.

Vous pouvez l'utiliser comme ceci par exemple:

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

Ici, j'ai utilisé l' -toption (title) pour définir l'en-tête. Je ne peux cependant pas changer le pied de page (mais le numéro de page apparaît en haut). Vous pouvez définir le type de fichier avec l'option -o document-format (la liste des valeurs acceptables devrait figurer dans /usr/share/cups/mime/mime.typesou peut-être /etc/cups/mime/mime.types), mais si votre fichier a l'extension correcte, cela ne devrait pas être nécessaire. En outre, la coloration syntaxique est loin d'être parfaite.

lgeorget
la source
1

Vous avez juste besoin de LibreOffice Writer .

Collez votre code C / C ++.

Recherchez les mots et mettez en gras tous les mots clés C ++.

Vous pouvez les trouver ici: http://en.cppreference.com/w/cpp/keyword

Pour rechercher un mot, appuyez sur Ctrl + F. Sélectionnez "Correspondance" et cliquez sur Tout rechercher (comme indiqué dans la capture d'écran).

entrez la description de l'image ici

Après cela, vous avez besoin d’un en-tête et d’un pied de page avec votre nom et votre numéro de page.

EDIT: ( Christophe Strobbe commenté

Il existe une extension LibreOffice pour la coloration du code: Code Colorizer Formatter . (Je ne l'ai pas encore testé.)

GeoMint
la source
41
Eww, mise en évidence manuelle de la syntaxe.
Inutile
Avez-vous une idée?
loi219
7
En outre, eww, code en caractères de largeur variable :(
cat
2
Il existe une extension LibreOffice pour la coloration du code: Code Colorizer Formatter . (Je ne l'ai pas encore testé.)
utilisateur800
1
Cela semble douloureux
Joe
0

J'avais l'habitude d'utiliser Nedit lorsque j'étais sur un système Solaris il y a de nombreuses années, car j'aimais une interface graphique. Je vois qu'il est toujours là. Vérifiez-le.

Kalpana N.
la source
-2

Dans le passé, lorsque KDE3 était encore très répandu, j'utilisais Kate car elle était un éditeur de texte qui produisait le meilleur résultat. Aujourd'hui, j'utiliserais le latex pour une solution plus intégrable, avec le paquet lstlisting. Ce package n’est pas destiné à la sortie couleur, mais sur une imprimante laser, les couleurs ne sont pas un avantage.

Arne
la source
2
Cela ne répond pas vraiment à la question, n'est-ce pas?
contre-mode
En fait, cela répond à la question. La réponse est: "Regardez Kate, ça a été une bonne chose pour moi dans le passé"
Arne