summaryrefslogtreecommitdiff
path: root/macros/latex/contrib/bmstu
diff options
context:
space:
mode:
authorNorbert Preining <norbert@preining.info>2022-01-25 03:01:54 +0000
committerNorbert Preining <norbert@preining.info>2022-01-25 03:01:54 +0000
commit54e627ff3ae26ebf28688e2cf04b2ed9fb3a393b (patch)
tree5a2f425ce86bd69fad53eebbef6ad56bff1fc9de /macros/latex/contrib/bmstu
parent17f5b660e0ce0c5c1b1dc095df8213e078963809 (diff)
CTAN sync 202201250301
Diffstat (limited to 'macros/latex/contrib/bmstu')
-rw-r--r--macros/latex/contrib/bmstu/README.md21
-rw-r--r--macros/latex/contrib/bmstu/bmstu.cls115
-rw-r--r--macros/latex/contrib/bmstu/examples/examples.pdfbin0 -> 877742 bytes
-rw-r--r--macros/latex/contrib/bmstu/examples/examples.tex155
-rw-r--r--macros/latex/contrib/bmstu/examples/inc/img/tux.pngbin0 -> 78838 bytes
-rw-r--r--macros/latex/contrib/bmstu/examples/inc/img/tuz.pngbin0 -> 354190 bytes
-rw-r--r--macros/latex/contrib/bmstu/examples/inc/lst/main.c9
-rw-r--r--macros/latex/contrib/bmstu/img/bmstu-logo.pdfbin0 -> 129396 bytes
-rw-r--r--macros/latex/contrib/bmstu/sty/bmstu-appendix.sty37
-rw-r--r--macros/latex/contrib/bmstu/sty/bmstu-biblio.sty23
-rw-r--r--macros/latex/contrib/bmstu/sty/bmstu-defabbr.sty51
-rw-r--r--macros/latex/contrib/bmstu/sty/bmstu-essay.sty68
-rw-r--r--macros/latex/contrib/bmstu/sty/bmstu-figure.sty52
-rw-r--r--macros/latex/contrib/bmstu/sty/bmstu-listing.sty63
-rw-r--r--macros/latex/contrib/bmstu/sty/bmstu-title.sty247
-rw-r--r--macros/latex/contrib/bmstu/sty/bmstu-toc.sty23
16 files changed, 864 insertions, 0 deletions
diff --git a/macros/latex/contrib/bmstu/README.md b/macros/latex/contrib/bmstu/README.md
new file mode 100644
index 0000000000..e62cb3cd35
--- /dev/null
+++ b/macros/latex/contrib/bmstu/README.md
@@ -0,0 +1,21 @@
+# bmstu package
+
+Release 2022-01-24 (v1.0.0)
+
+## Overview
+
+The class defines commands and environments for creating reports and explanatory notes in Bauman Moscow State Technical University (Russia).
+
+Generated files correspond to [requirements of Bauman Moscow State Technical University](https://mf.bmstu.ru/info/uu/ot/norm_docs/docs/polozhenie_normcontrol_pril1.pdf) and [GOST 7.32-2017](https://docs.cntd.ru/document/1200157208). Explanatory notes to graduate qualification works are successfully tested by [TestVKR](https://vkr.bmstu.ru/) (build 203).
+
+Please go to the official repository at https://github.com/Orianti/bmstu-latex-class to submit bug reports, request new features, etc.
+
+## License
+This work (except `bmstu-logo.pdf`) is distributed under The LaTeX Project Public License.
+
+File `bmstu-logo.pdf` is a logo of Bauman Moscow State Technical University and complies with fair use (article 1274 of the Russian Civil Code).
+
+---
+
+Copyright © 2020-2022 Mikael Novikov<br>
+All rights reserved. \ No newline at end of file
diff --git a/macros/latex/contrib/bmstu/bmstu.cls b/macros/latex/contrib/bmstu/bmstu.cls
new file mode 100644
index 0000000000..10f59f876d
--- /dev/null
+++ b/macros/latex/contrib/bmstu/bmstu.cls
@@ -0,0 +1,115 @@
+%% bmstu.cls
+%% Copyright 2022 Mikael Novikov
+%
+% This work may be distributed and/or modified under the
+% conditions of the LaTeX Project Public License, either version 1.3
+% of this license or (at your option) any later version.
+% The latest version of this license is in
+% http://www.latex-project.org/lppl.txt
+% and version 1.3 or later is part of all distributions of LaTeX
+% version 2005/12/01 or later.
+%
+% This work has the LPPL maintenance status `maintained'.
+%
+% The Current Maintainer of this work is Mikael Novikov.
+%
+% This work consists of all files listed in manifest.txt.
+
+\NeedsTeXFormat{LaTeX2e}
+
+\ProvidesClass{bmstu}[2022/01/24 v1.0.0 BMSTU class]
+
+% Установка базового класса
+\LoadClass[14pt]{extreport}
+
+% Настройка кодировки и языков
+\RequirePackage[T1,T2A]{fontenc}
+\RequirePackage[utf8]{inputenc}
+\RequirePackage[english,main=russian]{babel}
+\RequirePackage{fix-cm}
+
+% Настройка полей
+\RequirePackage[
+ left=30mm,
+ right=10mm, % Является требованием МГТУ, не соответствует ГОСТ 7.32-2017
+ top=20mm,
+ bottom=20mm,
+]{geometry}
+
+% Настройка переносов
+\RequirePackage{microtype}
+\sloppy
+
+% Настройка межстрочного интервала
+\RequirePackage{setspace}
+\onehalfspacing
+
+% Настройка абзацного отступа
+\RequirePackage{indentfirst}
+\setlength{\parindent}{12.5mm}
+
+% Настройка заголовков
+\makeatletter
+\renewcommand\LARGE{\@setfontsize\LARGE{22pt}{20}}
+\renewcommand\Large{\@setfontsize\Large{20pt}{20}}
+\renewcommand\large{\@setfontsize\large{16pt}{20}}
+\makeatother
+\RequirePackage{titlesec}
+\titleformat{\chapter}[block]{\hspace{\parindent}\large\bfseries}{\thechapter}{0.5em}{\large\bfseries\raggedright}
+\titleformat{name=\chapter,numberless}[block]{\hspace{\parindent}}{}{0pt}{\large\bfseries\centering}
+\titleformat{\section}[block]{\hspace{\parindent}\large\bfseries}{\thesection}{0.5em}{\large\bfseries\raggedright}
+\titleformat{\subsection}[block]{\hspace{\parindent}\large\bfseries}{\thesubsection}{0.5em}{\large\bfseries\raggedright}
+\titleformat{\subsubsection}[block]{\hspace{\parindent}\large\bfseries}{\thesubsection}{0.5em}{\large\bfseries\raggedright}
+\titlespacing{\chapter}{12.5mm}{-22pt}{10pt}
+\titlespacing{\section}{12.5mm}{10pt}{10pt}
+\titlespacing{\subsection}{12.5mm}{10pt}{10pt}
+\titlespacing{\subsubsection}{12.5mm}{10pt}{10pt}
+
+% Подключение пакета цветов
+\RequirePackage{xcolor}
+
+\RequirePackage{bmstu-figure}
+\RequirePackage{bmstu-listing}
+
+% Подключение пакетов таблиц
+\RequirePackage{tabularx}
+\RequirePackage{booktabs}
+
+% Настройка подписей
+\RequirePackage[
+ labelsep=endash,
+ figurename=Рисунок,
+ singlelinecheck=false,
+]{caption}
+\captionsetup[figure]{justification=centering}
+
+% Подключение пакетов для альбомной ориентации
+\RequirePackage{lscape}
+\RequirePackage{afterpage}
+
+% Подключение математических пакетов
+\RequirePackage{amsmath}
+\RequirePackage{amssymb}
+
+% Настройка библиографии
+\RequirePackage[
+ style=gost-numeric,
+ language=auto,
+ autolang=other,
+ sorting=none,
+]{biblatex}
+\RequirePackage{csquotes}
+\DeclareFieldFormat{urldate}{(дата обращения:\addspace\thefield{urlday}\adddot \thefield{urlmonth}\adddot\thefield{urlyear})}
+
+% Подключение пакета гиперссылок
+\RequirePackage[unicode,hidelinks]{hyperref}
+
+% Подключение пакета управляющих конструкций
+\RequirePackage{xifthen}
+
+\RequirePackage{bmstu-title}
+\RequirePackage{bmstu-essay}
+\RequirePackage{bmstu-toc}
+\RequirePackage{bmstu-defabbr}
+\RequirePackage{bmstu-biblio}
+\RequirePackage{bmstu-appendix}
diff --git a/macros/latex/contrib/bmstu/examples/examples.pdf b/macros/latex/contrib/bmstu/examples/examples.pdf
new file mode 100644
index 0000000000..89f3f3d602
--- /dev/null
+++ b/macros/latex/contrib/bmstu/examples/examples.pdf
Binary files differ
diff --git a/macros/latex/contrib/bmstu/examples/examples.tex b/macros/latex/contrib/bmstu/examples/examples.tex
new file mode 100644
index 0000000000..f95b1fc21f
--- /dev/null
+++ b/macros/latex/contrib/bmstu/examples/examples.tex
@@ -0,0 +1,155 @@
+\documentclass{bmstu}
+
+\begin{document}
+
+% Аргументы, помеченные как необязательные, могут быть пустыми. В таком случае соответствующее этому аргументу поле (например, ФИО консультанта) добавлено не будет.
+
+% Титульная страница
+
+% Отчет
+
+\makereporttitle
+ {Информатика, искусственный интеллект и системы управления} % Название факультета
+ {Программное обеспечение ЭВМ и информационные технологии} % Название кафедры
+ {лабораторной работе №~1} % Название работы (в дат. падеже)
+ {Операционные системы} % Название курса (необязательный аргумент)
+ {Обработчик прерывания от системного таймера} % Тема работы
+ {} % Номер варианта (необязательный аргумент)
+ {ИУ7-51Б} % Номер группы
+ {Иванов~И.~И.} % ФИО студента
+ {Петров~П.~П.} % ФИО преподавателя
+
+% Расчетно-пояснительная записка к курсовой работе
+
+\makecourseworktitle
+ {Информатика, искусственный интеллект и системы управления} % Название факультета
+ {Программное обеспечение ЭВМ и информационные технологии} % Название кафедры
+ {Исследование распределения памяти в многопоточных приложениях Linux} % Тема работы
+ {ИУ7-71Б} % Номер группы
+ {Иванов~И.~И.} % ФИО студента
+ {Петров~П.~П.} % ФИО научного руководителя
+ {Сидоров~С.~С.} % ФИО консультанта (необязательный аргумент)
+ {Кузнецов~К.~К.} % ФИО консультанта (необязательный аргумент)
+
+% Отчет по научно-исследовательской работе
+
+\makeresearchtitle
+ {Информатика, искусственный интеллект и системы управления} % Название факультета
+ {Программное обеспечение ЭВМ и информационные технологии} % Название кафедры
+ {Исследование методов генерации исходного кода} % Тема работы
+ {ИУ7-81Б} % Номер группы
+ {Иванов~И.~И.} % ФИО студента
+ {Петров~П.~П.} % ФИО научного руководителя
+ {} % ФИО консультанта (необязательный аргумент)
+ {} % ФИО консультанта (необязательный аргумент)
+
+% Расчетно-пояснительная записка к выпускной квалификационной работе
+
+\makethesistitle
+ {Информатика, искусственный интеллект и системы управления} % Название факультета
+ {Программное обеспечение ЭВМ и информационные технологии} % Название кафедры
+ {Метод обнаружения спутников как точечных объектов на изображении} % Тема работы
+ {ИУ7-81Б} % Номер группы
+ {Иванов~И.~И.} % ФИО студента
+ {Петров~П.~П.} % ФИО научного руководителя
+ {Сидоров~С.~С.} % ФИО консультанта (необязательный аргумент)
+ {} % ФИО консультанта (необязательный аргумент)
+ {Кузнецов~К.~К.} % ФИО нормоконтролера
+
+% Рисунок
+
+% Рисункам, добавленным следующими командами, присваивается метка `img:<имя файла без расширения>`.
+
+% Без обтекание текста
+
+На~рисунке~\ref{img:tux} символ семейства Unix-подобных операционных систем Linux.
+Он отличается от~<<обычных>> пингвинов желтым цветом клюва и~лап.
+
+\includeimage
+ {tux} % Имя файла без расширения (файл должен быть расположен в директории inc/img/)
+ {f} % Обтекание (без обтекания)
+ {h} % Положение рисунка (см. figure из пакета float)
+ {0.25\textwidth} % Ширина рисунка
+ {Символ Linux (Tux)} % Подпись рисунка
+
+Cоздатель официального талисмана Linux~--- Ларри Юинг~--- американский программист и~дизайнер.
+Известен также как создатель логотипа компании Ximian.
+Живёт в~Остине (штат~Техас) вместе со~своей женой Евой и~дочерью Кристи.
+
+% С обтеканием текста
+
+\includeimage
+ {tuz} % Имя файла без расширения (файл должен быть расположен в директории inc/img/)
+ {w} % Обтекание (с обтеканием)
+ {r} % Положение рисунка (см. wrapfigure из пакета wrapfig)
+ {0.33\textwidth} % Ширина рисунка
+ {Tuz} % Подпись рисунка
+
+История Tux началась в~1996~году, когда в~списке рассылки разработчиков ядра Linux появились первые разговоры о~талисмане.
+Среди множества предложений можно было выделить либо пародии на~логотипы других ОС, либо~стандартных животных.
+Дискуссии несколько утихли после того, как Линус Торвальдс случайно обмолвился о~том, что ему нравятся пингвины.
+Было несколько попыток нарисовать пингвинов в~разных позах, после чего поступило предложение логотипа в~виде пингвина, держащего Землю.
+
+В~качестве символа ядра~версии 2.6.29 принят тасманский дьявол Tuz (см.~рисунок~\ref{img:tuz}), изображение которого ранее служило талисманом конференции linux.conf.au 2009.
+На~этой конференции Линус Торвальдс провёл успешную акцию по~благотворительной продаже игрушек Linux Tasmanian devil за~сохранение популяции Тасманского дьявола. \newpage
+
+% Листинг
+
+% Листингам, добавленным следующими командами, присваивается метка `lst:<имя файла с расширением>`.
+
+% Простой
+
+% C подсветкой синтаксиса и нумерацией строк
+
+% Обратите внимание, что добавление подсветки синтаксиса и нумерации строк приводит к ошибкам TestVKR. При этом ГОСТ 7.32-2017 не регулирует оформление исходного кода программ.
+
+% Если не будет указан язык программирования или указанный язык не поддерживается, подсветка синтаксиса работать не будет.
+
+На~листингах представлен исходный код программы Hello World на~языке программирования C в~двух вариантах оформления.
+
+\includelisting
+ {main.c} % Имя файла с расширением (файл должен быть расположен в директории inc/lst/)
+ {Исходный код программы Hello World} % Подпись листинга
+
+\includelistingpretty
+ {main.c} % Имя файла с расширением (файл должен быть расположен в директории inc/lst/)
+ {c} % Язык программирования (необязательный аргумент)
+ {Исходный код программы Hello World} % Подпись листинга
+
+% Заголовки
+
+\chapter{Операционные системы}
+
+\section{Unix}
+
+Unix (<<UNIX>> является зарегистрированной торговой маркой организации The~Open~Group) --- семейство переносимых, многозадачных и~многопользовательских операционных систем, которые основаны на~идеях оригинального проекта AT\&T Unix, разработанного в~1970-х~годах в~исследовательском центре Bell Labs Кеном Томпсоном, Деннисом Ритчи и~другими.
+
+\subsection{Обзор}
+
+Первая система Unix была разработана в подразделении Bell~Labs компании AT\&T. С~тех пор было создано большое количество различных Unix-систем.
+
+Юридически право называться <<UNIX>> имеют лишь те операционные системы, которые прошли сертификацию на~соответствие стандарту Single UNIX Specification.
+Остальные~же, хотя и~используют сходные концепции и~технологии, называются Unix-подобными операционными системами (англ.~Unix-like).
+
+\subsubsection{Особенности}
+
+Основное отличие Unix-подобных систем от~других операционных систем заключается в~том, что это изначально многопользовательские многозадачные системы.
+В~Unix может одновременно работать сразу много людей, каждый за~своим терминалом, при этом каждый из~них может выполнять множество различных вычислительных процессов, которые будут использовать ресурсы именно этого компьютера. \newpage
+
+% Формулы
+
+\begin{equation}\label{equ:matrix}
+ \frac{n!}{k!(n-k)!} = \binom{n}{k}
+\end{equation}
+
+\begin{equation*}
+ A_{m,n} =
+ \begin{pmatrix}
+ a_{1,1} & a_{1,2} & \cdots & a_{1,n} \\
+ a_{2,1} & a_{2,2} & \cdots & a_{2,n} \\
+ \vdots & \vdots & \ddots & \vdots \\
+ a_{m,1} & a_{m,2} & \cdots & a_{m,n}
+ \end{pmatrix}
+\end{equation*}
+
+\end{document} \ No newline at end of file
diff --git a/macros/latex/contrib/bmstu/examples/inc/img/tux.png b/macros/latex/contrib/bmstu/examples/inc/img/tux.png
new file mode 100644
index 0000000000..c5f088ba76
--- /dev/null
+++ b/macros/latex/contrib/bmstu/examples/inc/img/tux.png
Binary files differ
diff --git a/macros/latex/contrib/bmstu/examples/inc/img/tuz.png b/macros/latex/contrib/bmstu/examples/inc/img/tuz.png
new file mode 100644
index 0000000000..b7c3407182
--- /dev/null
+++ b/macros/latex/contrib/bmstu/examples/inc/img/tuz.png
Binary files differ
diff --git a/macros/latex/contrib/bmstu/examples/inc/lst/main.c b/macros/latex/contrib/bmstu/examples/inc/lst/main.c
new file mode 100644
index 0000000000..42dcc471bd
--- /dev/null
+++ b/macros/latex/contrib/bmstu/examples/inc/lst/main.c
@@ -0,0 +1,9 @@
+#include <stdio.h>
+
+// Hello World Program in C
+
+int main()
+{
+ printf("Hello World\n");
+ return 0;
+}
diff --git a/macros/latex/contrib/bmstu/img/bmstu-logo.pdf b/macros/latex/contrib/bmstu/img/bmstu-logo.pdf
new file mode 100644
index 0000000000..226943b0b4
--- /dev/null
+++ b/macros/latex/contrib/bmstu/img/bmstu-logo.pdf
Binary files differ
diff --git a/macros/latex/contrib/bmstu/sty/bmstu-appendix.sty b/macros/latex/contrib/bmstu/sty/bmstu-appendix.sty
new file mode 100644
index 0000000000..a276edec33
--- /dev/null
+++ b/macros/latex/contrib/bmstu/sty/bmstu-appendix.sty
@@ -0,0 +1,37 @@
+%% bmstu_appendix.sty
+%% Copyright 2022 Mikael Novikov
+%
+% This work may be distributed and/or modified under the
+% conditions of the LaTeX Project Public License, either version 1.3
+% of this license or (at your option) any later version.
+% The latest version of this license is in
+% http://www.latex-project.org/lppl.txt
+% and version 1.3 or later is part of all distributions of LaTeX
+% version 2005/12/01 or later.
+%
+% This work has the LPPL maintenance status `maintained'.
+%
+% The Current Maintainer of this work is Mikael Novikov.
+%
+% This work consists of all files listed in manifest.txt.
+
+% Установка заголовков приложений
+\RequirePackage[
+ titletoc,
+ title,
+]{appendix}
+\AtBeginDocument{\renewcommand{\appendixname}{ПРИЛОЖЕНИЕ}}
+
+% Создание приложений
+\let\oldappendices\appendices
+\let\oldendappendices\endappendices
+\renewenvironment{appendices}
+{
+ \titleformat{\chapter}{\large\bfseries}{\appendixname~\thechapter}{0pt}{\centering\large\bfseries\\}
+ \setcounter{appendixchapters}{0}
+ \oldappendices
+ \renewcommand{\thechapter}{\Asbuk{chapter}}
+}
+{
+ \oldendappendices
+}
diff --git a/macros/latex/contrib/bmstu/sty/bmstu-biblio.sty b/macros/latex/contrib/bmstu/sty/bmstu-biblio.sty
new file mode 100644
index 0000000000..0b08161c90
--- /dev/null
+++ b/macros/latex/contrib/bmstu/sty/bmstu-biblio.sty
@@ -0,0 +1,23 @@
+%% bmstu_biblio.sty
+%% Copyright 2022 Mikael Novikov
+%
+% This work may be distributed and/or modified under the
+% conditions of the LaTeX Project Public License, either version 1.3
+% of this license or (at your option) any later version.
+% The latest version of this license is in
+% http://www.latex-project.org/lppl.txt
+% and version 1.3 or later is part of all distributions of LaTeX
+% version 2005/12/01 or later.
+%
+% This work has the LPPL maintenance status `maintained'.
+%
+% The Current Maintainer of this work is Mikael Novikov.
+%
+% This work consists of all files listed in manifest.txt.
+
+% Создание списка использованных источников
+\newcommand{\makebibliography}
+{
+ \printbibliography[title=СПИСОК ИСПОЛЬЗОВАННЫХ ИСТОЧНИКОВ]
+ \addcontentsline{toc}{chapter}{СПИСОК ИСПОЛЬЗОВАННЫХ ИСТОЧНИКОВ}
+} \ No newline at end of file
diff --git a/macros/latex/contrib/bmstu/sty/bmstu-defabbr.sty b/macros/latex/contrib/bmstu/sty/bmstu-defabbr.sty
new file mode 100644
index 0000000000..9c557ac6bd
--- /dev/null
+++ b/macros/latex/contrib/bmstu/sty/bmstu-defabbr.sty
@@ -0,0 +1,51 @@
+%% bmstu_defabbr.sty
+%% Copyright 2022 Mikael Novikov
+%
+% This work may be distributed and/or modified under the
+% conditions of the LaTeX Project Public License, either version 1.3
+% of this license or (at your option) any later version.
+% The latest version of this license is in
+% http://www.latex-project.org/lppl.txt
+% and version 1.3 or later is part of all distributions of LaTeX
+% version 2005/12/01 or later.
+%
+% This work has the LPPL maintenance status `maintained'.
+%
+% The Current Maintainer of this work is Mikael Novikov.
+%
+% This work consists of all files listed in manifest.txt.
+
+% Создание элемента
+\RequirePackage{enumitem}
+\newcommand{\definition}[2]
+{
+ \item \noindent #1 --- #2
+}
+
+% Создание страницы определений
+\newenvironment{definitions}
+{
+ \chapter*{ОПРЕДЕЛЕНИЯ}
+ \addcontentsline{toc}{chapter}{ОПРЕДЕЛЕНИЯ}
+
+ В настоящей расчетно-пояснительной записке применяют следующие термины с соответствующими определениями.
+
+ \begin{description}[leftmargin=0pt]
+ }
+ {
+ \end{description}
+}
+
+% Создание страницы обозначений и сокращений
+\newenvironment{abbreviations}
+{
+ \chapter*{ОБОЗНАЧЕНИЯ И СОКРАЩЕНИЯ}
+ \addcontentsline{toc}{chapter}{ОБОЗНАЧЕНИЯ И СОКРАЩЕНИЯ}
+
+ В настоящей расчетно-пояснительной записке применяют следующие сокращения и обозначения.
+
+ \begin{description}[leftmargin=0pt]
+ }
+ {
+ \end{description}
+} \ No newline at end of file
diff --git a/macros/latex/contrib/bmstu/sty/bmstu-essay.sty b/macros/latex/contrib/bmstu/sty/bmstu-essay.sty
new file mode 100644
index 0000000000..55766d9058
--- /dev/null
+++ b/macros/latex/contrib/bmstu/sty/bmstu-essay.sty
@@ -0,0 +1,68 @@
+%% bmstu_essay.sty
+%% Copyright 2022 Mikael Novikov
+%
+% This work may be distributed and/or modified under the
+% conditions of the LaTeX Project Public License, either version 1.3
+% of this license or (at your option) any later version.
+% The latest version of this license is in
+% http://www.latex-project.org/lppl.txt
+% and version 1.3 or later is part of all distributions of LaTeX
+% version 2005/12/01 or later.
+%
+% This work has the LPPL maintenance status `maintained'.
+%
+% The Current Maintainer of this work is Mikael Novikov.
+%
+% This work consists of all files listed in manifest.txt.
+
+% Подсчет количества страниц
+\RequirePackage{lastpage}
+
+% Подсчет количества рисунков и таблиц
+\RequirePackage{etoolbox}
+\newcounter{totfigures}
+\newcounter{tottables}
+\providecommand\totfig{}
+\providecommand\tottab{}
+\makeatletter
+\AtEndDocument{%
+ \addtocounter{totfigures}{\value{figure}}%
+ \addtocounter{tottables}{\value{table}}%
+ \immediate\write\@mainaux{%
+ \string\gdef\string\totfig{\number\value{totfigures}}%
+ \string\gdef\string\tottab{\number\value{tottables}}%
+ }%
+}
+\makeatother
+\pretocmd{\chapter}{\addtocounter{totfigures}{\value{figure}}\setcounter{figure}{0}}{}{}
+\pretocmd{\chapter}{\addtocounter{tottables}{\value{table}}\setcounter{table}{0}}{}{}
+
+% Подсчет количества использованных источников
+\newcounter{totbibentries}
+\newcommand*{\listcounted}{}
+\providecommand\totbib{}
+\makeatletter
+\AtDataInput{%
+ \xifinlist{\abx@field@entrykey}\listcounted%
+ {}%
+ {\stepcounter{totbibentries}%
+ \listxadd\listcounted{\abx@field@entrykey}}%
+}%
+\makeatother
+
+% Подсчет количества приложений
+\usepackage{totcount, assoccnt}
+\newcounter{appendixchapters}
+\DeclareAssociatedCounters{chapter}{appendixchapters}
+\regtotcounter{appendixchapters}
+
+% Создание страницы реферата
+\newenvironment{essay}[1]
+{
+ \chapter*{РЕФЕРАТ}
+ \addcontentsline{toc}{chapter}{РЕФЕРАТ}
+
+ Расчетно-пояснительная записка \begin{NoHyper}\pageref{LastPage}\end{NoHyper}~с., \totfig~рис., \tottab~табл., \thetotbibentries~источн., \total{appendixchapters}~прил.
+
+ \noindent \MakeUppercase{#1} \par
+}{} \ No newline at end of file
diff --git a/macros/latex/contrib/bmstu/sty/bmstu-figure.sty b/macros/latex/contrib/bmstu/sty/bmstu-figure.sty
new file mode 100644
index 0000000000..d2817ca668
--- /dev/null
+++ b/macros/latex/contrib/bmstu/sty/bmstu-figure.sty
@@ -0,0 +1,52 @@
+%% bmstu_figure.sty
+%% Copyright 2022 Mikael Novikov
+%
+% This work may be distributed and/or modified under the
+% conditions of the LaTeX Project Public License, either version 1.3
+% of this license or (at your option) any later version.
+% The latest version of this license is in
+% http://www.latex-project.org/lppl.txt
+% and version 1.3 or later is part of all distributions of LaTeX
+% version 2005/12/01 or later.
+%
+% This work has the LPPL maintenance status `maintained'.
+%
+% The Current Maintainer of this work is Mikael Novikov.
+%
+% This work consists of all files listed in manifest.txt.
+
+% Подключения пакетов фигур
+\RequirePackage{graphicx}
+\RequirePackage{float}
+\RequirePackage{wrapfig}
+\RequirePackage{tikzscale}
+
+% Подключения пакета графиков
+\RequirePackage{pgfplots}
+\pgfplotsset{compat=newest}
+
+% Команда создания рисунка
+\newcommand{\includeimage}[5]
+{
+ \ifthenelse{\equal{#2}{f}}
+ {
+ \begin{figure}[#3]
+ \center{\includegraphics[width=#4]{inc/img/#1}}
+ \caption{#5}
+ \label{img:#1}
+ \end{figure}
+ }
+ {
+ \ifthenelse{\equal{#2}{w}}
+ {
+ \begin{wrapfigure}{#3}{#4}
+ \center{\includegraphics[width=#4]{inc/img/#1}}
+ \caption{#5}
+ \label{img:#1}
+ \end{wrapfigure}
+ }
+ {
+ \PackageError{bmstu}{unknown image type}{}
+ }
+ }
+} \ No newline at end of file
diff --git a/macros/latex/contrib/bmstu/sty/bmstu-listing.sty b/macros/latex/contrib/bmstu/sty/bmstu-listing.sty
new file mode 100644
index 0000000000..1f39686a0e
--- /dev/null
+++ b/macros/latex/contrib/bmstu/sty/bmstu-listing.sty
@@ -0,0 +1,63 @@
+%% bmstu_listing.sty
+%% Copyright 2022 Mikael Novikov
+%
+% This work may be distributed and/or modified under the
+% conditions of the LaTeX Project Public License, either version 1.3
+% of this license or (at your option) any later version.
+% The latest version of this license is in
+% http://www.latex-project.org/lppl.txt
+% and version 1.3 or later is part of all distributions of LaTeX
+% version 2005/12/01 or later.
+%
+% This work has the LPPL maintenance status `maintained'.
+%
+% The Current Maintainer of this work is Mikael Novikov.
+%
+% This work consists of all files listed in manifest.txt.
+
+% Настройка листингов
+\RequirePackage{listings}
+\RequirePackage{listingsutf8}
+\lstset{
+ inputencoding=utf8/koi8-r,
+ basicstyle=\small\ttfamily,
+ rulecolor=\color{black},
+ escapeinside={\%*}{*)},
+ breaklines=true,
+ breakatwhitespace=true,
+ tabsize=4,
+ showstringspaces=false,
+ float=h!,
+ abovecaptionskip=-5pt,
+}
+
+% Команда создания простого листинга
+\newcommand{\includelisting}[2]
+{
+ \lstinputlisting[
+ frame=single,
+ caption={#2},
+ label={lst:#1},
+ ]{inc/lst/#1}
+}
+
+\definecolor{numbers}{rgb}{0.5, 0.5, 0.5}
+\definecolor{keywords}{rgb}{0.13, 0.13, 1}
+\definecolor{comments}{rgb}{0, 0.5, 0}
+\definecolor{strings}{rgb}{0.9, 0, 0}
+
+% Команда создания листинга с подсветкой синтаксиса и нумерацией строк
+\newcommand{\includelistingpretty}[3]
+{
+ \lstinputlisting[
+ language={#2},
+ keywordstyle=\color{keywords},
+ stringstyle=\color{strings},
+ commentstyle=\color{comments},
+ frame=leftline,
+ numbers=left,
+ numberstyle=\footnotesize\color{numbers},
+ caption={#3},
+ label={lst:#1},
+ ]{inc/lst/#1}
+} \ No newline at end of file
diff --git a/macros/latex/contrib/bmstu/sty/bmstu-title.sty b/macros/latex/contrib/bmstu/sty/bmstu-title.sty
new file mode 100644
index 0000000000..ea707bdc7a
--- /dev/null
+++ b/macros/latex/contrib/bmstu/sty/bmstu-title.sty
@@ -0,0 +1,247 @@
+%% bmstu_title.sty
+%% Copyright 2022 Mikael Novikov
+%
+% This work may be distributed and/or modified under the
+% conditions of the LaTeX Project Public License, either version 1.3
+% of this license or (at your option) any later version.
+% The latest version of this license is in
+% http://www.latex-project.org/lppl.txt
+% and version 1.3 or later is part of all distributions of LaTeX
+% version 2005/12/01 or later.
+%
+% This work has the LPPL maintenance status `maintained'.
+%
+% The Current Maintainer of this work is Mikael Novikov.
+%
+% This work consists of all files listed in manifest.txt.
+
+% Установка мета-данных выходного файла
+\newcommand{\documentmeta}[4]
+{
+ \hypersetup{
+ pdftitle={#1 #2 #3},
+ pdfsubject={#4},
+ pdfauthor={#2}
+ }
+}
+
+% Cоздание полей
+\RequirePackage[normalem]{ulem}
+\RequirePackage{stackengine}
+\newcommand{\longunderline}[1]
+{
+ \uline{#1\hfill\mbox{}}
+}
+\newcommand{\fixunderline}[3]
+{
+ $\underset{\text{#3}}{\text{\uline{\stackengine{0pt}{\hspace{#2}}{\text{#1}}{O}{c}{F}{F}{L}}}}$
+}
+
+% Создание горизонтальной линии
+\makeatletter
+\newcommand{\vhrulefill}[1]
+{
+ \leavevmode\leaders\hrule\@height#1\hfill \kern\z@
+}
+\makeatother
+
+% Создание шапки титульной страницы
+\newcommand{\titlepageheader}[2]
+{
+ \begin{wrapfigure}[7]{l}{0.14\linewidth}
+ \vspace{3.4mm}
+ \hspace{-8mm}
+ \includegraphics[width=0.89\linewidth]{img/bmstu-logo}
+ \end{wrapfigure}
+
+ {
+ \singlespacing \small
+ Министерство науки и высшего образования Российской Федерации \\
+ Федеральное государственное бюджетное образовательное учреждение \\
+ высшего образования \\
+ <<Московский государственный технический университет \\
+ имени Н.~Э.~Баумана \\
+ (национальный исследовательский университет)>> \\
+ (МГТУ им. Н.~Э.~Баумана) \\
+ }
+
+ \vspace{-4.2mm}
+ \vhrulefill{0.9mm} \\
+ \vspace{-7mm}
+ \vhrulefill{0.2mm} \\
+ \vspace{2.8mm}
+
+ {
+ \small
+ ФАКУЛЬТЕТ \longunderline{<<#1>>} \\
+ \vspace{3.3mm}
+ КАФЕДРА \longunderline{<<#2>>} \\
+ }
+}
+
+% Установка заголовков отчета по НИР
+\newcommand{\titlepageresearchtitle}[1]
+{
+ {
+ \LARGE \bfseries
+ ОТЧЕТ \\
+ }
+ \vspace{5mm}
+ {
+ \Large \itshape
+ ПО НАУЧНО-ИССЛЕДОВАТЕЛЬСКОЙ РАБОТЕ \\
+ \vspace{5mm}
+ НА ТЕМУ: \\
+ <<#1>> \\
+ }
+}
+
+% Установка заголовков РПЗ
+\newcommand{\titlepagenotetitle}[2]
+{
+ {
+ \LARGE \bfseries
+ РАСЧЕТНО-ПОЯСНИТЕЛЬНАЯ ЗАПИСКА \\
+ }
+ \vspace{5mm}
+ {
+ \Large \itshape
+ #1 \\
+ \vspace{5mm}
+ НА ТЕМУ: \\
+ <<#2>> \\
+ }
+}
+
+% Установка заголовков отчета
+\newcommand{\titlepagereporttitle}[4]
+{
+ \textbf{ОТЧЕТ} \\
+ по #1 \\
+ \ifthenelse{\isempty{#2}}{}{по курсу <<#2>> \\}
+ \ifthenelse{\isempty{#3}}{}{на тему: <<#3>> \\}
+ \ifthenelse{\isempty{#4}}{}{Вариант №~#4 \\}
+}
+
+% Создание поля студента
+\newcommand{\titlepagestudent}[2]
+{
+ Студент \fixunderline{#1}{25mm}{(Группа)} &
+ \fixunderline{}{40mm}{(Подпись, дата)} \vspace{1.3mm} &
+ \fixunderline{#2}{40mm}{(И.~О.~Фамилия)} \\
+}
+
+% Создание прочих полей
+\newcommand{\titlepageothers}[2]
+{
+ #1 &
+ \fixunderline{}{40mm}{(Подпись, дата)} \vspace{1.3mm} &
+ \fixunderline{#2}{40mm}{(И.~О.~Фамилия)} \\
+}
+
+% Установка исполнителей работы
+\newcommand{\titlepageauthors}[7]
+{
+ {
+ \small
+ \begin{tabularx}{\textwidth}{@{}>{\hsize=.5\hsize}X>{\hsize=.25\hsize}X>{\hsize=.25\hsize}X@{}}
+ \titlepagestudent{#1}{#2}
+ \titlepageothers{#3}{#4}
+ \ifthenelse{\isempty{#5}}{}{\titlepageothers{Консультант}{#5}}
+ \ifthenelse{\isempty{#6}}{}{\titlepageothers{Консультант}{#6}}
+ \ifthenelse{\isempty{#7}}{}{\titlepageothers{Нормоконтролер}{#7}}
+ \end{tabularx}
+ }
+}
+
+% Создание титульной страницы РПЗ к ВКР
+\newcommand{\makethesistitle}[9]
+{
+ \documentmeta{РПЗ к ВКР}{#5}{#4}{#3}
+
+ \begin{titlepage}
+ \centering
+
+ \titlepageheader{#1}{#2}
+ \vspace{15.8mm}
+
+ \titlepagenotetitle{К ВЫПУСКНОЙ КВАЛИФИКАЦИОННОЙ РАБОТЕ}{#3}
+ \vfill
+
+ \titlepageauthors{#4}{#5}{Руководитель ВКР}{#6}{#7}{#8}{#9}
+ \vspace{14mm}
+
+ \textit{{\the\year} г.}
+ \end{titlepage}
+
+ \setcounter{page}{2}
+}
+
+% Создание титульной страницы отчета по НИР
+\newcommand{\makeresearchtitle}[8]
+{
+ \documentmeta{Отчет по НИР}{#5}{#4}{#3}
+
+ \begin{titlepage}
+ \centering
+
+ \titlepageheader{#1}{#2}
+ \vspace{15.8mm}
+
+ \titlepageresearchtitle{#3}
+ \vfill
+
+ \titlepageauthors{#4}{#5}{Руководитель НИР}{#6}{#7}{#8}{}
+ \vspace{14mm}
+
+ \textit{{\the\year} г.}
+ \end{titlepage}
+
+ \setcounter{page}{2}
+}
+
+% Создание титульной страницы РПЗ к КР
+\newcommand{\makecourseworktitle}[8]
+{
+ \documentmeta{РПЗ к КР}{#5}{#4}{#3}
+
+ \begin{titlepage}
+ \centering
+
+ \titlepageheader{#1}{#2}
+ \vspace{15.8mm}
+
+ \titlepagenotetitle{К КУРСОВОЙ РАБОТЕ}{#3}
+ \vfill
+
+ \titlepageauthors{#4}{#5}{Руководитель курсовой работы}{#6}{#7}{#8}{}
+ \vspace{14mm}
+
+ \textit{{\the\year} г.}
+ \end{titlepage}
+
+ \setcounter{page}{2}
+}
+
+% Создание титульной страницы отчета
+\newcommand{\makereporttitle}[9]
+{
+ \documentmeta{Отчет}{#8}{#3 #4}{#5}
+
+ \begin{titlepage}
+ \centering
+
+ \titlepageheader{#1}{#2}
+ \vspace{15.8mm}
+
+ \titlepagereporttitle{#3}{#4}{#5}{#6}
+ \vfill
+
+ \titlepageauthors{#7}{#8}{Преподаватель}{#9}{}{}{}
+ \vspace{14mm}
+
+ \textit{{\the\year} г.}
+ \end{titlepage}
+
+ \setcounter{page}{2}
+} \ No newline at end of file
diff --git a/macros/latex/contrib/bmstu/sty/bmstu-toc.sty b/macros/latex/contrib/bmstu/sty/bmstu-toc.sty
new file mode 100644
index 0000000000..809698a170
--- /dev/null
+++ b/macros/latex/contrib/bmstu/sty/bmstu-toc.sty
@@ -0,0 +1,23 @@
+%% bmstu_toc.sty
+%% Copyright 2022 Mikael Novikov
+%
+% This work may be distributed and/or modified under the
+% conditions of the LaTeX Project Public License, either version 1.3
+% of this license or (at your option) any later version.
+% The latest version of this license is in
+% http://www.latex-project.org/lppl.txt
+% and version 1.3 or later is part of all distributions of LaTeX
+% version 2005/12/01 or later.
+%
+% This work has the LPPL maintenance status `maintained'.
+%
+% The Current Maintainer of this work is Mikael Novikov.
+%
+% This work consists of all files listed in manifest.txt.
+
+% Создание содержания
+\newcommand{\maketableofcontents}
+{
+ \renewcommand\contentsname{СОДЕРЖАНИЕ}
+ \tableofcontents
+} \ No newline at end of file