Щоб моментально робити нудні документи.
parts/
--- Шаблони доків- звіт із шапкою
- звіт із титульною сторінкою
- презентація
- першосеместровий звіт (malyota.tex)
settings/
--- Налаштуванняbaseinfo.tex
--- Персональні настройки, обов'язкові до редагування- преамбула, настройки шрифтів та шаблони для pandoc
styles/
--- стилі бібліографій до використання зpandoc
bin/
--- скриптиgen-report
--- Скрипт-генерувальник доків- визначає тип роботи за назвою каталога, в якому користувач його запускає.
- Копіює шаблон відповідного документа та підставляє в нього значення теж базуючись на шляху,і відкриває документ редактором текстів (визначеним змінною $EDITOR)
- Вставляє код і рисунки у документ.
compiler
--- скрипт для компіляції документівdirgen
--- створює каталоги для робіт на кшталтдицсципліна/lab/lab_1
Спершу треба визначити середовищну змінну UNI
, адже вона використовується і в шаблонах, і в скриптах:
export UNI="шлях/до/репо/з/макулатурою"
У мене --- "$HOME/Documents/uni"
.
Додайте це до профілю своєї оболонки (~/.profile, ~/.zprofile, ...).
Далі клонуємо цей репо в $UNI/.templates:
git clone https://github.com/miliukhin/lpnu_doc_templates $UNI/.templates
Скрипти переносите куди вам зручно, або можете клонувати мої конфіги з репозиторія https://github.com/miliukhin/dots. Тоді вони будуть у ~/.local/bin/.
Вставте свої дані (прізвище, ім'я, групу, дисципліни й викладачів, які приймають роботи з них) в файл
settings/baseinfo.tex
.
Генерування звітів базується на шляхах,
тому шляхи до робіт мають бути або $UNI/дисципліна/тип_номер
або $UNI/дисципліна/тип/тип_номер
.
Для початку створімо в $UNI
каталог для робіт із якоїсь дисципліни. Наприклад, захист інформації:
infosec
, і в ній каталог lab_1
.
Шлях буде такий:
/home/sasha/Documents/uni/infosec/lab_1
^-------$UNI------------^ | | ^- номер роботи
| - тип роботи
- дисципліна
Можна згенерувати скільки завгодно номерів робіт за допомогою скрипта
dirgen
. Я так і роблю, бо так і швидко, і завжди дотримана структура шляху.
Коли ми запускаємо gen-report
у каталозі infosec/lab_1
, скрипт
підставляє в документ infosec
як дисципліну,
Lab
як тип роботи і 1
як її номер:
- \newcommand\Type{\Lab}
- \Work{infosec}
- \newcommand\Number{1}
Команда \Work
визначена в baseinfo.tex
, і для компіляції нам треба прописати в ній значення, які вона підставить у документ, отримавши аргумент infosec
:
- повну назву дисципліни,
- тип роботи
- викладача, який її приймає.
Тому в baseinfo.tex
пишемо:
{infosec}{
\newcommand\Discipline{Інформаційна секта}
\IfStrEqCase{\Type}{
{\Lab}{
\newcommand\Instructor{Інфосектант Володимирович}
}
{\Pract}{
\newcommand\Instructor{<++>}
}
}
}
Тепер можемо компілювати!
Для базової компіляції достатньо pdflatex
,
якщо хочете спеціальні шрифти --- збираєте за допомогою xelatex
.
В такому випадку для автоматичного під'єднання файлу font_styles.tex
треба розкоментувати перевірку компілятора у преамбулі.
Для роботи пакунку minted
потрібно встановити python-pygments
надати компілятору аргумент -shell-escape
.
У більшості випадків цієї команди достатньо:
pdflatex -shell-escape НАЗВА_ФАЙЛУ.tex
Скористайтеся скриптом compiler
із цього репо
для збірки звітів, писаних мовою Markdown.
Шлях до бібліоґрафії та стилю її оформлення (необов'язково) можна вказати в метаданих документа:
bibliography: '/шлях/до/бібліографії.bib'
csl: /шлях/до/csl.csl
Або задавати параметрами:
pandoc --bibliography=refs.bib --csl=mystyle.csl -o out.pdf doc.md
До речі, за допомогою pandoc можна використовувати файли csl і з документами, зверстаними LaTeX.
- https://www.ctan.org/pkg/eskdx стилі для конструкторської документації
- основа титулки взята звідси