From d67b93ec7819285a6737ee81c25c0d250c3c94f3 Mon Sep 17 00:00:00 2001 From: Sergey Nazaryev Date: Mon, 29 May 2017 21:40:53 +0000 Subject: Initial release --- .gitignore | 10 + Makefile | 20 + README.md | 57 + example.bib | 97 + example.tex | 123 ++ examples/avrpinout.png | Bin 0 -> 86403 bytes examples/code.c | 51 + examples/schematic.svg | 5643 ++++++++++++++++++++++++++++++++++++++++++++++++ examples/text.md | 95 + preamble.tex | 208 ++ 10 files changed, 6304 insertions(+) create mode 100644 .gitignore create mode 100644 Makefile create mode 100644 README.md create mode 100644 example.bib create mode 100644 example.tex create mode 100644 examples/avrpinout.png create mode 100644 examples/code.c create mode 100644 examples/schematic.svg create mode 100644 examples/text.md create mode 100644 preamble.tex diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..38dfab5 --- /dev/null +++ b/.gitignore @@ -0,0 +1,10 @@ +*.pdf +*.aux +*.log +*.swp +*.toc +*.out +*.bbl +*.blg +*.md.tex +svg-inkscape diff --git a/Makefile b/Makefile new file mode 100644 index 0000000..1e3aa35 --- /dev/null +++ b/Makefile @@ -0,0 +1,20 @@ +TARGET = example.pdf +SRC = example.tex + +PARTS = examples/text.md.tex \ + preamble.tex \ + example.bib + +all: $(TARGET) + +$(TARGET): $(SRC) $(PARTS) + pdflatex --shell-escape $< $@ + bibtex example + pdflatex --shell-escape $< $@ + pdflatex --shell-escape $< $@ + +%.md.tex: %.md + pandoc -f markdown -t latex $< > $@ + +clean: + rm -rf *.blg *.bbl *.pdf *.aux *.log *.toc *.out parts/*.md.tex parts/*.aux svg-inkscape images/*.pdf_tex images/*.pdf diff --git a/README.md b/README.md new file mode 100644 index 0000000..2c46fb8 --- /dev/null +++ b/README.md @@ -0,0 +1,57 @@ +LaTeX-шаблон для написания ВКР для ИТМО (кафедра ИПМ) +===================================================== + +Это шаблон для бакалаврской работы с примерами наиболее популярных +элементов в ВКР (таблицы, рисунки, листинг кода, приложения, список +источников, список требований) + +Технические требования +---------------------- + + - TeX Live (`texlive-full` для Debian, `texlive-most` для Arch Linux) + - пакет `pscyr` для TeX Live, для русского Times New Roman; + - словарь переносов `ruenhyph` вместо `ruhyphen`: это нужно для того, + чтобы английские слова переносились; + - (опционально) `inkscape` — поддержка SVG; + - (опционально) `pandoc` — поддержка Markdown (уберите из Makefile + text.md.tex, если нет pandoc и не хочется markdown'а). + +Установка pscyr +--------------- + +Для Debian Jessie: установить [пакет][1] + +Подключение ruenhyph +-------------------- + +```bash +find /usr/share/ -name 'loadhyph-ru.tex' -print0 \ + | sudo xargs -0 sed -i 's/ruhyphen/ruenhyph/g' + +sudo fmtutil-sys --all +``` + +Сборка +------ + +```bash +make +``` + +Текущие баги +------------ + + - 42pt ­ захардкоженное значение для высоты в 3 интервала + (14pt*3), я не уверен, что это нормальное решение + + - В оглавлении левое поле страницы относится к правому как 2.7 : 1, + хотя должно 2.5 : 1 + + - Не получается автоматически переводить в верхний регистр + наименования разделов в ToC, поэтому названия разделов + захардкоженны в верхнем регистре + + - Листинг всё ещё не "Рисунок" и не имеет единый счётчик с + figure + +[1]: https://people.debian.org/~sgolovan/debian/pool/main/tex/tex-pscyr/tex-pscyr_0.4d~beta9-1_all.deb diff --git a/example.bib b/example.bib new file mode 100644 index 0000000..90466dc --- /dev/null +++ b/example.bib @@ -0,0 +1,97 @@ +@misc {wsnbguir, + title = "Сидоренко, А.В. Использование беспроводных сенсорных сетей в задачах мониторинга техногенных объектов", + note = "/ А. В. Сидоренко, К. С. Мулярчик // Доклады БГУИР. - 2015. - № 7 (93). - С. 77 - 82." +} + +@misc {meshrouting, + title = "{Mesh wireless sensor networks: Choosing the appropriate technology [Электронный ресурс]}", + note = "// Industrial Embedded Computing. Интернет-журн. — 21.06.09. — Режим доступа: \url{http://industrial.embedded-computing.com/article-id/?4098=} (дата обращения: 02.02.2017)" +} + +@misc {atmelcrystal, + title = "{Atmel 8-bit Microcontroller with 4/8/16/32KBytes In-System Programmable Flash. Datasheet [Электронный ресурс]}", + note = ".- стр. 33. — Режим доступа: \url{http://www.atmel.com/images/Atmel-8271-8-bit-AVR-Microcontroller-ATmega48A-48PA-88A-88PA-168A-168PA-328-328P_datasheet_Complete.pdf}" +} + +@Article{ieee802154, + author={}, + journal={IEEE Std. 802.15.4-2011 (Revision of IEEE Std. 802.15.4-2006)}, + title={{IEEE Standard Local and metropolitan area networks - Part 15.4: Low-Rate Wireless Personal Area Networks (LR-WPANs)}}, + year={2011}, + isbn = { ISBN 978-0-7381-6683-4 STD97126}, + pdfisbn = {ISBN 978-0-7381-6684-1 STDPD97126}, + month = {September}, +} + +@misc {digimanual, + title = "{XBee/XBee-PRO DigiMesh 2.4. User Guide, стр. 59-68 [Электронный ресурс]}", + note = "// Digi International Inc. — 2009. — Режим доступа: \url{https://www.digi.com/resources/documentation/digidocs/pdfs/90000991.pdf}" +} + +@misc {zigexploit, + title = "{Ms. Smith. Researchers exploit ZigBee security flaws that compromise security of smart homes [Электронный ресурс]}", + note = "// Network World. Интернет-журн. — 21.08.2015. — Режим доступа: \url{http://www.networkworld.com/article/2969402/microsoft-subnet/researchers-exploit-zigbee-security-flaws-that-compromise-security-of-smart-homes.html} (дата обращения: 02.02.2017)" +} + +@techreport{rfc4944, + author = {G. Montenegro and N. Kushalnagar and J. Hui and D. Culler}, + title = {Transmission of IPv6 Packets over IEEE 802.15.4 Networks}, + howpublished = {Internet Requests for Comments}, + type = {RFC}, + number = {4944}, + year = {2007}, + month = {September}, + issn = {2070-1721}, + publisher = {RFC Editor}, + institution = {RFC Editor}, + note = {URL: \url{http://www.rfc-editor.org/rfc/rfc4944.txt} (дата обращения: 21.01.2017)}, +} + +@misc {arduino, + title = "{Building an Arduino on a Breadboard [Электронный ресурс]}", + note = "// Arduino. — 2008. — Режим доступа: \url{https://www.arduino.cc/en/Main/Standalone}" +} + +@misc {iec62591, + title = "{IEC62591. Industrial communication networks — Wireless communication network and communication profiles - WirelessHART}" +} + +@misc {ism868, + title = "Частотный диапазон 868 МГц. Безлицензионные стандарты [Электронный ресурс]", + note = "// Профессиональные средства радиосвязи. — Режим доступа: \url{http://mobilradio.ru/information/vocabulary/band-868.htm}" +} + +@ARTICLE {zhaolliugchenjzhangzw2009, + author = "Zhao, L. and Liu, G. and Chen. J. and Zhang, Z.W.", + title = "Flooding and directed diffusion routing algorithm in wireless sensor networks", + journal = "Ninth International Conference on Hybrid Intelligent Systems", + year = "2009", + pages = "235-239" +} + +@ARTICLE {gossip, + author = "Pishyar, S. and Ghiasian, A. and Khayyambashi, M.R.", + title = "{Gossip-based Energy Aware Routing Algorithm for Wireless Sensor Network}", + journal = "International Journal of Computer Networks and Communications Security", + volume = 3, + number = 4, + month = "apr", + year = "2015", + pages = "164-172" +} + +@ARTICLE {uflood, + author = "Subramanian, J. and Morris, R. and Balakrishnan H.", + title = "{UFlood: High-Throughput Flooding over Wireless Mesh Networks}", + publisher = "Proc. of IEEE INFOCOM", + year = "2012" +} + +@ARTICLE {routingsurvey, + title = "A survey of routing algorithms for wireless sensor networks", + author = "Narasimha Datta, N. and Gopinath, K.", + year = "2015", + journal = "J. Indian Inst. Sci.", + volume = 86, + pages = "569–598" +} diff --git a/example.tex b/example.tex new file mode 100644 index 0000000..9f41db9 --- /dev/null +++ b/example.tex @@ -0,0 +1,123 @@ +\documentclass[a4paper,14pt]{extarticle} + +\input{preamble} + +\begin{document} +\tableofcontents +\newpage + +\phantomsection +\section*{ВВЕДЕНИЕ} +\addcontentsline{toc}{section}{ВВЕДЕНИЕ} +% введение +\newpage + +\section{АНАЛИЗ ТЕХНОЛОГИЙ БЕСПРОВОДНОЙ СВЯЗИ} +% Пример вставки Markdown (при этом сам markdown может иметь +% LaTeX-вставки) +\input{examples/text.md} +\newpage + +\section{АРХИТЕКТУРА КОНТРОЛЛЕРА} + +\subsection{Пример растрового изображения} + +\begin{figure}[H] + \centering + \includegraphics[width=150mm,scale=0.5]{examples/avrpinout} + \caption{Схема выводов ATMEGA328P-PU} + \label{avrpinout} +\end{figure} + +\newpage + +\section{РАЗРАБОТКА УСТРОЙСТВА} + +\subsection{Пример ссылки на рисунок} + +Я ссылаюсь на рисунок \ref{avrpinout}. + +\subsection{Пример таблицы} + +\begin{table}[H] +\caption{Предельная толщина препятствия} +\label{penetration} +\begin{tabular}{|l|l|l|} +\hline +\textbf{Частоты} & \textbf{Кирпичная стена, м.} & \textbf{Бетон, м.} \\ \hline +434 МГц & 4.3 & 0.47 \\ \hline +868 МГц & 2.18 & 0.24 \\ \hline +2.4 ГГц & 0.78 & 0.09 \\ \hline +\end{tabular} +\end{table} + +\subsection{Пример нумерованного списка} + +\begin{enumerate} + \item Список доступных устройств для авторизованного; + \item Кнопка получения дополнительной информации по. +\end{enumerate} + +\subsection{Пример ненумерованного списка} + +\begin{itemize} + \item список доступных устройств для авторизованного; + \item кнопка получения дополнительной информации по. +\end{itemize} + +\subsection{Пример ссылки на источник} + +Я ссылаюсь на atmelcrystal, описанный в example.bib. \cite{atmelcrystal} + +\newpage + +\phantomsection +\section*{ЗАКЛЮЧЕНИЕ} +\addcontentsline{toc}{section}{ЗАКЛЮЧЕНИЕ} +% заключение +\newpage + +\phantomsection +\renewcommand{\refname}{СПИСОК ИСПОЛЬЗОВАННЫХ ИСТОЧНИКОВ} +\addcontentsline{toc}{section}{СПИСОК ИСПОЛЬЗОВАННЫХ ИСТОЧНИКОВ} +\bibliographystyle{unsrtnat} +\bibliography{example} +\newpage + +\phantomsection +\section*{СЛОВАРЬ ТЕРМИНОВ} +\addcontentsline{toc}{section}{СЛОВАРЬ ТЕРМИНОВ} + +\begin{itemize} + \item термин 1: Его значение записывается с заглавной буквы; + \item термин 2: Его значение записывается с заглавной буквы. +\end{itemize} + +\newpage + +\begin{landscape} +\phantomsection +\section*{ПРИЛОЖЕНИЕ А} +\addcontentsline{toc}{section}{ПРИЛОЖЕНИЕ А} +\label{appa} + +% Пример вставки SVG-изображения (для работы нужен установленный +% inkscape) +%\begin{figure}[H] +% \centering +% \includesvg[width = 700pt]{examples/schematic} +% \caption{Электрическая принципиальная схема разработанного контроллера} +% \label{schematic} +%\end{figure} +\end{landscape} + +\phantomsection +\section*{ПРИЛОЖЕНИЕ Б} +\addcontentsline{toc}{section}{ПРИЛОЖЕНИЕ Б} +\label{appb} + +\includecode{c}{examples/code.c}{Код приёмопередатчика} + +\newpage + +\end{document} diff --git a/examples/avrpinout.png b/examples/avrpinout.png new file mode 100644 index 0000000..8eb8276 Binary files /dev/null and b/examples/avrpinout.png differ diff --git a/examples/code.c b/examples/code.c new file mode 100644 index 0000000..02102cf --- /dev/null +++ b/examples/code.c @@ -0,0 +1,51 @@ +#include "OSAL.h" +#include "OSAL_PwrMgr.h" + +#include "OSAL_centralBroadcaster.h" +#include "centralBroadcaster.h" + +#include "hal_led.h" +#include "hal_uart.h" +#include "hal_flash.h" +#include "uartManager.h" + +// Simple FIFO based on Ring buffer +#define FIFO(type,size) struct { type ring[size]; unsigned int rd,wp; unsigned char ne;} + +#define FIFO_FLUSH(x) x.wp = x.rd = x.ne = 0 +#define FIFO_SIZE(x) (sizeof(x.ring) / sizeof(*(x.ring))) +#define FIFO_NEXT(x,old) (old >= FIFO_SIZE(x)-1 ? 0 : old+1) + +#define FIFO_EMPTY(x) (!x.ne) + +#define FIFO_RAW(x,i) &x.ring[i] +#define FIFO_FOREACH(x,i) i = x.rd; if(!FIFO_EMPTY(x)) do { +#define FIFO_FOREACH_END(x,i) i = FIFO_NEXT(x,i); } while(i != x.wp); + +#define FIFO_PUT(x,el) { \ + x.ring[x.wp] = el; \ + if(x.rd == x.wp && !FIFO_EMPTY(x)) \ + x.rd = FIFO_NEXT(x,x.rd); \ + x.wp = FIFO_NEXT(x,x.wp); \ + x.ne = 1; \ +} + +#define FIFO_GET(x,el) \ +if(!FIFO_EMPTY(x)) { \ + el = &x.ring[x.rd]; \ + x.rd = FIFO_NEXT(x,x.rd); \ + if(x.rd == x.wp) \ + x.ne = 0; \ +} + +// DJB hash function +uint16 hash_packet(uint8 *payload, int size) +{ + uint16 hash = 5381; + int i; + + for(i = 0; i < size; i++) + hash = ((hash << 5) + hash) + payload[i]; + + return hash; +} diff --git a/examples/schematic.svg b/examples/schematic.svg new file mode 100644 index 0000000..afd933b --- /dev/null +++ b/examples/schematic.svg @@ -0,0 +1,5643 @@ + + + + + + image/svg+xml + + SVG Picture created as vkr.sch.svg date 2017/05/25 01:29:42 + + + + + + SVG Picture created as vkr.sch.svg date 2017/05/25 01:29:42 + Picture generated by Eeschema-SVG + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/examples/text.md b/examples/text.md new file mode 100644 index 0000000..74168f3 --- /dev/null +++ b/examples/text.md @@ -0,0 +1,95 @@ +## Классификация беспроводных технологий + +### Классификация по радиусу действия + +Все стандарты построения беспроводных сетей можно разбить на группы в +зависимости от того, на какой радиус действия каждый стандарт +был спроектирован. Выделяют следующие группы: + + - беспроводные персональные сети; + - беспроводные локальные сети; + - беспроводные городские сети. + +_Беспроводные персональные сети_ используются для обмена информацией +на небольшие расстояние между группой сопряжённых устройств. +_Беспроводные локальные сети_ объединяют устройства на расстояния +обычно до 100 метров. _Беспроводная городская сеть_ оперирует +масштабами города, позволяя передавать данные на расстояния до 10 +километров, в основном для объединения целых районов между собой. + +### Классификация по рабочей частоте + +Большая часть существующих беспроводных систем работает в частотном +диапазоне ISM (Industrial, Scientific and Medical). Это обусловлено +тем, что для использования этой части радиочастотного спектра не +нужно получать лицензию на вещание. + +Выделяют два ISM-диапазона: 2.4ГГц и субгигагерцовые частоты. Полоса +частот 2.4ГГц является универсальной и может быть использована +практически во всех странах. Напротив, список разрешённых диапазонов +субгигагерцовых частот различен для каждой отдельной страны. +\tablename{~\ref{openrf}} содержит наиболее значимые регионы и +разрешённые в них частоты. В таблице \ref{penetration} показано, что +от выбранной рабочей частоты зависит ещё и уровень проницаемости +сквозь преграды. + +\begin{table}[H] +\caption{Разрешённые субгигагерцовые частоты в разных регионах} +\label{openrf} +\begin{tabular}{|l|l|l|} +\hline +\textbf{Регион} & \textbf{Частота} & \textbf{Орган регулирования и стандарт} \\ \hline +США & 902-928 МГц & FCC part 15.247 \\ \hline +Европа & 169 МГц, 868 МГц & ETSI EN 300-220 / Wireless M-Bus \\ \hline +Россия & 433 МГц, 446 МГц, 868 МГц & ГКРЧ, № 08-24-01-001 от 28.04.2008 \\ \hline +Япония & 920 МГц & ARIB T-108 \\ \hline +Китай & 470-510 МГц & SRRC \\ \hline +\end{tabular} +\end{table} + +\begin{table}[H] +\caption{Предельная толщина препятствия для радиосигнала} +\label{penetration} +\begin{tabular}{|l|l|l|} +\hline +\textbf{Частоты} & \textbf{Кирпичная стена, м.} & \textbf{Бетон, м.} \\ \hline +434 МГц & 4.3 & 0.47 \\ \hline +868 МГц & 2.18 & 0.24 \\ \hline +2.4 ГГц & 0.78 & 0.09 \\ \hline +\end{tabular} +\end{table} + +Для беспроводных сенсорных сетей в зависимости от требований +используют как 2.4ГГц, так и субгигагерцовые диапазоны, вследствие +чего необходимо определить преимущества и недостатки обоих. + +#### Диапазон 2.4 ГГц + + - 2.4ГГц — универсальный диапазон, который можно использовать при + разработке устройств, предназначенных для использования во всём + мире; + + - в этой полосе частот работают многие популярные беспроводные + системы, такие как Bluetooth, IEEE 802.15.4 (ZigBee в частности), + Wi-Fi и многие другие, из-за чего при проектировании новых + устройств необходимо учитывать высокий уровень помех; + + - радиоизлучение на частоте 2.4ГГц легко поглощается в среде и + окружающих объектах, что ограничивает этот диапазон. + +#### Субгигагерцовый диапазон + + - по сравнению с СВЧ-диапазоном 2.4ГГц, более длинные волны + субгигарецового диапазона имеют меньшую интенсивность затухания, + соответственно проницаемость сквозь преграды и дальность передачи + сигнала гораздо выше \cite{ism868}; + + - существенно меньшая загруженность диапазона в сравнении с 2.4ГГц; + + - более низкое энергопотребление в сравнении с приёмопередатчиками, + работающими на полосе 2.4ГГц; + + - для разных стран список разрешённых частотных диапазонов может + кардинально различаться, из-за чего, например, разработанное + устройство для рынка США нельзя использовать на территории Европы + без программных и/или аппаратных изменений. diff --git a/preamble.tex b/preamble.tex new file mode 100644 index 0000000..5a62bc6 --- /dev/null +++ b/preamble.tex @@ -0,0 +1,208 @@ +% Документ, по которому в основном мы ориентировались при написании +% этой преамбулы: +% +% http://edu.ifmo.ru/file/pages/14/trebovaniya_k_vypusknym_kvalifikacionnym_rabotam.pdf +% + +% UTF-8, не KOI8-R же +\usepackage[T2A]{fontenc} +\usepackage[utf8]{inputenc} + +% Использовать и русский, и английский в тексте +% Желательно поменять словарь переносов с ruhyphen на ruenhyph +\usepackage[english,russian]{babel} + +% Русский язык — основной +\selectlanguage{russian} + +% Times New Roman для русского языка +% Необходим установленный пакет pscyr +\usepackage{pscyr} +\renewcommand{\rmdefault}{ftm} + +% Полуторный межстрочный интервал +\usepackage[nodisplayskipstretch]{setspace} +\onehalfspacing + +% Правильные поля для диплома +\usepackage[top=20mm, bottom=20mm, left=25mm, right=10mm]{geometry} + +\addto\captionsrussian{ +% подпись "Рисунок" вместо "Рис" + \def\figurename{{Рисунок}} +% ОГЛАВЛЕНИЕ прописными буквами + \renewcommand{\contentsname}{ОГЛАВЛЕНИЕ} +} + +% Каждый пункт оглавления должен быть с отточием +\usepackage{titletoc} + +% Максимальная вложенность содержания (только разделы, подразделы и +% "пункты") +\setcounter{tocdepth}{3} + +% Оглавление должно начинаться на 4 странице +\setcounter{page}{4} + +% Возможность переопределять оглавление и его стиль +\usepackage[titles]{tocloft} + +% Абзацный отступ равен 1.25 см +\parindent=1.25cm + +% Возможность менять регистр текста в UTF-8 +\usepackage{textcase} + +% Формат заголовков +% - Заголовок раздела по центру, кернингом побольше (отсебятина), +% прописными буквами, выделено жирным, X ЗАГОЛОВОК +% - Заголовок подраздела и "пункта" со смещением, как у абзаца, по +% левому краю, выделено жирным, X.Y[.Z] Заголовок +\usepackage{titlesec} +\titleformat{\section}[block]{\centering\bfseries\large} + {\arabic{section}}{1ex}{\MakeUppercase} +\titleformat{\subsection}[block]{\hspace{\parindent}\bfseries\normalsize} + {\arabic{section}.\arabic{subsection}}{1ex}{} +\titleformat{\subsubsection}[block]{\hspace{\parindent}\bfseries\normalsize} + {\arabic{section}.\arabic{subsection}.\arabic{subsubsection}}{1ex}{} + +% TODO: 14pt * 3 = 42pt (три интервала до и после) +\titlespacing*{\section} {0pt}{42pt}{42pt} + +% Номер страницы по середине верхнего поля +\usepackage{fancyhdr} +\pagestyle{fancy} +\fancyhf{} +\fancyhead[C]{\thepage} +\renewcommand{\headrulewidth}{0pt} + +% Если источников несколько, то сжать из [1,2,3,4] в [1-4] +\usepackage[numbers,sort&compress]{natbib} + +% Стиль нумерования в списке использованных источников: [1] -> 1. +\makeatletter +\renewcommand\@biblabel[1]{#1.} +\makeatother + +% Самое длинное тире в качестве разделителя в подписях к рисункам, +% таблицам, листингам и др. +\usepackage{caption} +\DeclareCaptionLabelSeparator{emdash}{ --- } +\captionsetup{labelsep=emdash} + +% Подпись к таблице должна быть по левому краю +\captionsetup[table]{singlelinecheck=false} + +% Сквозная нумерация таблиц, формул, рисунков +\renewcommand{\theequation}{\arabic{equation}} +\renewcommand{\thetable}{\arabic{table}} +\renewcommand{\thefigure}{\arabic{figure}} + +% Добавить абзацный отступ для первых абзацев в section/subsection, +% по умолчанию не добавляется +\usepackage{indentfirst} + +% Возможность вставлять таблицы и рисунки непосредственно там, где +% они определены (аргумент [H]). Нужно, чтобы таблицы и рисунки были +% всегда определены под текстом, где на них ссылаются +\usepackage{float} + +% Обязательно переносить слова, чтобы соблюсти поля документа. Для +% соблюдения полей можно пренебречь правилами для тех слов и +% словосочетаний, о которых не знают словаря переносов (ruhyphen или +% ruenhyph). Оно почему-то работает. Взято с: +% +% http://www.latex-community.org/forum/viewtopic.php?p=70342#p70342 +% +\tolerance 1414 +\hbadness 1414 +\emergencystretch 1.5em +\hfuzz 0.3pt +\widowpenalty=10000 +\vfuzz \hfuzz +\raggedbottom + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%%%%%%%%%%%%%%%%%%%%%%%% Опциональные штуки %%%%%%%%%%%%%%%%%%%%%%%%% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +% Pandoc-specific для Markdown +\def\tightlist{} +\usepackage{multirow} +\usepackage{longtable} +\usepackage{booktabs} + +% Поиск и копипаст по pdf +\usepackage{cmap} + +% Использование графики в pdf +\usepackage[pdftex]{graphicx} + +% Поддержка гиперссылок внутри pdf +\usepackage[pdftex]{hyperref} +\hypersetup{ + unicode=true, + pdftitle={ + }, + pdfauthor={}, + pdfkeywords={ + }, + colorlinks, + citecolor=black, + filecolor=black, + linkcolor=black, + urlcolor=blue +} + +% Разрешить перенос слов в URL'ах после любой буквы, так мы обеспечим +% правильные поля в списке источников и везде, где есть ссылки +\expandafter\def\expandafter\UrlBreaks\expandafter{\UrlBreaks% save the current one + \do\a\do\b\do\c\do\d\do\e\do\f\do\g\do\h\do\i\do\j% + \do\k\do\l\do\m\do\n\do\o\do\p\do\q\do\r\do\s\do\t% + \do\u\do\v\do\w\do\x\do\y\do\z\do\A\do\B\do\C\do\D% + \do\E\do\F\do\G\do\H\do\I\do\J\do\K\do\L\do\M\do\N% + \do\O\do\P\do\Q\do\R\do\S\do\T\do\U\do\V\do\W\do\X% + \do\Y\do\Z} + +% Вставка листингов кода +\usepackage{listings} +\newcommand{\includecode}[3]{\lstinputlisting[caption=#3, escapechar=, style=custom#1]{#2}} + +% Экзотические цвета (оранжевый, фиолетовый и др.) +\usepackage{xcolor} + +% Кастомный стиль подсветки для языка Си +\lstdefinestyle{customc}{ + belowcaptionskip=1\baselineskip, + breaklines=true, + frame=none, + xleftmargin=\parindent, + language=C, + showstringspaces=false, + basicstyle=\normalsize, + keywordstyle=\bfseries\color{green!40!black}, + commentstyle=\itshape\color{purple!40!black}, + identifierstyle=\color{black}, + stringstyle=\color{orange!40!black}, +} + +% Сдвиги для списков +\usepackage{enumitem} +\setlist[enumerate]{topsep=0pt,itemsep=0ex,partopsep=1ex,parsep=1ex} +\setlist[itemize]{itemsep=0ex} + +% Красивый маркер ненумерованного списка в виде тире +\def\labelitemi{--} + +% Просто адекватные отступы (не по ГОСТу) +\titlespacing*{\subsection} {0pt}{\baselineskip}{\baselineskip} +\titlespacing*{\subsubsection}{0pt}{\baselineskip}{\baselineskip} + +% Поддержка SVG +\usepackage{svg} + +% Возможность повернуть любую из страниц +\usepackage{pdflscape} + +% Возможность описывать байтовые структуры +\usepackage{bytefield} -- cgit v1.1