Me gustaría convertir el código fuente de algunos proyectos en un archivo imprimible para guardarlo en un usb e imprimirlo fácilmente más tarde. ¿Cómo puedo hacer eso?
Editar
En primer lugar, quiero aclarar que solo quiero imprimir los archivos y directorios no ocultos (por lo que no hay contenido de, .git
por ejemplo).
Para obtener una lista de todos los archivos no ocultos en directorios no ocultos en el directorio actual , puede ejecutar el find . -type f ! -regex ".*/\..*" ! -name ".*"
comando como se ve como la respuesta en este hilo .
Como se sugirió en ese mismo hilo, intenté hacer un archivo pdf de los archivos usando el comando, find . -type f ! -regex ".*/\..*" ! -name ".*" ! -empty -print0 | xargs -0 a2ps -1 --delegate no -P pdf
pero desafortunadamente el archivo pdf resultante es un completo desastre .
a2ps -P file *.src
usted puede producir archivos postscript a partir de su código fuente. Pero los archivos PS deben convertirse y combinarse después.a2ps -1 --delegate=0 -l 100 --line-numbers=5 -P pdf
: agregué-l
100 caracteres por fila para evitar algunos ajustes de palabras y números de línea, pero eso es solo una preferencia personal.Respuestas:
Tu pregunta me intrigó y me dejé llevar. Esta solución generará un buen archivo PDF con un índice en el que se puede hacer clic y un código resaltado en color. Encontrará todos los archivos en el directorio y subdirectorios actuales y creará una sección en el archivo PDF para cada uno de ellos (consulte las notas a continuación para saber cómo hacer que su comando de búsqueda sea más específico).
Requiere que tenga instalado lo siguiente (las instrucciones de instalación son para sistemas basados en Debian, pero deben estar disponibles en los repositorios de su distribución):
pdflatex
,color
ylistings
Esto también debería instalar un sistema LaTeX básico si no tiene uno instalado.
Una vez que estén instalados, use este script para crear un documento LaTeX con su código fuente. El truco es usar los paquetes
listings
(parte detexlive-latex-recommended
) ecolor
(instalados porlatex-xcolor
) LaTeX. Esto\usepackage[..]{hyperref}
es lo que hace que los listados en la tabla de contenido hagan clic en enlaces.Ejecute el script en el directorio que contiene los archivos de origen.
Eso creará un archivo llamado
all.pdf
en el directorio actual. Intenté esto con un par de archivos fuente aleatorios que encontré en mi sistema (específicamente, dos archivos de la fuente devlc-2.0.0
) y esta es una captura de pantalla de las dos primeras páginas del PDF resultante:Un par de comentarios:
! -name "*~"
para evitar archivos de respaldo.Sin
find
embargo, le recomiendo que use un comando más específico para encontrar sus archivos, de lo contrario, cualquier archivo aleatorio se incluirá en el PDF. Si todos sus archivos tienen extensiones específicas (.c
y,.h
por ejemplo), debe reemplazarfind
el script en algo como estolistings
opciones , puede ajustar esto para que sea exactamente como lo desee.fuente
:)
src2pdf: line 36: warning: here-document at line 5 delimited by end-of-file (wanted EOF')
con el script, debes eliminar el espacio en blanco en la línea EOF para que funcione.src2pdf
, inserte! -name "src2pdf"
en lafind
línea en el script como estefind . -type f ! -regex ".*/\..*" ! -name "src2pdf" ! -name ".*" ! -name "*~" |
para omitirlo en el pdf.find
resultados (había guardado el script en otro directorio que estaba en mi $ PATH, así que no tenía eso problema). Además, puede cambiar el idioma utilizado para que los archivos de origen tengan un mejor marcado cambiandolanguage=C++
a lo que desee, puede manejar muchos idiomas diferentes, consulte aquí .\usepackage[utf8]{inputenc}
\ usepackage [alemán] {babel} `pero falla en mis pruebas. Sin embargo, sospecho que no lo estoy alimentando con utf8 verdadero. Puede que valga la pena su propia pregunta, pero le sugiero que pregunte en TeX - LaTeX , deberían saberlo.(de StackOverflow )
Esto dará como resultado un resultado.txt que contiene:
Si su código fuente tiene una extensión diferente, simplemente cambie según sea necesario. También puede editar el bit de eco para agregar la información necesaria (tal vez echo "nombre de archivo $ 1" o cambiar el separador o agregar un separador de fin de archivo).
el enlace tiene otros métodos, así que usa el método que más te guste. Creo que este es el más flexible, aunque viene con una ligera curva de aprendizaje.
El código se ejecutará perfectamente desde un terminal bash (recién probado en un Ubuntu VirtualBox)
Si no te importa el nombre de archivo y solo te importa el contenido de los archivos combinados:
Funcionará perfectamente bien.
Otro método sugerido fue:
Que prefijará cada línea con el nombre del archivo, lo que puede ser bueno para algunas personas, personalmente encuentro demasiada información, de ahí que mi primera sugerencia sea el bucle for anterior.
Crédito para aquellos en el foro de StackOverflow personas.
EDITAR: Acabo de darme cuenta de que buscas específicamente HTML o PDF como resultado final, algunas soluciones que he visto es imprimir el archivo de texto en PostScript y luego convertir PostScript a PDF. Algún código que he visto:
luego
(Requiere que tengas ghostscript)
Espero que esto ayude.
fuente
Sé que estoy muuuy tarde, pero alguien que busque una solución puede encontrar esto útil.
Basado en la respuesta de @ terdon, he creado un script BASH que hace el trabajo: https://github.com/eljuanchosf/source-code-to-pdf
fuente