Я хотел бы преобразовать исходный код нескольких проектов в один файл для печати, чтобы сэкономить на USB и распечатать позже. Как я могу это сделать?
редактировать
Прежде всего, я хочу уточнить, что я хочу печатать только не скрытые файлы и каталоги ( .git
например, без содержимого, например).
Чтобы получить список всех не скрытых файлов в не скрытых каталогах в текущем каталоге, вы можете выполнить find . -type f ! -regex ".*/\..*" ! -name ".*"
команду в виде ответа в этой теме .
Как было предложено в той же теме, я попытался создать файл pdf из файлов с помощью команды, find . -type f ! -regex ".*/\..*" ! -name ".*" ! -empty -print0 | xargs -0 a2ps -1 --delegate no -P pdf
но, к сожалению, полученный файл pdf стал полным беспорядком .
a2ps -P file *.src
вы можете создавать файлы postscript из вашего исходного кода. Но файлы PS должны быть преобразованы и объединены впоследствии.a2ps -1 --delegate=0 -l 100 --line-numbers=5 -P pdf
- я добавил-l
100 символов в строке, чтобы избежать переноса слов и номеров строк, но это только личные предпочтения.Ответы:
Я был заинтригован вашим вопросом и увлекся. Это решение создаст хороший PDF-файл с кликабельным индексом и выделенным цветом кодом. Он найдет все файлы в текущем каталоге и подкаталогах и создаст раздел в файле PDF для каждого из них (см. Примечания ниже, чтобы узнать, как сделать команду поиска более конкретной).
Для этого необходимо, чтобы у вас было установлено следующее (инструкции по установке предназначены для систем на основе Debian, но они должны быть доступны в репозиториях вашего дистрибутива):
pdflatex
,color
иlistings
Это также должно установить базовую систему LaTeX, если у вас ее нет.
Как только они будут установлены, используйте этот скрипт для создания документа LaTeX с вашим исходным кодом. Хитрость заключается в использовании пакетов
listings
(частичноtexlive-latex-recommended
) иcolor
(установленныхlatex-xcolor
) LaTeX. Это\usepackage[..]{hyperref}
то, что делает ссылки в оглавлении кликабельными ссылками.Запустите скрипт в каталоге, который содержит исходные файлы
Это создаст файл с именем
all.pdf
в текущем каталоге. Я попробовал это с парой случайных исходных файлов, которые я нашел в моей системе (в частности, два файла из источникаvlc-2.0.0
), и это скриншот первых двух страниц полученного PDF:Пара комментариев:
! -name "*~"
чтобы избежать резервного копирования файлов.Я рекомендую вам использовать более конкретную
find
команду для поиска ваших файлов, в противном случае любой случайный файл будет включен в PDF. Если все ваши файлы имеют определенные расширения (.c
и,.h
например), вы должны заменитьfind
в скрипте что-то вроде этогоlistings
опциями , вы можете настроить их так, как вы хотите.источник
:)
src2pdf: line 36: warning: here-document at line 5 delimited by end-of-file (wanted EOF')
при запуске скрипта, вы должны удалить пробел в строке EOF, чтобы он заработал.src2pdf
вставьте! -name "src2pdf"
вfind
строку в сценарии, как это,find . -type f ! -regex ".*/\..*" ! -name "src2pdf" ! -name ".*" ! -name "*~" |
чтобы пропустить его в PDF.find
результатов (я сохранил скрипт в другом каталоге, который был в моем $ PATH, поэтому у меня его не было проблема). Кроме того, вы можете изменить язык, используемый для исходных файлов, чтобы иметь лучшую разметку, изменивlanguage=C++
на то, что вы хотите, он может работать со многими различными языками, см. Здесь .\usepackage[utf8]{inputenc}
\ usepackage [german] {babel} `, но в моих тестах он не работает. Тем не менее, я подозреваю, что я не кормлю это правда utf8 Это может стоить своего собственного вопроса, но я предлагаю вам спросить о TeX - LaTeX , они должны знать.(из StackOverflow )
Это приведет к result.txt, содержащему:
Если ваш исходный код имеет другое расширение, просто измените при необходимости. Вы также можете отредактировать бит эха, чтобы добавить необходимую информацию (может быть, эхо «имя файла $ 1» или изменить разделитель, или добавить разделитель конца файла).
У ссылки есть другие методы, поэтому используйте любой метод, который вам больше нравится. Я нахожу этот вариант наиболее гибким, хотя с небольшой кривой обучения.
Код будет отлично работать на терминале bash (только что протестирован на Ubuntu VirtualBox)
Если вас не интересует имя файла, а просто содержимое файлов, слитых вместе:
будет работать отлично
Другой предложенный метод был:
Который будет префикс каждой строки с именем файла, что может быть полезно для некоторых людей, лично я нахожу это слишком много информации, поэтому мое первое предложение - цикл for выше.
Благодарим тех, кто на форуме StackOverflow.
РЕДАКТИРОВАТЬ: Я только что понял, что в качестве конечного результата вы используете именно HTML или PDF, некоторые решения, которые я видел, это распечатать текстовый файл в PostScript, а затем преобразовать PostScript в PDF. Некоторый код, который я видел:
тогда
(Требуется, чтобы у вас был ghostscript)
Надеюсь это поможет.
источник
Я знаю, что я слишком поздно, но кто-то ищет решение может найти это полезным.
Основываясь на ответе @ terdon, я создал скрипт BASH, который выполняет эту работу: https://github.com/eljuanchosf/source-code-to-pdf
источник