diff options
| author | Andrew Guschin <guschin@altlinux.org> | 2024-09-30 14:41:58 +0400 |
|---|---|---|
| committer | Andrew Guschin <guschin@altlinux.org> | 2024-09-30 14:41:58 +0400 |
| commit | 75005684ef2a7bab31a7546caa8506ed83e7aeab (patch) | |
| tree | 8c3e881e6a908fc85e410af0c4b693c2a97baf23 | |
init
| -rw-r--r-- | article-sample.tex | 127 | ||||
| -rw-r--r-- | article.tex | 127 | ||||
| -rw-r--r-- | bcube.png | bin | 0 -> 41539 bytes | |||
| -rw-r--r-- | ptk20main.pdf | bin | 0 -> 201330 bytes | |||
| -rw-r--r-- | ptk20main.tex | 568 | ||||
| -rw-r--r-- | smach.jpg | bin | 0 -> 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 Binary files differnew file mode 100644 index 0000000..596af92 --- /dev/null +++ b/bcube.png diff --git a/ptk20main.pdf b/ptk20main.pdf Binary files differnew file mode 100644 index 0000000..0beb2a4 --- /dev/null +++ b/ptk20main.pdf 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 Binary files differnew file mode 100644 index 0000000..216fe27 --- /dev/null +++ b/smach.jpg |