summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndrew Guschin <guschin@altlinux.org>2024-09-30 14:41:58 +0400
committerAndrew Guschin <guschin@altlinux.org>2024-09-30 14:41:58 +0400
commit75005684ef2a7bab31a7546caa8506ed83e7aeab (patch)
tree8c3e881e6a908fc85e410af0c4b693c2a97baf23
init
-rw-r--r--article-sample.tex127
-rw-r--r--article.tex127
-rw-r--r--bcube.pngbin0 -> 41539 bytes
-rw-r--r--ptk20main.pdfbin0 -> 201330 bytes
-rw-r--r--ptk20main.tex568
-rw-r--r--smach.jpgbin0 -> 27263 bytes
6 files changed, 822 insertions, 0 deletions
diff --git a/article-sample.tex b/article-sample.tex
new file mode 100644
index 0000000..329a5a5
--- /dev/null
+++ b/article-sample.tex
@@ -0,0 +1,127 @@
+\ptkTitle{О пяти свойствах булевых функций}
+\ptkAuthors{Иванов Иван Иванович, Петров Пётр Петрович}{Иваново-Петровский университет}{ivanov@ivan.ru, petrov@petr.ru}
+\ptkAuthors{Сидоров Сидор Сидорович}{Сидоровский университет}{sidorov@sidor.ru}
+
+\begin{ptkarticle}%
+
+Это пример оформления файла статьи. Пример ссылок на статьи~[1,\,2,\,3],
+диссертацию~[4], книгу~[5]. Обратите внимание на оформление ссылки~[3] на
+статью с четырьмя и более авторами. Ссылки на статьи ставятся вручную.
+\begin{figure}[ht]
+\centering
+\includegraphics[width=0.6\textwidth]{bcube}
+\caption{Слои булевого куба.}
+\label{fi:bcube}
+\end{figure}
+
+% Разделы можно задавать командой \section{Название раздела}
+\section{Название раздела}
+% Подраздел можно задать командой \paragraph{Название подраздела.}
+\paragraph{Название подраздела.}
+Предусмотрено применение команд как использующих глобальную систему
+нумерации, так и вариантов этих команд со звёздочкой, которые её не используют.
+Например, ссылка на рисунок~\ref{fi:bcube} сгенерирована автоматически, а на
+рисунок~2 "--- проставлена вручную, при этом в первом случае для задания
+подписи к рисунку используется команда \verb|\caption|, а во втором "---
+команда
+\verb|\caption*|.
+\begin{figure*}[ht]
+\centering
+\includegraphics[width=5cm]{smach}
+\caption*{Рис.~2: Пример инициального автомата.}
+\end{figure*}
+
+% Для вёрстки абзацев с переполнением строк можно
+% воспользоваться окружением sloppypar
+\begin{sloppypar}
+Для создания выключных формул следует пользоваться окружениями \texttt
+{equation}, \texttt {gather}, \texttt {multline} и др. подобными им, а также их
+вариантами со звёздочкой, которые не проставляют номер формулы. При этом не
+следует задавать выключные формулы с использованием команды \verb|$$|,
+в~крайнем случае для этого можно воспользоваться командами \verb|\[|, \verb|\]|
+(не рекомендуется). Например:
+\end{sloppypar}
+\begin{equation}
+\label{eq:stdbase}
+[\{x \&y, x \vee y, {\bar x}\}] = P_2.
+\end{equation}
+Для нумерации формул вручную можно воспользоваться окружением со звёздочкой и
+командой~\verb|\eqno|, при этом ссылка~(2) на такую формулу также проставляется
+вручную:
+\begin{equation*}
+\label{eq:polbase}
+[\{x \oplus y, x \& y, 1, 0 \}] = P_2. \eqno{(2)}
+\end{equation*}
+Тезисы не должны содержать нумерованых формул, на которые нет ссылок в тексте.
+
+% Иногда требуется, чтобы TeX сверстал параграф на одну строку короче.
+% Пример показывает как этого добиться указанием команды \looseness=-1
+% перед завершением следующего параграфа.
+В~тексте предусмотрено использование предопределённых окружений типа
+\texttt{theorem} пакета \texttt{amsthm}. Для определений, лемм, утверждений,
+теорем, замечаний, следствий предлагается использовать окружения следующего
+вида:\looseness=-1
+\begin{definition*}
+Базис $\{x \& y, x \vee y, {\bar x}\}$ называется \emph{стандартным}.
+\end{definition*}
+\begin{lemma}
+\label{lm:nonullfn}
+Формулировка леммы о ненулевой функции.
+\end{lemma}
+\begin{proof}
+\begin{sloppy}
+Доказательство леммы~\ref{lm:nonullfn}, использующее формулу~\eqref{eq:stdbase}
+и заканчивающееся выключной формулой (обратите внимание на команду
+\verb|\qedhere| в этом случае):
+\begin{equation*}
+f \neq 0. \qedhere%
+\end{equation*}
+\end{sloppy}
+\end{proof}
+\begin{statement}
+\label{st:canonrep}
+Формулировка устверждения о каноническом разложении функции.
+\end{statement}
+\begin{remark*}
+Заметим, что в утверждении~\ref{st:canonrep} канонический вид единственный с
+точностью до перестановки слагаемых.
+\end{remark*}
+\begin{theorem}
+\label{th:fivebf}
+Формулировка теоремы о пяти булевых функциях.
+\end{theorem}
+\begin{proof}
+Текст доказательства теоремы~\ref{th:fivebf}.
+\end{proof}
+\begin{corollary*}
+Формулировка следствия из теоремы~\ref{th:fivebf}.
+\end{corollary*}
+Все перечисленные выше окружения можно использовать как в вариантах со
+звёздочкой, так и без.
+
+Авторы выражают благодарность профессору Шаблонову~С.\,С. за постановку задачи.
+
+% Библиография создается вручную при помощи окружения lmrreferences,
+% которое является разновидностью окружения enumerate
+\begin{ptkreferences}
+\item
+Образцов~О.\,О. Некоторые свойства булевых функций~// Труды XXIV
+Международной конференции <<Достижения отечественной микроэлектроники>>
+(Эмск, 21--27 июня 2197\,г.). Эмск~: ЗАРЯ Пресс, 1990. С.\,502--507.
+\item
+Образцов~О.\,О., Примеров~П.\,П., Шаблонов~Ш.\,Ш. О~свойствах
+$k$"=значных функций~// Вестник Эмского государственного университета. Серия 9.
+Математическая кибернетика. 2015. Т.\,1, №\,2. С.\,33--47.
+\item
+Некоторые свойства автоматных функций~/ О.\,О.~Образцов, П.\,П.~Примеров,
+Ш.\,Ш.~Шаблонов, Т.\,Т.~Трафаретов~// Вестник Юмского государственного
+университета. Серия 7. Дискретная математика. 2016. Т.\,3, №\,1. С.\,10--25.
+\item
+Примеров~П.\,П. Методы оценки сложности недоопределенных булевых
+функций~: дис. \ldots\ канд. физ.-мат. наук~: 01.01.09~/ Примеров Петр
+Петрович. Юмск, 2013. 199\,с.
+\item
+Львовский~С.\,М. Набор и вёрстка в системе \LaTeX. М.~: МЦНМО,
+2006. 448\,с.
+\end{ptkreferences}
+\end{ptkarticle}
diff --git a/article.tex b/article.tex
new file mode 100644
index 0000000..329a5a5
--- /dev/null
+++ b/article.tex
@@ -0,0 +1,127 @@
+\ptkTitle{О пяти свойствах булевых функций}
+\ptkAuthors{Иванов Иван Иванович, Петров Пётр Петрович}{Иваново-Петровский университет}{ivanov@ivan.ru, petrov@petr.ru}
+\ptkAuthors{Сидоров Сидор Сидорович}{Сидоровский университет}{sidorov@sidor.ru}
+
+\begin{ptkarticle}%
+
+Это пример оформления файла статьи. Пример ссылок на статьи~[1,\,2,\,3],
+диссертацию~[4], книгу~[5]. Обратите внимание на оформление ссылки~[3] на
+статью с четырьмя и более авторами. Ссылки на статьи ставятся вручную.
+\begin{figure}[ht]
+\centering
+\includegraphics[width=0.6\textwidth]{bcube}
+\caption{Слои булевого куба.}
+\label{fi:bcube}
+\end{figure}
+
+% Разделы можно задавать командой \section{Название раздела}
+\section{Название раздела}
+% Подраздел можно задать командой \paragraph{Название подраздела.}
+\paragraph{Название подраздела.}
+Предусмотрено применение команд как использующих глобальную систему
+нумерации, так и вариантов этих команд со звёздочкой, которые её не используют.
+Например, ссылка на рисунок~\ref{fi:bcube} сгенерирована автоматически, а на
+рисунок~2 "--- проставлена вручную, при этом в первом случае для задания
+подписи к рисунку используется команда \verb|\caption|, а во втором "---
+команда
+\verb|\caption*|.
+\begin{figure*}[ht]
+\centering
+\includegraphics[width=5cm]{smach}
+\caption*{Рис.~2: Пример инициального автомата.}
+\end{figure*}
+
+% Для вёрстки абзацев с переполнением строк можно
+% воспользоваться окружением sloppypar
+\begin{sloppypar}
+Для создания выключных формул следует пользоваться окружениями \texttt
+{equation}, \texttt {gather}, \texttt {multline} и др. подобными им, а также их
+вариантами со звёздочкой, которые не проставляют номер формулы. При этом не
+следует задавать выключные формулы с использованием команды \verb|$$|,
+в~крайнем случае для этого можно воспользоваться командами \verb|\[|, \verb|\]|
+(не рекомендуется). Например:
+\end{sloppypar}
+\begin{equation}
+\label{eq:stdbase}
+[\{x \&y, x \vee y, {\bar x}\}] = P_2.
+\end{equation}
+Для нумерации формул вручную можно воспользоваться окружением со звёздочкой и
+командой~\verb|\eqno|, при этом ссылка~(2) на такую формулу также проставляется
+вручную:
+\begin{equation*}
+\label{eq:polbase}
+[\{x \oplus y, x \& y, 1, 0 \}] = P_2. \eqno{(2)}
+\end{equation*}
+Тезисы не должны содержать нумерованых формул, на которые нет ссылок в тексте.
+
+% Иногда требуется, чтобы TeX сверстал параграф на одну строку короче.
+% Пример показывает как этого добиться указанием команды \looseness=-1
+% перед завершением следующего параграфа.
+В~тексте предусмотрено использование предопределённых окружений типа
+\texttt{theorem} пакета \texttt{amsthm}. Для определений, лемм, утверждений,
+теорем, замечаний, следствий предлагается использовать окружения следующего
+вида:\looseness=-1
+\begin{definition*}
+Базис $\{x \& y, x \vee y, {\bar x}\}$ называется \emph{стандартным}.
+\end{definition*}
+\begin{lemma}
+\label{lm:nonullfn}
+Формулировка леммы о ненулевой функции.
+\end{lemma}
+\begin{proof}
+\begin{sloppy}
+Доказательство леммы~\ref{lm:nonullfn}, использующее формулу~\eqref{eq:stdbase}
+и заканчивающееся выключной формулой (обратите внимание на команду
+\verb|\qedhere| в этом случае):
+\begin{equation*}
+f \neq 0. \qedhere%
+\end{equation*}
+\end{sloppy}
+\end{proof}
+\begin{statement}
+\label{st:canonrep}
+Формулировка устверждения о каноническом разложении функции.
+\end{statement}
+\begin{remark*}
+Заметим, что в утверждении~\ref{st:canonrep} канонический вид единственный с
+точностью до перестановки слагаемых.
+\end{remark*}
+\begin{theorem}
+\label{th:fivebf}
+Формулировка теоремы о пяти булевых функциях.
+\end{theorem}
+\begin{proof}
+Текст доказательства теоремы~\ref{th:fivebf}.
+\end{proof}
+\begin{corollary*}
+Формулировка следствия из теоремы~\ref{th:fivebf}.
+\end{corollary*}
+Все перечисленные выше окружения можно использовать как в вариантах со
+звёздочкой, так и без.
+
+Авторы выражают благодарность профессору Шаблонову~С.\,С. за постановку задачи.
+
+% Библиография создается вручную при помощи окружения lmrreferences,
+% которое является разновидностью окружения enumerate
+\begin{ptkreferences}
+\item
+Образцов~О.\,О. Некоторые свойства булевых функций~// Труды XXIV
+Международной конференции <<Достижения отечественной микроэлектроники>>
+(Эмск, 21--27 июня 2197\,г.). Эмск~: ЗАРЯ Пресс, 1990. С.\,502--507.
+\item
+Образцов~О.\,О., Примеров~П.\,П., Шаблонов~Ш.\,Ш. О~свойствах
+$k$"=значных функций~// Вестник Эмского государственного университета. Серия 9.
+Математическая кибернетика. 2015. Т.\,1, №\,2. С.\,33--47.
+\item
+Некоторые свойства автоматных функций~/ О.\,О.~Образцов, П.\,П.~Примеров,
+Ш.\,Ш.~Шаблонов, Т.\,Т.~Трафаретов~// Вестник Юмского государственного
+университета. Серия 7. Дискретная математика. 2016. Т.\,3, №\,1. С.\,10--25.
+\item
+Примеров~П.\,П. Методы оценки сложности недоопределенных булевых
+функций~: дис. \ldots\ канд. физ.-мат. наук~: 01.01.09~/ Примеров Петр
+Петрович. Юмск, 2013. 199\,с.
+\item
+Львовский~С.\,М. Набор и вёрстка в системе \LaTeX. М.~: МЦНМО,
+2006. 448\,с.
+\end{ptkreferences}
+\end{ptkarticle}
diff --git a/bcube.png b/bcube.png
new file mode 100644
index 0000000..596af92
--- /dev/null
+++ b/bcube.png
Binary files differ
diff --git a/ptk20main.pdf b/ptk20main.pdf
new file mode 100644
index 0000000..0beb2a4
--- /dev/null
+++ b/ptk20main.pdf
Binary files differ
diff --git a/ptk20main.tex b/ptk20main.tex
new file mode 100644
index 0000000..8db1e1e
--- /dev/null
+++ b/ptk20main.tex
@@ -0,0 +1,568 @@
+\documentclass[14pt,twoside,a4paper]{extreport}
+
+% = Шрифты и языки =
+\usepackage[T1,T2A]{fontenc}
+\usepackage[utf8]{inputenc}
+\usepackage[english,russian]{babel}
+% = Пакеты для общих настроек сборника =
+\usepackage[%
+ a4paper,%
+ includehead,%
+ left=2cm,%
+ top=2cm,%
+ right=2cm,%
+ bottom=2cm,%
+ headheight=0.7cm,%
+ headsep=0.3cm,%
+ footskip=1.6cm%
+ ]{geometry}
+\usepackage{import}
+\usepackage{fancyhdr}
+\usepackage{enumitem}
+% \usepackage{setspace}
+\usepackage{etoolbox}
+\usepackage{titlesec}
+\usepackage{caption}
+\usepackage{iflang}
+
+% = Пакеты для удобства написания статей =
+\usepackage{amsmath}
+\usepackage{amssymb}
+\usepackage{amscd}
+\usepackage{amsthm}
+\usepackage{mathtools}
+\usepackage{bm}
+\usepackage{graphicx}
+\usepackage{listings}
+\usepackage[all]{xy}
+\usepackage{url}
+\usepackage{array}
+\usepackage{tabularx}
+\usepackage{booktabs}
+\usepackage{xstring}
+\makeatletter
+% = Отступ первой строки абзаца - 15 пунктов =
+\setlength{\parindent}{15pt}
+% = Интервалы возле пунктуации - такие же, как между словами =
+\frenchspacing
+% = Страницы не растягиваются вертикально для подгона высоты, завершаются как есть =
+\raggedbottom
+% = Внешний вид колонтитулов =
+\pagestyle{fancy}%
+\fancyhead{}%
+\fancyfoot{}%
+\fancyhead[LE,RO]{\normalsize \thepage}%
+\fancyhead[RE,LO]{\leftmark}
+\def\mylib@d@header{}
+\fancypagestyle{plain}{%
+\fancyhead{}%
+\fancyfoot{}%
+\fancyhead[LE,RO]{\normalsize \thepage}%
+\fancyhead[RE,LO]{\leftmark}
+}
+% = Формат заголовков =
+% - Секции и параграфы - жирное выделение.
+% - Подсекции и подпараграфы запрещены.
+% - Отступы вокруг заголовка параграфа: слева как в начале абзаца, сверху 0, справа 4 пункта
+\titleformat{\section}{\bfseries}{}{0pt}{}
+\titleformat{\paragraph}[runin]{\bfseries}{}{0pt}{}
+\undef{\subsection}
+\undef{\subsubsection}
+\undef{\subparagraph}
+\titlespacing*{\paragraph}{\parindent}{0pt}{4pt}
+% = Настройки нумерации списков =
+\setlist[enumerate]{%
+ leftmargin=*,%
+ topsep=4pt plus 2pt minus 2pt,%
+ partopsep=2pt plus 1pt minus 1pt,%
+ parsep=2pt plus 1pt,%
+ itemsep=2pt plus 1pt%
+}
+\setlist[itemize]{%
+ label={---},%
+ leftmargin=*,%
+ topsep=4pt plus 2pt minus 2pt,%
+ partopsep=2pt plus 1pt minus 1pt,%
+ parsep=2pt plus 1pt,%
+ itemsep=2pt plus 1pt%
+}
+% = Большие штрафы - практически запреты - на разрывы =
+% Строк у математических операторов и отношений, одной строки абзаца от остальных =
+\binoppenalty=10000
+\relpenalty=10000
+\@clubpenalty=10000
+\clubpenalty=10000
+\widowpenalty=10000
+% = Вертикальные отступы вокруг equation и align =
+\AtBeginDocument{%
+ \abovedisplayskip=6pt plus 4pt minus 3pt
+ \belowdisplayskip=6pt plus 4pt minus 3pt
+ \abovedisplayshortskip=3pt plus 6pt minus 1pt
+ \belowdisplayshortskip=3pt plus 6pt minus 1pt
+}
+% = Сноски "нумеруются" особыми символами =
+\renewcommand{\thefootnote}{\fnsymbol{footnote}}
+% = Указатель в массовой версии =
+
+% = Распложение текста в содержании =
+
+% = Математические окружения: теорема, лемма, определение, утверждение, замечание, следствие =
+\newtheorem{definition}{\protect\mylib@name@definition}
+\newtheorem*{definition*}{\protect\mylib@name@definition}
+\newtheorem{theorem}{\protect\mylib@name@theorem}
+\newtheorem*{theorem*}{\protect\mylib@name@theorem}
+\newtheorem{lemma}{\protect\mylib@name@lemma}
+\newtheorem*{lemma*}{\protect\mylib@name@lemma}
+\newtheorem{statement}{\protect\mylib@name@statement}
+\newtheorem*{statement*}{\protect\mylib@name@statement}
+\newtheorem{remark}{\protect\mylib@name@remark}
+\newtheorem*{remark*}{\protect\mylib@name@remark}
+\newtheorem{corollary}{\protect\mylib@name@corollary}
+\newtheorem*{corollary*}{\protect\mylib@name@corollary}
+%\setlocalecaption - вроде не нужно, см. доки "babel"
+\newcommand{\mylib@name@definition}{}
+\newcommand{\mylib@name@theorem}{}
+\newcommand{\mylib@name@lemma}{}
+\newcommand{\mylib@name@statement}{}
+\newcommand{\mylib@name@remark}{}
+\newcommand{\mylib@name@corollary}{}
+\newcommand{\mylib@name@references}{}
+\newcommand{\mylib@name@toc}{}
+\addto\captionsenglish{%
+ \renewcommand{\mylib@name@definition}{Definition}%
+ \renewcommand{\mylib@name@theorem}{Theorem}%
+ \renewcommand{\mylib@name@lemma}{Lemma}%
+ \renewcommand{\mylib@name@statement}{Statement}%
+ \renewcommand{\mylib@name@remark}{Remark}%
+ \renewcommand{\mylib@name@corollary}{Corollary}%
+ \renewcommand{\mylib@name@references}{References}%
+ \renewcommand{\mylib@name@toc}{Contents}
+}
+\addto\captionsrussian{%
+ \renewcommand{\mylib@name@definition}{Определение}%
+ \renewcommand{\mylib@name@theorem}{Теорема}%
+ \renewcommand{\mylib@name@lemma}{Лемма}%
+ \renewcommand{\mylib@name@statement}{Утверждение}%
+ \renewcommand{\mylib@name@remark}{Замечание}%
+ \renewcommand{\mylib@name@corollary}{Следствие}%
+ \renewcommand{\mylib@name@references}{Список литературы}%
+ \renewcommand{\mylib@name@toc}{Содержание}
+}
+% = Поправка к форме нескольких математических символов =
+\let\le\leqslant
+\let\leq\leqslant
+\let\ge\geqslant
+\let\geq\geqslant
+\let\emptyset\varnothing
+% = Знак № в команде \No =
+\providecommand\No{№}
+
+% = Данные =
+
+% = Команды для окружений секции и статьи =
+
+\newcommand{\mylib@papers@section@start}{%
+ \mylib@general@reset%
+ \mylib@papers@reset%
+}
+
+\newcommand{\mylib@papers@section@end}{}
+
+\newcommand{\mylib@papers@article@start}{%
+ \pagebreak[2]%
+ \mylib@lang@start%
+ \begin{mylib@env@unique@labref}%
+ \noindent%
+ \mylib@papers@title@place%
+ \nopagebreak%
+ \vskip 6pt\relax%
+ \@afterheading% TODO так ли это надо?
+ \mylib@papers@author@place%
+ \nopagebreak%
+ \@afterheading% TODO так ли это надо?
+ \mylib@papers@author@info@place%
+ \mylib@papers@shauthor@set@header%
+ \mylib@papers@shauthor@add@to@index%
+ \mylib@papers@add@to@toc%
+ \mylib@toc@suppress%
+ \nopagebreak%
+ \medskip%
+ \@afterheading% TODO так ли это надо?
+}
+
+\newcommand{\mylib@papers@article@end}{%
+ \mylib@toc@section%
+ \end{mylib@env@unique@labref}%
+ \mylib@lang@end%
+ \mylib@general@reset%
+ \mylib@papers@reset%
+}
+
+% = Остальные команды =
+
+% * Добавить статью в содержание согласно текущим названию и списку авторов из колонтитула
+\newcommand{\mylib@papers@add@to@toc}{%
+ \addcontentsline{toc}{section}{%
+ \textit{\mylib@d@shauthors}\newline%
+ {\protect\def\\{\relax}\protect\def\'{\relax} \mylib@d@title}%
+ }%
+}
+
+% * Добавить сокращённые записи авторов в индекс (авторский указатель)
+\newcommand{\mylib@papers@shauthor@add@to@index}{%
+ \mylib@u@count@and@do{mylib@c@author}{}{%
+ \index{\csuse{mylib@d@shauthor@\arabic{mylib@c@u@cad}}}%
+ }%
+}
+
+% Нарисовать информацию об авторах
+\newcommand{\mylib@papers@author@info@place}{%
+ {\footnotesize%
+ \ifnumgreater{\value{mylib@c@author@info}}{1}{%
+ \noindent%
+ \begin{tabularx}{\textwidth}{lX}%
+ \mylib@u@count@and@do{mylib@c@author@info}{}{%
+ \arabic{mylib@c@u@cad}&%
+ \csuse{mylib@d@author@affiliation@\arabic{mylib@c@u@cad}}; %
+ \csuse{mylib@d@author@contacts@\arabic{mylib@c@u@cad}}\\%
+ }%
+ \end{tabularx}%
+ }{%
+ \noindent%
+ \csuse{mylib@d@author@affiliation@1}; %
+ \csuse{mylib@d@author@contacts@1}%
+ }%
+ \par}%
+}
+
+% * Нарисовать полные ФИО авторов статьи
+\newcommand{\mylib@papers@author@place}{%
+ \ifnumequal{\value{mylib@c@author}}{0}{%
+ \GenericError{}{Авторы статьи не заданы!}{}{Задайте хотя бы одного автора статьи с помощью команды \detokenize{\ptkAuthors}}%
+ }{}%
+ {\centering\bf%
+ \mylib@u@count@and@do{mylib@c@author}{, }{%
+ \mbox{\csuse{mylib@d@author@\arabic{mylib@c@u@cad}}}%
+ \ifnumgreater{\value{mylib@c@author@info}}{1}{%
+ \textsuperscript{\csuse{mylib@d@author@footmark@\arabic{mylib@c@u@cad}}}%
+ }{}%
+ }%
+ \par}%
+}
+
+% * Нарисовать название статьи
+\newcommand{\mylib@papers@title@place}{%
+ \vskip 12pt plus 6pt minus 3pt\relax%
+ \vglue 4pt plus 2pt minus 2pt\relax%
+ {\leftskip=1.5\parindent\relax%
+ \rightskip=1.5\parindent\relax%
+ \vbox{\centering\sffamily\bfseries\boldmath\Large \mylib@d@title}%
+ }%
+}
+
+% * Сбросить информацию о статье: титул, авторы, язык, нумерация и т.д.
+\newcommand{\mylib@papers@reset}{%
+ \def\mylib@d@shauthors{}%
+ \def\mylib@d@shauthors@short{}%
+ \setcounter{figure}{0}%
+ \setcounter{equation}{0}%
+ \setcounter{definition}{0}%
+ \setcounter{theorem}{0}%
+ \setcounter{lemma}{0}%
+ \setcounter{statement}{0}%
+ \setcounter{remark}{0}%
+ \setcounter{corollary}{0}%
+}
+
+% * Обновить запись авторов в верхнем колонтитуле
+\newcommand{\mylib@papers@shauthor@set@header}{%
+ \mylib@u@ea{\mylib@header@set}{\mylib@d@shauthors@short}%
+}
+
+% = Команды непосредственно для окружения =
+
+\newcommand{\mylib@plenary@section@start}{%
+ \newpage%
+ \addcontentsline{toc}{section}{Информация о прочитанных пленарных докладах}%
+ \mylib@header@set{Пленарные доклады}%
+ {\bfseries\Huge\noindent%
+ Информация о прочитанных пленарных докладах%
+ \par}%
+}
+
+\newcommand{\mylib@plenary@section@end}{}
+
+\newcommand{\mylib@plenary@article@start}{%
+ \mylib@lang@start%
+ \bigskip%
+ \mylib@plenary@authorandinfo@place%
+ \par%
+ \nopagebreak%
+ \@afterheading%
+ \mylib@plenary@title@place%
+ \par%
+ \nopagebreak%
+ \@afterheading%
+}
+
+\newcommand{\mylib@plenary@article@end}{%
+ \mylib@lang@end%
+ \mylib@general@reset%
+}
+
+
+% = Остальные команды =
+
+% * Нарисовать авторов и информацию о них (города)
+\newcommand{\mylib@plenary@authorandinfo@place}{%
+ \noindent%
+ \mylib@u@count@and@do{mylib@c@author}{, }{%
+ \textbf{\csuse{mylib@d@author@\arabic{mylib@c@u@cad}}}%
+ }%
+ \ (%
+ \mylib@u@count@and@do{mylib@c@author@info}{, }{%
+ \csuse{mylib@d@author@affiliation@\arabic{mylib@c@u@cad}}%
+ }%
+ ).%
+}
+
+% * Нарисовать название доклада
+\newcommand{\mylib@plenary@title@place}{%
+ \noindent%
+ \textit{\mylib@d@title}.%
+}
+
+
+% = Название статьи =
+
+% * Установить название статьи #1
+\newcommand{\mylib@title@set}[1]{%
+ \gdef\mylib@d@title{#1}%
+}
+
+% * Сбросить название статьи
+\newcommand{\mylib@title@reset}{%
+ \mylib@title@set{\GenericError{}{Название статьи не задано!}{}{Задайте название с помощью команды \detokenize{\ptkTitle}.}}%
+}
+
+
+% = Авторы =
+
+% * Служебные счётчики
+\newcounter{mylib@c@author}
+\newcounter{mylib@c@author@info}
+
+% * Добавить полные ФИО автора с привязкой к последней добавленной информации об авторе
+\newcommand{\mylib@author@add}[1]{%
+ \stepcounter{mylib@c@author}%
+ \csdef{mylib@d@author@\arabic{mylib@c@author}}{#1}%
+ \csedef{mylib@d@author@footmark@\arabic{mylib@c@author}}{\arabic{mylib@c@author@info}}%
+}
+
+% * Добавить информацию об авторе: #1 - аффилиация, #2 - почта (контакты)
+\newcommand{\mylib@author@info@add}[2]{%
+ \stepcounter{mylib@c@author@info}%
+ \csdef{mylib@d@author@affiliation@\arabic{mylib@c@author@info}}{#1}%
+ \csdef{mylib@d@author@contacts@\arabic{mylib@c@author@info}}{#2}%
+}
+
+% * Сбросить информацию об авторах
+\newcommand{\mylib@author@reset}{%
+ \setcounter{mylib@c@author}{0}%
+ \setcounter{mylib@c@author@info}{0}%
+}
+
+
+% = Содержание =
+
+% * Дальше не добавлять ничего в содержание
+\newcommand{\mylib@toc@suppress}{%
+ \addtocontents{toc}{\protect\setcounter{tocdepth}{0}}%
+}
+
+% * Дальше добавлять всё в содержание как обычно (только секции)
+\newcommand{\mylib@toc@section}{%
+ \addtocontents{toc}{\protect\setcounter{tocdepth}{1}}%
+}
+
+
+% = Язык =
+
+% * Язык сборника по умолчанию - русский (последний среди перечисленного в пакете babel)
+\def\mylib@d@lang@default{russian}
+
+% * Установить язык статьи
+\newcommand{\mylib@lang@set}[1]{%
+ \gdef\mylib@d@lang{#1}%
+ \ifdefequal{\mylib@d@lang}{\mylib@d@lang@default}{%
+ \gdef\mylib@lang@start{}%
+ \gdef\mylib@lang@end{}%
+ }{%
+ \gdef\mylib@lang@start{\begin{otherlanguage}{#1}}%
+ \gdef\mylib@lang@end{\end{otherlanguage}}%
+ }%
+}
+
+% * Сбросить язык статьи
+\newcommand{\mylib@lang@reset}{%
+ \mylib@u@ea{\mylib@lang@set}{\mylib@d@lang@default}%
+}
+
+
+% = Колонтитулы =
+
+% * Установить #1 в верхний колонтитул
+\newcommand{\mylib@header@set}[1]{%
+ \markboth{#1}{}%
+}
+
+% * Сбросить верхний колонтитул
+\newcommand{\mylib@header@reset}{%
+ \mylib@header@set{}%
+}
+
+
+% = Метки и ссылки =
+
+% * Счётчик окружений ..article для уникализации меток
+\newcounter{mylib@c@article@number}
+\setcounter{mylib@c@article@number}{0}
+
+% * Окружение, внутри которого ссылки уникализируются
+\newenvironment{mylib@env@unique@labref}{%
+ \let\mylib@label@old\label%
+ \let\mylib@ltx@label@old\ltx@label%
+ \let\mylib@ref@old\ref%
+ \def\label##1{\mylib@label@old{\arabic{mylib@c@article@number}@##1}}%
+ \def\ltx@label##1{\mylib@ltx@label@old{\arabic{mylib@c@article@number}@##1}}%
+ \def\ref##1{\mylib@ref@old{\arabic{mylib@c@article@number}@##1}}%
+}{%
+}
+
+
+% = Сброс всего =
+
+% * Сброс названия статьи, авторов, информации об авторах, языка
+\newcommand{\mylib@general@reset}{
+ \mylib@title@reset%
+ \mylib@author@reset%
+ \mylib@lang@reset%
+}
+
+
+% = Вспомогательные технические макросы =
+
+% * \mylib@u@count@and@do{couname}{sep}{body} - посчитать в счётчике mylib@c@u@cad от 1 до значения счётчика couname включительно, для каждого отсчитываемого значения выполнить body, и между каждой парой соседних body выполнить sep
+\newcounter{mylib@c@u@cad}
+\newcommand{\mylib@u@count@and@do}[3]{%
+ \setcounter{mylib@c@u@cad}{0}%
+ \mylib@u@count@and@do@single{#3}%
+ \mylib@u@count@and@do@rest{#1}{#2}{#3}%
+}
+\newcommand{\mylib@u@count@and@do@single}[1]{%
+ \stepcounter{mylib@c@u@cad}%
+ #1%
+}
+\newcommand{\mylib@u@count@and@do@rest}[3]{%
+ \ifnumgreater{\value{#1}}{\value{mylib@c@u@cad}}{%
+ #2%
+ \mylib@u@count@and@do@single{#3}%
+ \mylib@u@count@and@do@rest{#1}{#2}{#3}%
+ }{%
+ }%
+}
+
+% * \mylib@u@ea{arg1}{arg2} -> arg1A2, где A2 - результат одного раскрытия arg2
+\newcommand{\mylib@u@ea}[2]{%
+ \expandafter \mylib@u@ea@swap%
+ \expandafter{%
+ #2%
+ }{%
+ #1%
+ }%
+}
+\newcommand{\mylib@u@ea@swap}[2]{%
+ #2{#1}%
+}
+
+% * Главное окружение
+\newenvironment{ptkarticle}{%
+ \stepcounter{mylib@c@article@number}%
+ \mylib@article@start%
+}{%
+ \mylib@article@end%
+}
+% * Указать, что статья английская
+% Если не указано, то она русская
+\newcommand{\ptkEnglishPaper}{%
+ \mylib@lang@set{english}%
+}
+% * Указать название статьи
+% \ptkTitle{О ловле кабанов в тундре}
+\newcommand{\ptkTitle}[1]{%
+ \mylib@title@set{#1}%
+}
+% * Указать очередных авторов с аффилиацией и контактами
+% \ptkAuthors[Иванов~И.\,И., Петров~П.\,П.]{Иванов Иван Иванович, Петров Пётр Петрович}{МГУ}{ivanov@cs.msu.ru, petrov@cs.msu.ru}
+% Если необязательного аргумента нет, то сокращение создаётся из полного имени
+\newcommand{\ptkAuthors}[4][]{%
+ % Аргумент #1 обрабатывается отдельно в Python с установкой макросов mylib@d@shauthor@N.
+ \mylib@author@info@add{#3}{#4}%
+ \forcsvlist{\mylib@author@add}{#2}%
+}
+% * Окружение списка литературы
+\newenvironment{ptkreferences}{%
+ \pagebreak[1]%
+ \medskip%
+ \noindent%
+ {\scshape\large \mylib@name@references}%
+ \par\nopagebreak%
+ \smallskip%
+ \@afterheading%
+ \begin{enumerate}[label={[\arabic*]},leftmargin=*]%
+ \sloppy%
+}{%
+ \end{enumerate}%
+}
+
+% = Данные =
+
+% * Счётчик уровня вложенности секций
+\newcounter{mylib@c@section@level}
+\setcounter{mylib@c@section@level}{0}
+
+% = Окружения =
+
+% * Окружение секции
+\newenvironment{mylib@section}[1][papers]{%
+ \stepcounter{mylib@c@section@level}%
+ \csdef{mylib@d@section@tmp@\arabic{mylib@c@section@level}}{#1}
+ \csuse{mylib@#1@section@start}%
+ \letcs\mylib@article@start{mylib@#1@article@start}%
+ \letcs\mylib@article@end{mylib@#1@article@end}%
+}{%
+ \csuse{mylib@\csuse{mylib@d@section@tmp@\arabic{mylib@c@section@level}}@section@end}%
+ \addtocounter{mylib@c@section@level}{-1}%
+}
+
+% = Код на исполнение =
+
+% * По умолчанию, если нет секций, окружение ..article отвечает тому, что написано в сниппете sec/paper (т.е. это по умолчанию статья)
+\let\mylib@article@start\mylib@papers@article@start
+\let\mylib@article@end\mylib@papers@article@end
+
+% * Сбросить всё для первой статьи
+\mylib@papers@section@start
+
+
+\makeatother
+
+
+\begin{document}
+
+\begin{mylib@section}[papers]
+ \import{}{article.tex}
+\end{mylib@section}
+
+
+\end{document}
diff --git a/smach.jpg b/smach.jpg
new file mode 100644
index 0000000..216fe27
--- /dev/null
+++ b/smach.jpg
Binary files differ