|
|
%%% Проверка используемого TeX-движка %%%
|
|
|
\newif\ifxetexorluatex % определяем новый условный оператор (http://tex.stackexchange.com/a/47579)
|
|
|
\ifxetex
|
|
|
\xetexorluatextrue
|
|
|
\else
|
|
|
\ifluatex
|
|
|
\xetexorluatextrue
|
|
|
\else
|
|
|
\xetexorluatexfalse
|
|
|
\fi
|
|
|
\fi
|
|
|
|
|
|
\newif\ifsynopsis % Условие, проверяющее, что документ --- автореферат
|
|
|
|
|
|
\usepackage{etoolbox}[2015/08/02] % Для продвинутой проверки разных условий
|
|
|
\providebool{presentation}
|
|
|
|
|
|
\usepackage{comment} % Позволяет убирать блоки текста (добавляет
|
|
|
% окружение comment и команду \excludecomment)
|
|
|
|
|
|
%%% Поля и разметка страницы %%%
|
|
|
\usepackage{pdflscape} % Для включения альбомных страниц
|
|
|
\usepackage{geometry} % Для последующего задания полей
|
|
|
|
|
|
%%% Математические пакеты %%%
|
|
|
\usepackage{amsthm,amsmath,amscd} % Математические дополнения от AMS
|
|
|
\usepackage{amsfonts,amssymb} % Математические дополнения от AMS
|
|
|
\usepackage{mathtools} % Добавляет окружение multlined
|
|
|
\usepackage{xfrac} % Красивые дроби
|
|
|
\usepackage[
|
|
|
locale = DE,
|
|
|
list-separator = {;\,},
|
|
|
list-final-separator = {;\,},
|
|
|
list-pair-separator = {;\,},
|
|
|
list-units = single,
|
|
|
range-units = single,
|
|
|
range-phrase={\text{\ensuremath{-}}},
|
|
|
% quotient-mode = fraction, % красивые дроби могут не соответствовать ГОСТ
|
|
|
fraction-function = \sfrac,
|
|
|
separate-uncertainty,
|
|
|
]{siunitx}[=v2] % Размерности SI
|
|
|
\sisetup{inter-unit-product = \ensuremath{{}\cdot{}}}
|
|
|
|
|
|
% Кириллица в нумерации subequations
|
|
|
% Для правильной работы требуется выполнение сразу после загрузки пакетов
|
|
|
\patchcmd{\subequations}{\def\theequation{\theparentequation\alph{equation}}}
|
|
|
{\def\theequation{\theparentequation\asbuk{equation}}}
|
|
|
{\typeout{subequations patched}}{\typeout{subequations not patched}}
|
|
|
|
|
|
%%%% Установки для размера шрифта 14 pt %%%%
|
|
|
%% Формирование переменных и констант для сравнения (один раз для всех подключаемых файлов)%%
|
|
|
%% должно располагаться до вызова пакета fontspec или polyglossia, потому что они сбивают его работу
|
|
|
\newlength{\curtextsize}
|
|
|
\newlength{\bigtextsize}
|
|
|
\setlength{\bigtextsize}{13.9pt}
|
|
|
|
|
|
\makeatletter
|
|
|
%\show\f@size % неплохо для отслеживания, но вызывает стопорение процесса,
|
|
|
% если документ компилируется без команды -interaction=nonstopmode
|
|
|
\setlength{\curtextsize}{\f@size pt}
|
|
|
\makeatother
|
|
|
|
|
|
%%% Кодировки и шрифты %%%
|
|
|
\ifxetexorluatex
|
|
|
\ifpresentation
|
|
|
\providecommand*\autodot{} % quick fix for polyglossia 1.50
|
|
|
\fi
|
|
|
\PassOptionsToPackage{no-math}{fontspec} % https://tex.stackexchange.com/a/26295/104425
|
|
|
\usepackage{polyglossia}[2014/05/21] % Поддержка многоязычности
|
|
|
% (fontspec подгружается автоматически)
|
|
|
\else
|
|
|
%%% Решение проблемы копирования текста в буфер кракозябрами
|
|
|
\ifnumequal{\value{usealtfont}}{0}{}{
|
|
|
\input glyphtounicode.tex
|
|
|
\input glyphtounicode-cmr.tex %from pdfx package
|
|
|
\pdfgentounicode=1
|
|
|
}
|
|
|
\usepackage{cmap} % Улучшенный поиск русских слов в полученном pdf-файле
|
|
|
\ifnumequal{\value{usealtfont}}{2}{}{
|
|
|
\defaulthyphenchar=127 % Если стоит до fontenc, то переносы
|
|
|
% не впишутся в выделяемый текст при
|
|
|
% копировании его в буфер обмена
|
|
|
}
|
|
|
\usepackage{textcomp}
|
|
|
\usepackage[T1,T2A]{fontenc} % Поддержка русских букв
|
|
|
\ifnumequal{\value{usealtfont}}{1}{% Используется pscyr, при наличии
|
|
|
\IfFileExists{pscyr.sty}{\usepackage{pscyr}}{} % Подключение pscyr
|
|
|
}{}
|
|
|
\usepackage[utf8]{inputenc}[2014/04/30] % Кодировка utf8
|
|
|
\usepackage[english, russian]{babel}[2014/03/24]% Языки: русский, английский
|
|
|
\makeatletter\AtBeginDocument{\let\@elt\relax}\makeatother % babel 3.40 fix
|
|
|
\ifnumequal{\value{usealtfont}}{2}{
|
|
|
% http://dxdy.ru/post1238763.html#p1238763
|
|
|
\usepackage[scaled=0.914]{XCharter}[2017/12/19] % Подключение русифицированных шрифтов XCharter
|
|
|
\usepackage[charter, vvarbb, scaled=1.048]{newtxmath}[2017/12/14]
|
|
|
\ifpresentation
|
|
|
\else
|
|
|
\setDisplayskipStretch{-0.078}
|
|
|
\fi
|
|
|
}{}
|
|
|
\fi
|
|
|
|
|
|
%%% Оформление абзацев %%%
|
|
|
\ifpresentation
|
|
|
\else
|
|
|
\indentafterchapter % Красная строка после заголовков типа chapter
|
|
|
\usepackage{indentfirst}
|
|
|
\fi
|
|
|
|
|
|
%%% Цвета %%%
|
|
|
\ifpresentation
|
|
|
\else
|
|
|
\usepackage[dvipsnames, table, hyperref]{xcolor} % Совместимо с tikz
|
|
|
\fi
|
|
|
|
|
|
%%% Таблицы %%%
|
|
|
\usepackage{longtable,ltcaption} % Длинные таблицы
|
|
|
\usepackage{multirow,makecell} % Улучшенное форматирование таблиц
|
|
|
\usepackage{tabu, tabulary} % таблицы с автоматически подбирающейся
|
|
|
% шириной столбцов (tabu обязательно
|
|
|
% до hyperref вызывать)
|
|
|
\makeatletter
|
|
|
%https://github.com/tabu-issues-for-future-maintainer/tabu/issues/26
|
|
|
\@ifpackagelater{longtable}{2020/02/07}{
|
|
|
\def\tabuendlongtrial{%
|
|
|
\LT@echunk \global\setbox\LT@gbox \hbox{\unhbox\LT@gbox}\kern\wd\LT@gbox
|
|
|
\LT@get@widths
|
|
|
}%
|
|
|
}{}
|
|
|
\makeatother
|
|
|
|
|
|
\usepackage{threeparttable} % автоматический подгон ширины подписи таблицы
|
|
|
|
|
|
%%% Общее форматирование
|
|
|
\usepackage{soulutf8}% Поддержка переносоустойчивых подчёркиваний и зачёркиваний
|
|
|
\usepackage{icomma} % Запятая в десятичных дробях
|
|
|
|
|
|
%%% Оптимизация расстановки переносов и длины последней строки абзаца
|
|
|
\IfFileExists{impnattypo.sty}{% проверка установленности пакета impnattypo
|
|
|
\ifluatex
|
|
|
\ifnumequal{\value{draft}}{1}{% Черновик
|
|
|
\usepackage[hyphenation, lastparline, nosingleletter, homeoarchy,
|
|
|
rivers, draft]{impnattypo}
|
|
|
}{% Чистовик
|
|
|
\usepackage[hyphenation, lastparline, nosingleletter]{impnattypo}
|
|
|
}
|
|
|
\else
|
|
|
\usepackage[hyphenation, lastparline]{impnattypo}
|
|
|
\fi
|
|
|
}{}
|
|
|
|
|
|
%% Векторная графика
|
|
|
|
|
|
\usepackage{tikz} % Продвинутый пакет векторной графики
|
|
|
\usetikzlibrary{chains} % Для примера tikz рисунка
|
|
|
\usetikzlibrary{shapes.geometric} % Для примера tikz рисунка
|
|
|
\usetikzlibrary{shapes.symbols} % Для примера tikz рисунка
|
|
|
\usetikzlibrary{arrows} % Для примера tikz рисунка
|
|
|
|
|
|
%%% Гиперссылки %%%
|
|
|
\ifxetexorluatex
|
|
|
\let\CYRDZE\relax
|
|
|
\fi
|
|
|
\usepackage{hyperref}[2012/11/06]
|
|
|
|
|
|
%%% Изображения %%%
|
|
|
\usepackage{graphicx}[2014/04/25] % Подключаем пакет работы с графикой
|
|
|
\usepackage{caption} % Подписи рисунков и таблиц
|
|
|
\usepackage{subcaption} % Подписи подрисунков и подтаблиц
|
|
|
\usepackage{pdfpages} % Добавление внешних pdf файлов
|
|
|
|
|
|
%%% Счётчики %%%
|
|
|
\usepackage{aliascnt}
|
|
|
\usepackage[figure,table]{totalcount} % Счётчик рисунков и таблиц
|
|
|
\usepackage{totcount} % Пакет создания счётчиков на основе последнего номера
|
|
|
% подсчитываемого элемента (может требовать дважды
|
|
|
% компилировать документ)
|
|
|
\usepackage{totpages} % Счётчик страниц, совместимый с hyperref (ссылается
|
|
|
% на номер последней страницы). Желательно ставить
|
|
|
% последним пакетом в преамбуле
|
|
|
|
|
|
%%% Продвинутое управление групповыми ссылками (пока только формулами) %%%
|
|
|
\ifpresentation
|
|
|
\else
|
|
|
\usepackage[russian]{cleveref} % cleveref имеет сложности со считыванием
|
|
|
% языка из babel. Такое решение русификации вывода выбрано вместо
|
|
|
% определения в documentclass из опасности что-то лишнее передать во все
|
|
|
% остальные пакеты, включая библиографию.
|
|
|
|
|
|
% Добавление возможности использования пробелов в \labelcref
|
|
|
% https://tex.stackexchange.com/a/340502/104425
|
|
|
\usepackage{kvsetkeys}
|
|
|
\makeatletter
|
|
|
\let\org@@cref\@cref
|
|
|
\renewcommand*{\@cref}[2]{%
|
|
|
\edef\process@me{%
|
|
|
\noexpand\org@@cref{#1}{\zap@space#2 \@empty}%
|
|
|
}\process@me
|
|
|
}
|
|
|
\makeatother
|
|
|
\fi
|
|
|
|
|
|
\usepackage{placeins} % для \FloatBarrier
|
|
|
|
|
|
\ifnumequal{\value{draft}}{1}{% Черновик
|
|
|
\usepackage[firstpage]{draftwatermark}
|
|
|
\SetWatermarkText{DRAFT}
|
|
|
\SetWatermarkFontSize{14pt}
|
|
|
\SetWatermarkScale{15}
|
|
|
\SetWatermarkAngle{45}
|
|
|
}{}
|
|
|
|
|
|
%%% Цитата, не приводимая в автореферате:
|
|
|
% возможно, актуальна только для biblatex
|
|
|
%\newcommand{\citeinsynopsis}[1]{\ifsynopsis\else ~\cite{#1} \fi}
|
|
|
|
|
|
% если текущий процесс запущен библиотекой tikz-external, то прекомпиляция должна быть включена
|
|
|
\ifdefined\tikzexternalrealjob
|
|
|
\setcounter{imgprecompile}{1}
|
|
|
\fi
|
|
|
|
|
|
\ifnumequal{\value{imgprecompile}}{1}{% Только если у нас включена предкомпиляция
|
|
|
\usetikzlibrary{external} % подключение возможности предкомпиляции
|
|
|
\tikzexternalize[prefix=images/cache/,optimize command away=\includepdf] % activate! % здесь можно указать отдельную папку для скомпилированных файлов
|
|
|
\ifxetex
|
|
|
\tikzset{external/up to date check={diff}}
|
|
|
\fi
|
|
|
}{}
|