Данный репозиторий содерижит шаблон LaTeX для написания курсовых и выпускных квалификационных работ, выполняющизся в Научно-исследовательском университете <<Высшая школа экономики>> (Пермь).
Первая версия шаблона создавалась в соответствии с оффициальными требованиями бакалаврской программы <<Программная инженерия>> (2022/2023 учебный год).
Пример оформления работы в diss-short.pdf.
- requirements.tex - файл с оформлением требований в tex. Стиль берется из HSEUniversity.cls.
- main.tex - пример для ВКР/КР. Стиль берется из HSEUniversity.cls. Принимает параметры:
- Типы работы:
-
KR
- курсовая работа -VKR
- ВКР -Study
- учебная практика -Prod
- производственная практика -Pregrad
- преддипломная практика - Образовательные программы:
-
PI
- программная инженерия -BI
- бизнес информатика Также для рецензента или руководителя компании надо воспользоваться\reviewer
или\company
соответственно. - TZ.tex - файл с оформлением технического задания. Есть пример добавления в main.tex
- lab_template - папка с шаблоном для оформления лабораторной работы.
- project_proposal - папка с шаблоном для оформления Project Proposal на 4 курсе.
Скопировать шаблон или проект и изменять его.
При больших текстах Overleaf не будет успевать компилировать из-за ограничения времени. Для проверки можно отдельно комментировать по блокам, а затем компилировать у себя локально.
Можно скачать 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 несколькими командами:
- Сборка контейнера.
Здесь в качестве аргументов сборки передается название файла FILENAME (без расширения, например если файл main.tex, то передавать просто main) и папка DIR, где файл находится. Если tex файл находится в одной папке с Dockerfile. то
--build-arg="DIR=DIR"
можно не передавать.docker build . -t tag_name --build-arg="DIR=DIR" --build-arg="FILENAME=FILENAME"
- Запуск контейнера.
Для получения файла надо запустить контейнер и скопировать оттуда файл. При запуске контейнера он будет работать 100 секунд. С параметром
--rm
после завершения работы контейнер удалится, чтобы не занимать память,-d
работа контейнера не будет блокировать работу терминала, так как там просто выполнятся командаsleep
, то ничего полезного в логах не будет.--name
имя контейнера для дальнейшей работы с ним.docker run --rm -d --name run_name tag_name
- Копировать файл из контейнера
/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 на папку и название файла соответственно.
Можно сделать, чтобы на каждое изменение файла он сохранялся, как артефакт workflow или сделать автоматическое добавление в репозиторий. Пример файла со всеми способами.
Для скачивания файла надо перейти в список запущенных actions Перейти в последний, где была успешная сборка файла. И внизу будет готовый 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 "[email protected]" # почта с которой будет автор комита
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
Для изменения стиля цитирования под 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} % чтобы увеличить значение счетчика
Это происходит из-за того, что
Пакет xassoccnt
конфликтует с calc
, из-за этого ссылки на longtblr
могут сломаться, если делать \begin{longtblr}[caption={name},label={tbl:qwer}]
. Лучше делать \begin{longtblr}[caption={name\label{tbl:test}}]
.