Code Monkey home page Code Monkey logo

nslreport's Introduction

Система сборки LaTeX документов по российским ГОСТам

Данный фреймворк используется в Лаборатории Навигационных Систем НИУ МЭИ для документов следующих типов:

  • текстовые конструкторские и эксплуатационные документы по ЕСКД ГОСТ 2.105 с рамкой по ГОСТ 2.104 и без;
  • отчеты о НИР по ГОСТ 7.32-2001 и ГОСТ РВ 15.110; (coming soon)
  • кандидатские и докторские диссертации по ГОСТ Р 7.0.11;
  • пояснительные записки выпускных квалификационных работ;
  • техническое задание на НИР или ОКР по ГОСТ 15.016, ГОСТ РВ 15.201.

Для переключения между ЕСКД-документом, отчетом и диссертацией в головном файле требуется сменить стиль и титульную страницу. Доступны примеры документов.

Ориентирован на работников и студентов НавСисЛаб, принятые в лаборатории инструменты и практики:

  • командная разработка документов в парадигме docs-as-code
  • многократное повторное использование материала
  • использование Ubuntu/Kubuntu в качестве ОС
  • подготовка иллюстраций в формате svg, используя Inkscape
  • использование TexMaker для написания документа
  • для сборки документа используем pdflatex из texlive
  • используется кодировка UTF-8
  • минимизация и унификация списка используемых пакетов
  • четкое разделение исходных кодов документа (директория tex) и фреймворка для сборки

Проект является переработанной версией latex-g7-32, за что огромное спасибо его авторам.

Основные изменения относительно latex-g7-32:

  • работа с документами разных типов, в том числе с многострадальной рамкой
  • класс NSLReport полностью совместим со стандартным report, является базовым; легко дебажить проблемы переключением в стандартное окружение
  • базовый класс ступенчато расширяется стилями до нужного типа документов
  • в расширения входят must have пакеты (graphics, enumitem и т.д.), исправлены их конфликты, убрано неиспользуемое
  • при составлении документа не используются макросы фреймворка (пользователю не нужны специальные знания, облегчает повторное использование материала, части документа легко собираются в других системах, легче проходит конвертация в Word)
  • исходные коды документа отдельно, файлы фреймворка отдельно; можно даже хранить и собирать несколько документов
  • директории с изображениями поддерживают поддиректории
  • bibtex и natbib заменены на biber и biblatex, что решает проблемы с русскими символами в библиографии
  • убраны зависимости от dia, dot, cmake, pkg-config, python

Где посмотреть собранный пример?

С примерами в формате pdf можно ознакомиться в директории examples. Собранные версии документов отстают от исходных материалов, обновляются не каждый коммит.

Как собрать пример в виртуальном docker-окружении?

Самый простой вариант попробовать фреймворк - это собрать пример в docker-окружении. Для этого достаточно выполнить команду (потребует права суперпользователя для сборки образа и его запуска):

make docker

Конечно, предварительно установив сам docker (например, sudo apt install docker-ce).

При первом запуске make docker будет собран образ и создана директория tex с исходными файлами примера. Из них будет собран документ tex/rpz.pdf. Дальнейшие запуски команды make docker будут приводить к пересборке документа.

Как собрать пример с установкой зависимостей в основную систему?

  1. Установить texlive, inkscape и другие зависимости:
   sudo apt-get install -y \
            make \
            inkscape \
            imagemagick \            
            latexmk \
            texlive-latex-base \
            texlive-latex-extra \
            texlive-extra-utils \
            texlive-lang-cyrillic \
            texlive-luatex \ 
            texlive-bibtex-extra \
            biber \
            cm-super 

и далее по обстоятельсвам.

  1. Разрешить imagemagick клепать pdf-ки, для чего поправить policies (можно руками):
sed -i 's/^.*policy.*coder.*none.*PDF.*//' /etc/ImageMagick-6/policy.xml
  1. Форкнуть этот репозиторий, если вы планируете использовать отдельный репозиторий github для хранения документа

  2. Склонировать или скачать репозиторий, например,

git clone https://github.com/Korogodin/NSLReport
  1. Собрать пример
make

При первом запуске make будет создана директория tex с исходными файлами примера. Из них будет собран документ tex/rpz.pdf. Дальнейшие запуски команды make будут приводить к пересборке документа.

Вы можете собрать примеры других документов, например make example_nir, make example_eskd, make example_disser. Но сначала удалите директорию tex, чтобы скрипт не стеснялся создать её заново из примера.

Как составлять свой документ?

Самый простой вариант - начните править файлы в директории tex.

В ЛНС принято редактировать текст документа в TexMaker. В этом случае откройте rpz.tex и назначьте его мастер-документом (Options->Define Curre...). Теперь вы можете пересобирать документ простым нажатием F1.

В директорию graphics кладите изображения и схемы. Растровые - в img, векторные - в svg. При сборке они будут преобразованы в pdf и помещены в inc. Не кладите изображения в inc, это временная директория. Она будет удалена по команде make clean!

Когда вы добавили новое изображение и подключили его в документе с помощью includegraphics, то пересоберите документ командой make. Это сконвертирует ваше изображение и перенесет результат в inc. После этого опять можно пересобирать документ по-быстрому в TexMaker.

Вы можете разбивать документ на несколько .tex файлов. Называйте их по шаблону dd-name.tex, где dd - пара арабских цифр. Чем раньше этот файл используется в документе, тем меньше должна быть цифра. Так при упорядочивании файлов по имени они сохранят порядок изложения. А ещё, так система сборки поймет, что для этих файлов нужно подготовить изображения.

Описание источников литературы добавляется в файл rpz.bib в формате BibTeX. Фреймворк использует biblatex и biber, кодировку utf8.

nslreport's People

Contributors

korogodin avatar mklimenko avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.