Samoed / NRU-HSE-Perm-LatexTemplate

A LaTeX template for HSE University

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

CI

NRU-HSE-Perm-LatexTemplate

Данный репозиторий содерижит шаблон LaTeX для написания курсовых и выпускных квалификационных работ, выполняющизся в Научно-исследовательском университете <<Высшая школа экономики>> (Пермь).

Первая версия шаблона создавалась в соответствии с оффициальными требованиями бакалаврской программы <<Программная инженерия>> (2022/2023 учебный год).

Пример оформления работы в diss-short.pdf.

Описание файлов

  1. requirements.tex - файл с оформлением требований в tex. Стиль берется из HSEUniversity.cls.
  2. main.tex - пример для ВКР/КР. Стиль берется из HSEUniversity.cls. Принимает параметры:
  3. Типы работы: - KR - курсовая работа - VKR - ВКР - Study - учебная практика - Prod - производственная практика - Pregrad - преддипломная практика
  4. Образовательные программы: - PI - программная инженерия - BI - бизнес информатика Также для рецензента или руководителя компании надо воспользоваться \reviewer или \company соответственно.
  5. TZ.tex - файл с оформлением технического задания. Есть пример добавления в main.tex
  6. lab_template - папка с шаблоном для оформления лабораторной работы.
  7. project_proposal - папка с шаблоном для оформления Project Proposal на 4 курсе.

Компиляция

Overleaf

Скопировать шаблон или проект и изменять его.

При больших текстах Overleaf не будет успевать компилировать из-за ограничения времени. Для проверки можно отдельно комментировать по блокам, а затем компилировать у себя локально.

Локально

TexLive

Можно скачать TexLive, Emacs (или другие) и там работать с текстами. Для пользователей Linux надо установить:

  • Ubuntu
    apt install texlive-full
  • Arch (Manjaro)
    pacman -S texlive-full

Консоль

Для сборки pdf файла можно воспользоваться latexmk. Пример команды:

latexmk -pdf -f -interaction=nonstopmode $FILENAME.tex

Докер

Данный способ работает, если нет обращения к родительской папке.

Файл для сборки образа. Процесс сборки pdf с помощью Docker несколькими командами:

  1. Сборка контейнера. Здесь в качестве аргументов сборки передается название файла FILENAME (без расширения, например если файл main.tex, то передавать просто main) и папка DIR, где файл находится. Если tex файл находится в одной папке с Dockerfile. то --build-arg="DIR=DIR" можно не передавать.
    docker build . -t tag_name  --build-arg="DIR=DIR" --build-arg="FILENAME=FILENAME"
  2. Запуск контейнера. Для получения файла надо запустить контейнер и скопировать оттуда файл. При запуске контейнера он будет работать 100 секунд. С параметром --rm после завершения работы контейнер удалится, чтобы не занимать память, -d работа контейнера не будет блокировать работу терминала, так как там просто выполнятся команда sleep, то ничего полезного в логах не будет. --name имя контейнера для дальнейшей работы с ним.
    docker run --rm -d --name run_name tag_name
  3. Копировать файл из контейнера /doc/FILENAME.tex путь готового pdf файла в контейнере, DIR/FILENAME.pdf путь к файлу на компьютере.
    docker cp run_name:/doc/FILENAME.tex DIR/FILENAME.pdf

Объединение всех команд в одну (не для Windows):

DIR=DIR; FILENAME=FILENAME && \
runID=$(docker run --rm -d $(docker build . -q --build-arg="DIR=${DIR}" --build-arg="FILENAME=${FILENAME}")) && \
docker cp $runID:/doc/${FILENAME}.tex ${DIR}/${FILENAME}.pdf

Для работы этой команды поменять DIR и FILENAME на папку и название файла соответственно.

Github actions

Можно сделать, чтобы на каждое изменение файла он сохранялся, как артефакт workflow или сделать автоматическое добавление в репозиторий. Пример файла со всеми способами.

Action artifact

Для скачивания файла надо перейти в список запущенных actions список workflow Перейти в последний, где была успешная сборка файла. И внизу будет готовый pdf. место артефакта

Комит файла

Добавить в workflow строчки:

- name: GIT commit and push pdf file
  env: 
    CI_COMMIT_MESSAGE: Continuous Integration Build Artifacts
    CI_COMMIT_AUTHOR: Continuous Integration
  if: github.event_name == 'push'
  run: |
    git config --global user.name "${{ env.CI_COMMIT_AUTHOR }}"
    git config --global user.email "username@users.noreply.github.com" # почта с которой будет автор комита
    git config --global --add safe.directory /__w/NRU-HSE-Perm-LatexTemplate/NRU-HSE-Perm-LatexTemplate # Поменять
    git add diss-short.pdf # готовый собранный файл
    git commit -m "${{ env.CI_COMMIT_MESSAGE }}"
    git push

Советы

Библиография

При указании источника в *.bib указывать hyphenation={russian} (или language={russian}) или hyphenation={english} в зависимости от языка работы. Лучше всего делать с помощью Zotero и расширения для него better-bibtex. Zotero позволит удобно сохранять библиографию и работать с ней. А расширение better-bibtex позволит автоматически экспортировать на каком языке публикация. Для установки надо перейти в настройки bettet-bibtex Export>Fields и установить Export language both, также в этом разделе можно убрать из экспорта аннотацию fiels to omit abstract. Также можно автоматически обновлять библиографический список export collection > Выбрать формат "Better Biblatex" и выбрать нужные настройки. Также для однообразного оформления библиографического списка можно в настройках better bibtex поменять их в разделе General>citation key formula. У меня установлено как:

auth.lower.transliterate + '_' + shorttitle(1,0).transliterate.lower + '_' + year

Цитирования в стиле гост 2011

Для изменения стиля цитирования под 2008 гост убрать эти строки.

  \ltx@iffilelater{biblatex-gost.def}{2017/05/03}%
  {\toggletrue{bbx:gostbibliography}%
  \renewcommand*{\revsdnamepunct}{\addcomma}}{}

Количество страниц и иллюстраций.

Для автоматического подсчета количества таблиц и иллюстраций указать:

Количество страниц -- \pageref*{pg:end}, количество иллюстраций -- \TotalValue{totalfigures}, количетсво таблиц -- \TotalValue{totaltables}.

Известные проблемы

Длинный заголовок

Если будет длинный заголовок, как:

то можно делать chapter*:

\chapter*{ПРИЛОЖЕНИЕ А Техническое задание на разрабатываемую систему}
\stepcounter{chapter} % чтобы увеличить значение счетчика

Это происходит из-за того, что $\LaTeX{}$ центрирует текст заголовка отдельно от счетчика, я не нашел другой фикс, чтобы было адекватно. Пытался \centering делать в prefix заголовка, но тогда при переносе слов они будут сразу под началом заголовка, отключение переноса делает также.

Ссылки на longtblr

Пакет xassoccnt конфликтует с calc, из-за этого ссылки на longtblr могут сломаться, если делать \begin{longtblr}[caption={name},label={tbl:qwer}]. Лучше делать \begin{longtblr}[caption={name\label{tbl:test}}].

About

A LaTeX template for HSE University

License:MIT License


Languages

Language:TeX 99.8%Language:Dockerfile 0.2%