Патентное бюро требует оформить исходный код программы в единый файл.
Для объединения исходников файлов в единый файл с оформлением оглавления и заголовков я использовал скрипт в Ubuntu Linux.
Для работы скрипта понадобилось некоторое ПО, для установки которого выполнил команду:
sudo apt update && sudo apt install pandoc texlive-latex-recommended texlive-fonts-recommended texlive-latex-extra -y
В константах скрипта указал абсолютный путь к каталогу с исходниками и имя выходного файла.
Привожу исходник скрипта:
#!/bin/bash
root_path="/абсолютный/путь/к/каталогу/с/исходниками"
md_temp="temp_sources.md"
output_pdf="out_sources.pdf"
output_docx="out_sources.docx"
# 1. Создаем временный файл разметки Markdown
> "$md_temp"
# Добавляем метаданные для Pandoc (заголовок документа)
echo "---" >> "$md_temp"
echo "title: \"Исходные коды проекта\"" >> "$md_temp"
echo "author: \"Автоматическая сборка\"" >> "$md_temp"
echo "toc: true" >> "$md_temp" # Включает авто-оглавление со ссылками!
echo "toc-title: \"ОГЛАВЛЕНИЕ\"" >> "$md_temp" # Заголовок оглавления
echo "lang: ru-RU" >> "$md_temp" # Поддержка русского языка
echo "---" >> "$md_temp"
echo >> "$md_temp"
# 2. Собираем файлы и их содержимое в формат Markdown
find "$root_path" -type f | sort | while read -r file; do
relative_path="${file#$root_path/}"
[ -z "$relative_path" ] && continue
# Пишем заголовок файла (Pandoc сделает из него пункт оглавления и ссылку)
echo "# Файл: $relative_path" >> "$md_temp"
echo >> "$md_temp"
# Оформляем код в специальный блок с подсветкой (синтаксис Markdown)
echo "\`\`\`" >> "$md_temp"
cat "$file" >> "$md_temp"
echo >> "$md_temp" # Гарантируем новую строку
echo "\`\`\`" >> "$md_temp"
echo >> "$md_temp"
# Добавляем разрыв страницы перед следующим файлом (для PDF)
echo -e "\pagebreak\n" >> "$md_temp"
done
# 3. Конвертируем с помощью Pandoc
echo "Генерация документов..."
# Сборка в PDF (с использованием движка xelatex для идеальных русских шрифтов)
pandoc "$md_temp" --pdf-engine=xelatex -o "$output_pdf"
# Сборка в Word (DOCX)
pandoc "$md_temp" -o "$output_docx"
# Удаляем временный файл
rm "$md_temp"
echo "Готово! Созданы файлы: $output_pdf и $output_docx"
Если честно, PDF у меня не появился. Я его получил экспортом в word, указав в качестве параметра формат PDF/A.
Осталось добавить титульную страницу, нумерацию страниц, установить размер полей — левое 25, остальные 20, межстрочный интервал 1.5.
В завершение обновил содержимое оглавления.