%% ----------------------------------------------------------------------------
%%
%% Стилевой файл для оформления текстов докладов семинара
%% Семинар "O & ML" (http://oml.cmlaboratory.com/)
%%
%% Версия: 1.0.0
%%
%% (с) 2004 Григорьев М. И., Просеков О. В., Чашников Н. В.
%% (с) 2006-2012 Григорьев М. И., Просеков О. В., Чашников Н. В.
%% (с) 2014 Тамасян Г.Ш.
%% (с) 2022 Тамасян Г.Ш.
%% ----------------------------------------------------------------------------

\NeedsTeXFormat{LaTeX2e}[1997/12/01]
\ProvidesPackage{oml}[19/01/2022 Style package by G.~Tamasyan]

\newif\if@headers
\@headersfalse

\newif\if@english
\@englishtrue

%% опция поддержки заголовков разделов
\DeclareOption{headers}{\@headerstrue}

\DeclareOption{english}{\@englishfalse}

\ProcessOptions

%% РУСИФИКАЦИЯ ------------------------------------------------------------- %%
\lccode`\-=`\-          % переносы в словах с дефисом
\defaulthyphenchar=127  %
\RequirePackage[cp1251]{inputenc}
\RequirePackage[T2A]{fontenc}

\if@english
\RequirePackage[english,russian]{babel}
\RequirePackage{indentfirst}

\frenchspacing %% принятые при наборе русского текста правила расстановки
               %% промежутков между словами и предложениями
               %% (одинаковые промежутки)
               %% (если надо перейти на английские правила - \nofrenchspacing)

\righthyphenmin=2 %% разрешен перенос минимум
                  %% двух символов (в англ. языке - 3)
\else
\RequirePackage[english]{babel}
\fi


%% ОФОРМЛЕНИЕ -------------------------------------------------------------- %%
\RequirePackage{geometry} % Настройка макета страницы (размер, поля и пр.)


%% Разделы
\RequirePackage{titlesec}
\if@headers
    \titleformat{\section}{\normalfont\large\bfseries\raggedright}{\thesection.}{1em}{}
    \titlespacing*{\section}{0pt}{3.5ex plus 1ex minus .2ex}{2.3ex plus .2ex}
\else
    \renewcommand{\thesection }{\@arabic\c@section\textdegree}
    \titleformat{\section}[runin]{\normalfont\bfseries}{\thesection\normalfont. }{0pt}{}
    \titlespacing{\section}{\parindent}{*1}{\wordsep}
\fi

\if@english
%% Заголовки
\RequirePackage[labelsep=period, format=hang]{caption}
\else
\RequirePackage[format=hang]{caption}
\fi

%% Список литературы
\renewcommand{\@biblabel}[1]{#1.\hfill}

%% Колонтитулы
\pagestyle{myheadings}

%% Верстка абзацев
\tolerance=1000 % минимальная мера разреженности строки


%% МАТЕМАТИКА %%
%% Математические пакеты
\RequirePackage{amsmath}
\RequirePackage{amsfonts}
\RequirePackage{amssymb}
\RequirePackage{amsthm}

\if@english
%% Знаки меньше или равно, больше или равно
\renewcommand{\le}{\leqslant}
\renewcommand{\ge}{\geqslant}
\fi

%% Математические операции
\DeclareMathOperator{\rev}{rev}   % Реверс
\DeclareMathOperator{\diag}{diag}
\DeclareMathOperator{\tr}{tr}
\DeclareMathOperator{\Tr}{Tr}
\DeclareMathOperator{\rank}{rank}
\DeclareMathOperator{\Rank}{Rank}
\DeclareMathOperator{\re}{Re}
\DeclareMathOperator{\im}{Im}
\newcommand{\conj}{\bar}
\newcommand{\defop}{\mathop{:=}}
\newcommand{\defopinv}{\mathop{=:}}
\DeclareMathAlphabet{\mathsl}{OT1}{cmr}{m}{sl}

%% перенос знаков в формулах
\newcommand*{\hyphmath}[1]{#1\nobreak\discretionary{}%
            {\hbox{$\mathsurround=0pt #1$}}{}}

%% принятое в русских текстах начертание эпсилон и фи
\let\eps\varepsilon
\let\vphi\varphi

%% Команды для множеств
\newcommand{\sZ}{\mathbb{Z}}
\newcommand{\sR}{\mathbb{R}}
\newcommand{\sC}{\mathbb{C}}

%% Верстка внутритекстовых формул
%\binoppenalty=10000 % запрещение разрыва строк после знаков бинарных операций
%\relpenalty=10000 % запрещение разрыва строк после знаков бинарных отношений


%% ДОПОЛНИТЕЛЬНЫЕ ПАКЕТЫ --------------------------------------------------- %%
\RequirePackage[numbers,sort&compress]{natbib} % расширение функциональности ссылок на библиографию

\RequirePackage{pstricks, pst-plot, pst-node} % пакет для получения
                                              % качественных иллюстраций,
                                              % графиков и диаграмм

\RequirePackage[dvips]{graphicx} % пакет для включения графических файлов
                                 % в документ

\RequirePackage{subfigure} % Объединение "подфигур" в окружении 'figure'

\RequirePackage{wrapfig} % "Обтекание" рисунков текстом

\RequirePackage{comment} % комментирование больших частей текста

%% Создание гипертекстовых ссылок
\RequirePackage{hyperref}
\hypersetup{
    unicode = true,
    bookmarksnumbered = true,
    colorlinks = true,
    linkcolor = black,
    urlcolor = black,
    citecolor = black,
    baseurl = http://oml.cmlaboratory.com/,
    breaklinks = true,
    pdfdisplaydoctitle = true,
    pdfstartpage = 0,
    pdfstartview = {FitH 0}
}

\if@english
%% Определение окружений для набора теорем и лемм (с нумерацией и без)
\theoremstyle{plain}
\newtheorem{lemma}{ЛЕММА}
\newtheorem*{lemma*}{ЛЕММА}
\newtheorem{theorem}{ТЕОРЕМА}
\newtheorem*{theorem*}{ТЕОРЕМА}
\newtheorem{proposal}{ПРЕДЛОЖЕНИЕ}
\newtheorem*{proposal*}{ПРЕДЛОЖЕНИЕ}
\newtheorem{corollary}{СЛЕДСТВИЕ}
\newtheorem*{corollary*}{СЛЕДСТВИЕ}
\newtheorem{statement}{УТВЕРЖДЕНИЕ}
\newtheorem*{statement*}{УТВЕРЖДЕНИЕ}
\newtheorem{hypothesis}{ГИПОТЕЗА}
\newtheorem*{hypothesis*}{ГИПОТЕЗА}
\theoremstyle{definition}
\newtheorem{example}{ПРИМЕР}
\newtheorem*{example*}{ПРИМЕР}
\newtheorem{definition}{ОПРЕДЕЛЕНИЕ}
\newtheorem*{definition*}{ОПРЕДЕЛЕНИЕ}
\theoremstyle{remark}
\newtheorem{remark}{\upshape З\,а\,м\,е\,ч\,а\,н\,и\,е}
\newtheorem*{remark*}{\upshape З\,а\,м\,е\,ч\,а\,н\,и\,е}
%% Определение окружений для набора замечаний (с нумерацией и без)
%\theoremstyle{remark}
%\newtheorem{remark}{\upshape З\,а\,м\,е\,ч\,а\,н\,и\,е}[theorem]
%\newtheorem*{remark*}{\upshape З\,а\,м\,е\,ч\,а\,н\,и\,е}
\newcommand{\necessity}{\noindent Н\,е\,о\,б\,х\,о\,д\,и\,м\,о\,с\,т\,ь.\ }
\newcommand{\sufficiency}{\noindent Д\,о\,с\,т\,а\,т\,о\,ч\,н\,о\,с\,т\,ь.\ }
\else
\theoremstyle{plain}
    \newtheorem{lemma}{LEMMA}
    \newtheorem*{lemma*}{LEMMA}
    \newtheorem{theorem}{THEOREM}
    \newtheorem*{theorem*}{THEOREM}
  \newtheorem{proposal}{PROPOSAL}
  \newtheorem*{proposal*}{PROPOSAL}
  \newtheorem{corollary}{COROLLARY}
  \newtheorem*{corollary*}{COROLLARY}
\theoremstyle{definition}
    \newtheorem{example}{EXAMPLE}
    \newtheorem*{example*}{EXAMPLE}
  \newtheorem{definition}{DEFINITION}
  \newtheorem*{definition*}{DEFINITION}
\theoremstyle{remark}
 \newtheorem{remark}{\upshape R\,e\,m\,a\,r\,k}[theorem]
 \newtheorem*{remark*}{\upshape R\,e\,m\,a\,r\,k}
\newcommand{\necessity}{\noindent N\,e\,c\,e\,s\,s\,i\,t\,y.\ }
\newcommand{\sufficiency}{\noindent S\,u\,f\,f\,i\,c\,i\,e\,n\,c\,y.\ }
\fi

%\@addtoreset{remark}{theorem} %% Подчинение счетчика 'remark'
                              %% счетчику 'theorem'
                              %% (необходимо ручное обнуление счетчика
                              %% 'remark' при использовании 'theorem*')

%% ДОПОЛНИТЕЛЬНАЯ НАСТРОЙКА ------------------------------------------------ %%
\renewcommand{\labelenumi}{\theenumi)} % формат нумерованного списка:
                                       % 1) ...
                                       % 2) ...
\renewcommand{\Hy@numberline}[1]{#1. } % Добавляется точка после номера в PDF bookmarks


\if@english
\AtBeginDocument
{
    \selectlanguage{russian}
    \renewcommand{\refname}{\phantomsection\addcontentsline{toc}{section}{ЛИТЕРАТУРА}ЛИТЕРАТУРА}
    \renewcommand{\proofname}{\normalfont Д\,о\,к\,а\,з\,а\,т\,е\,л\,ь\,с\,т\,в\,о}
}
\else
\AtBeginDocument
{
    \renewcommand{\refname}{\phantomsection\addcontentsline{toc}{section}{REFERENCES}REFERENCES}
    \renewcommand{\proofname}{\normalfont P\,r\,o\,o\,f}
}

\fi

%% ДОПОЛНИТЕЛЬНЫЕ КОМАНДЫ %%


%\newcommand{\omlurl}{http://www.apmath.spbu.ru/oml/}
\newcommand{\omlurl}{http://oml.cmlaboratory.com/}
\if@english
\newcommand{\thanksstring}{Семинар по оптимизации, машинному обучению и искусственному интеллекту
\mbox{<<O\&ML>>} \href{\omlurl}{\ttfamily\omlurl}}
\else
\newcommand{\thanksstring}{Seminar on Optimization, Machine Learning and Artificial Intelligence (O \& ML):
\quad \href{\omlurl}{\ttfamily\omlurl}}
\fi

% ОБОЩЕННАЯ КОМАНДА ЗАДАНИЯ ЗАГОЛОВКА
    % параметры:
    % 1. необязательный параметр: строка нижнего колонтитула страницы заголовка
    % 2. название
    % 3. автор(ы) с указанем e-mail (испольуем команды \texorpdfstring{text4TeX}{text4PDF})
    % 4. дата
    % 5. ключевые слова для pdf
    % 6. Сыслка вида http://apmath.spbu.ru/oml/reps<год>.shtml#<месяц><число>
\newcommand{\omltitle}[7][\thanksstring]
{
    \title{#2\thanks{#1}}
    \author{#3}
    \date{#4}
    \maketitle

    \hypersetup
    {
        pdftitle = {#2},
        pdfauthor = {#3},
        pdfsubject = {#6},
        pdfkeywords = {#5}
    }
}

\endinput
