%% bmstu_title.sty
%% Copyright 2023 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]{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 \\}
}

% Создание поля студента
\RequirePackage{pgffor}

\newcommand*\titlepagestudentscontent{}

\newcommand{\maketitlepagestudent}[1]
{
	\foreach \s/\g in {#1} {
		\gappto\titlepagestudentscontent{Студент \fixunderline}
		\xappto\titlepagestudentscontent{{\g}}
		\gappto\titlepagestudentscontent{{25mm}{(Группа)} &}
		\gappto\titlepagestudentscontent{\fixunderline{}{40mm}{(Подпись, дата)} \vspace{1.3mm} &}
		\gappto\titlepagestudentscontent{\fixunderline}
		\xappto\titlepagestudentscontent{{\s}}
		\gappto\titlepagestudentscontent{{40mm}{(И.~О.~Фамилия)} \\}
	}
}

% Создание прочих полей
\newcommand*\titlepageotherscontent{}

\newcommand{\maketitlepageothers}[2]
{
	\foreach \c in {#2} {
		\gappto\titlepagestudentscontent{#1 &}
		\gappto\titlepagestudentscontent{\fixunderline{}{40mm}{(Подпись, дата)} \vspace{1.3mm} &}
		\gappto\titlepagestudentscontent{\fixunderline}
		\xappto\titlepagestudentscontent{{\c}}
		\gappto\titlepagestudentscontent{{40mm}{(И.~О.~Фамилия)} \\}
	}
}

% Установка исполнителей работы
\newcommand{\titlepageauthors}[5]
{
	{
		\renewcommand{\titlepagestudentscontent}{}
		\maketitlepagestudent{#1}

		\renewcommand{\titlepageotherscontent}{}
		\maketitlepageothers{#2}{#3}
		\maketitlepageothers{Консультант}{#4}
		\maketitlepageothers{Нормоконтролер}{#5}

		\small
		\begin{tabularx}{\textwidth}{@{}>{\hsize=.5\hsize}X>{\hsize=.25\hsize}X>{\hsize=.25\hsize}X@{}}
			\titlepagestudentscontent

			\titlepageotherscontent
		\end{tabularx}
	}
}

% Создание титульной страницы РПЗ к ВКР
\newcommand{\makethesistitle}[7]
{
	\documentmeta{РПЗ к ВКР}{#4}{}{#3}

	\begin{titlepage}
		\centering

		\titlepageheader{#1}{#2}
		\vspace{15.8mm}

		\titlepagenotetitle{К ВЫПУСКНОЙ КВАЛИФИКАЦИОННОЙ РАБОТЕ}{#3}
		\vfill

		\titlepageauthors{#4}{Руководитель ВКР}{#5}{#6}{#7}
		\vspace{14mm}

		\textit{{\the\year} г.}
	\end{titlepage}

	\setcounter{page}{2}
}

% Создание титульной страницы отчета по НИР
\newcommand{\makeresearchtitle}[6]
{
	\documentmeta{Отчет по НИР}{#4}{}{#3}

	\begin{titlepage}
		\centering

		\titlepageheader{#1}{#2}
		\vspace{15.8mm}

		\titlepageresearchtitle{#3}
		\vfill

		\titlepageauthors{#4}{Руководитель НИР}{#5}{#6}{}
		\vspace{14mm}

		\textit{{\the\year} г.}
	\end{titlepage}

	\setcounter{page}{2}
}

% Создание титульной страницы РПЗ к КР
\newcommand{\makecourseworktitle}[6]
{
	\documentmeta{РПЗ к КР}{#4}{}{#3}

	\begin{titlepage}
		\centering

		\titlepageheader{#1}{#2}
		\vspace{15.8mm}

		\titlepagenotetitle{К КУРСОВОЙ РАБОТЕ}{#3}
		\vfill

		\titlepageauthors{#4}{Руководитель курсовой работы}{#5}{#6}{}
		\vspace{14mm}

		\textit{{\the\year} г.}
	\end{titlepage}

	\setcounter{page}{2}
}

% Создание титульной страницы отчета
\newcommand{\makereporttitle}[8]
{
	\documentmeta{Отчет}{#7}{по #3 по курсу #4}{#5}

	\begin{titlepage}
		\centering

		\titlepageheader{#1}{#2}
		\vspace{15.8mm}

		\titlepagereporttitle{#3}{#4}{#5}{#6}
		\vfill

		\titlepageauthors{#7}{Преподаватель}{#8}{}{}
		\vspace{14mm}

		\textit{{\the\year} г.}
	\end{titlepage}

	\setcounter{page}{2}
}
