Comment imprimer du code bien formaté

20

Semblable à l'utilisation de démarque sur Stack Overflow pour créer monospace output, comment puis-je faire cela pour mes programmes.

J'ai essayé lp filename.txt et j'ai été agréablement satisfait de constater qu'il était capable d'utiliser l'imprimante réseau locale et d'imprimer «tel quel»

Le problème est que la sortie n'est pas mono-espacée.

Y a-t-il une option plus rapide que ...

1) copy the text
2) paste into a text doc
3) format the document as mono
4) print it 

J'adorerais trouver une option comme lp filename.txt -format=mono;)

Michael Durrant
la source
1
doublon possible de syntax_highlight <fichier_source> | lpr
Gilles 'SO- arrête d'être méchant'

Réponses:

21

Vous pouvez utiliser l'éditeur vim pour imprimer de jolis fichiers arbitraires que vim peut lire. Utilisez ce qui suit pour créer un fichier PostScript.

vim \
  -c 'hardcopy > output.ps' \
  -c quit <input_file>

Si vous voulez un fichier PDF, ajoutez-le && ps2pdf output.psà la ligne de commande.

Vous pouvez également écrire un petit script qui colle le contenu du presse-papiers actuel dans un fichier temporaire, exécute vim sur le fichier, imprime le fichier résultant et supprime le fichier temporaire.

Marco
la source
1
Une bonne option pour votre vimrc lorsque vous imprimez du code est set printoptions=portrait:nd'imprimer en mode paysage.
oligofren le
1
Je ne suis probablement pas le seul ici à vouloir désactiver les en-têtes de page une fois l'impression terminée. Vous pouvez les désactiver en les ajoutant set printoptions=header:0à vimrc.
Andy Gaskell
Pour HTMl, vous pouvez le fairevim -c TOhtml -c write -c quit <input_file>
Matthew Cline
1
Oups, cela devrait êtrevim -c 'set cmdheight=2' -c TOhtml -c write -c quit -c quit <input_file>
Matthew Cline
@AndyGaskell J'ai posé une question, veuillez voir si vous pouvez la résoudre: unix.stackexchange.com/questions/315363/…
une offre ne peut pas refuser
12

Le chemin le plus court ici est probablement à utiliser a2ps, il génère par défaut un postscript à espacement fixe.

Vous pouvez installer a2psavec brew, c.-à-d.brew install a2ps

En fonction de sa configuration, il enverra la sortie directement vers stdout ou lp, avec priorité -o. En outre, a2psreconnaît plusieurs langages de programmation et les très-prints.

a2ps -o output.ps infile.text

Utilisez --pro=colorsi la couleur est disponible:

a2ps --pro=color -o output.ps infile.text

Pour la sortie HTML, j'ai tendance à utiliser vimla 2htmlfonctionnalité de.

Thor
la source
cela avait l'air super ... mais je n'ai pas a2ps. Quelqu'un sait comment installer?
Michael Durrant
Cela dépend du système d'exploitation sur lequel vous souhaitez l'installer?
Thor
c'est un mac - osx
Michael Durrant
Googler un peu, il semble que a2ps a quelques problèmes d'installation sur osx. Je n'ai pas beaucoup d'expérience avec osx mais enscripta été mentionné comme alternative.
Thor
Vous pouvez installer en a2psutilisant MacPorts ( macports.org ). Je n'ai eu aucun problème à l'installer (sur Lion)
Matteo
3

a2psétait la réponse. Je l'ai installé avec brew:

brew install a2ps

Maintenant je peux a2ps myfilenameet ça marche.

Malheureusement, il sort du paysage et si j'essaie de le faire en portrait, il est écrasé à gauche et minuscule, ne prenant que 50% de la page. [upate - correction trouvée avec le paramètre -1 (pour le nombre de pages à trouver sur une feuille - la valeur par défaut était 2)

Cependant, comme l'aménagement paysager, cela a fonctionné et le code a le fixed formatstyle que je cherchais.

Michael Durrant
la source