Сайт FSA
18.03.2011

Верстаем диплом в LaTeX

Настал момент, когда мне потребовалось писать дипломный проект в университете. Естественным требованием было соблюдение ГОСТ при оформлении. Word был отметён сразу, т.к. я обычно работаю в Linux. OpenOffice.org/LibreOffice несмотря на то, что были удобнее, тоже не совсем устраивали. Для написания диплома выбрал LaTeX. Опыта работы с ним было довольно мало (делал всего одну контрольную в нём). Но не смотря на сжатые сроки я всё-таки решился набирать диплом именно в нём. Для всех желающих приведу сборник рецептов для написания диплома.

Шаблон документа ЕСКД

Первое, что пришлось найти - шаблон, соответствующий ГОСТам. Был выбран eskdx, имеющийся в составе TeX-Live. Создаём шаблон нашего будущего документа:

\documentclass[russian,utf8,floatsection,equationsection]{eskdtext}
% Объявляем документ класса eskdtext (подробнее можно узнать из описания пакета eskdx)
% russian - текст на русском языке, utf8 - кодировка документа UTF-8
% floatsection - нумерация таблиц и рисунков с учётом номера главы, equationsection - то же для формул
\usepackage{longtable} % В документе используем пакет longtable для создания таблиц
\usepackage{graphicx} % Используем графику в документе

\usepackage{mathtext} % Русские буквы в формулах
\usepackage[T2A]{fontenc}

\ESKDdocName{Проект сети широкополосного доступа на базе FTTH в г. Тавда}
\ESKDsignature{ДИПЛОМНЫЙ ПРОЕКТ}

\ESKDdepartment{
Государственное образовательное учреждение высшего профессионального образования
}
\ESKDcompany{
<<Сибирский государственный университет телекоммуникаций и информатики>>

(ГОУ ВПО <<СибГУТИ>>)
}
\ESKDauthor{Федотов~С.\,А.} % "Разраб." в штампе на листе содержания
\ESKDchecker{Иванов И.И.} % "Пров."  в штампе на листе содержания
\ESKDnormContr{Петров П.П.} % "Н. контр." в штампе на листе содержания
\ESKDapprovedBy{Сидоров С.С.}% "Увт." в штампе на листе содержания
\ESKDdate{2011/01/17} % Дата (Год отображается на титульной странице)
\ESKDsignature{ФЗО 210406.052 ПЗ} % Шифр
\ESKDletter{}{У}{} % Литеры

\renewcommand{\ESKDtheTitleFieldX}{
Новосибирск

\ESKDtheYear~г.} % Шаблон для отображения в нижней части титульного листа города и года

\ESKDtitleApprovedBy{Зав. Кафедрой}{Лебедянцев В.В.} % Утверждаю
\ESKDtitleDesignedBy{Дипломник}{Федотов С.А.} % Подпись и дата под заголовком документа

\renewcommand{\baselinestretch}{1} % Задаём единичный межстрочный интервал

\ESKDsectStyle{section}{\normalsize} % Заголовки глав обычным шрифтом
\ESKDsectStyle{subsection}{\normalsize} % Заголовки разделов обычным шрифтом
\ESKDsectStyle{subsubsection}{\normalsize} % Заголовки подразделов обычным шрифтом

\begin{document} % Маркер начала документа
\maketitle % Создать титульный лист на основе данных в заголовке документа
\tableofcontents % Создать содержание документа (потребуется дважды сформировать документ для того,
% чтобы номера страниц сформировались правильно)
\newpage % Начать следующий раздел с новой страницы
\section{Введение} % Первая глава - "Введение"
% Содержание документа
Это демонстрационный документ. Чтобы начать следующий абзац необходимо
вставить пустую строку.

Этот текст будет уже в следующем абзаце.
\end{document} % Маркер завершения документа

После сборки документа мы получаем готовый документ, содержащий 3 страницы: титульный лист, содержание и лист с заголовком “Введение”. Следует обратить внимание на то, чтобы все ссылки в документе и страницы в содержании были правильными документ нужно собирать дважды. При первом проходе в служебные файлы записываются все необходимые данные для ссылок. После второго прохода имеем готовый документ.

Создание списков

Приведу пример маркированного списка:

\begin{itemize}
\item микро сеть SDH (Micro SDH);
\item активные сети Ethernet (Active Ethernet, AE);
\item пассивные оптические сети (Passeve Optical Network, PON).
\end{itemize}

Нумерованные списки делаются так же просто

\begin{enumerate}
\item уровень --- сплиттеры 1x2, оконеченные разъемами SC в проектируемом оптическом кроссе ODF ТТ-120 на ОПТС-5.
\item уровень --- сплиттеры 1x32, в проектируемых оптических шкафах типа ШКОН, устанавливаемых в подъездах жилых домов.
\end{enumerate}

Вставка рисунков

Вставить рисунки в текст можно следующим образом:

\begin{figure}[h!]
\center{\includegraphics[width=0.8\linewidth]{mini-breacout}}
\caption{Кабель MINI-BREACOUT}
\label{ris:mini-breacout}
\end{figure}

Вставка рисунка

Рисунок должен находиться в папке с документом tex и назваться так, как указано в строке 1: mini-breacout.png или mini-breacout.jpg. Размер рисунка можно изменять с помощью параметра width, в данном случае его ширина будет равна 0,8 от ширины строки документа. Рисунок будет размещён по центру и ему будет присвоен номер (в соответствии с заданным в заголовке документа параметром он будет содержать номер главы и номер рисунка в главе). Название рисунка задаётся в параметре \caption. Ссылаться на номер документа можно по имени ris:mini-breacout, который задан в параметре \label.

TeX-Live пытается разместить рисунки сверху страницы. Иногда может оказаться неудобным, что рисунок будет размещён на следующей странице. Изменить это можно перемещая данный код вверх по абзацам.

Если вы желаете разместить рисунок на отдельном листе, то достаточно убрать параметр [h!].

Иногда рисунки могут быть очень широкими и их выгодно будет размещать с поворотом на 90 градусов относительно листа. Сделать это можно следующим образом:

\begin{sidewaysfigure}
\center{\includegraphics[width=0.8\linewidth]{vnutridom}}
\caption{Внутридомовая разводка ВОК}
\label{ris:vnutridom}
\end{sidewaysfigure}

Рисунок в поворотом на 90 градусов

Параметры рисунка остаются теми же самыми. Рисунок в данном случае будет размещён на отдельном листе.

Вставка формул

Вставить в текст нумерованную формулу с расшифровкой входящих в неё параметров можно следующим образом:

\begin{equation}\label{eq:Pobsh}
P_{общ}=P_{затух} + P_S + P_C + P_З + P_P
\end{equation}
% Далее идёт расшифровка параметров, входящих в формулу
\begin{ESKDexplanation}
\item где $P_{общ}$ --- общие потери в линиях связи;
\item $P_{затух}$ --- полное затухание в оптическом волокне;
\item $P_S$ --- полные потери в сростках;
\item $P_C$ --- полные потери в соединителях;
\item $P_З$ --- потери в разветвителях волокон;
\item $P_P$ --- потери на эксплуатационный запас.
\end{ESKDexplanation}

Формула с нумерацией

Блок “ESKDexplanation” представляет из себя простой список без маркеров и нумерации. Как вы наверно обратили внимание, вставить формулу в текст можно просто выделив знаками $ с обоих сторон.

Для того, чтобы вставить в текст расчёты (формулы без нумерации) их необходимо оформить следующим образом:

$$
I_{сумм} = I_{пр} + I_{сущ} + I_{зб} = 3,15 + 10 + 18 = 31,15 А
$$

Формула без нумерации

Вставка таблиц

Таблицы в LaTeX наверное одни из самых сложных вещей. Для таблиц существует несколько готовых пакетов: tabular, tabularx, longtable. Я остановил свой выбор на longtable, т.к. он позволяет создавать многостраничные таблицы.

\begin{longtable}{|p{8,5cm}|p{4cm}|p{4cm}|} % описываем 3 столбца таблицы с выравниванием по ширине и указанной ширины
% Вертикальная черта означает, что между полями должна быть вертикальная черта - разделитель
% Заголовок таблицы на первой странице:
\caption{Исходные данные по работе <<Проект сети широкополосного доступа на базе FTTH>>\label{tab:econ_effect}}\\
\hline % Вставляем горизонтальную линию
Наименование показателей & Единица измерения & Значение показателей \\
\hline
\endfirsthead % Всё, что расположено выше считается заголовком таблицы и отображается на первой странице
% Для второй и последующих страниц подменяем наименование таблицы в соответствии с требованиями:
\caption*{Продолжение таблицы \ref{tab:econ_effect}}\\
\hline
Наименование показателей & Единица измерения & Значение показателей \\
\endhead % Всё что выше будет вставляться как заголовок на 2 и последующих страницах
\hline
1 Объем услуг & & \\ % Содержимое ячеек разделяется знаком &, завершение строки таблицы \\
\hline
Сеть доступа: & абонентов & 384 \\
\hline
В том числе: & & \\
\hline
юридические лица & абонентов & 38 \\
\hline
физические лица & абонентов & 346 \\
\hline
Доля физических лиц & & \\
\hline
Пакет №1 (высокоскоростной Интернет) & \% & 65 \\
\hline
Пакет №2 (Интернет + IP TV) & \% & 22 \\
\hline
Пакет №3 (Интернет + IP TV + VoD) & \% & 13 \\
\hline
Доля юридических лиц & & \\
\hline
Пакет №1 (Интернет) & \% & 69 \\
\hline
Пакет №2 (IP VPN) & \% & 31 \\
\hline
\end{longtable}

Таблицы

Приложения

Для вставки приложений в документ шаблон eskdx имеет специальное ключевое слово \ESKDappendix.

\ESKDappendix{справочное}{Шкаф ТТ-120\label{app:tt120}}

Приложения

Параметры указывают на тип приложения (в данном случае это справочное приложение) и его название. Кроме этого можно добавить метку для того, чтобы можно было в тексте сделать ссылку на приложение.

При использовании \ESKDappendix вместо стандартного для LaTeX \appendix ссылки на приложения в содержании создаются корректно:

Приложение в содержании

Создание списка литературы

Для создания списка литературы используется окружение thebibliography:

\begin{thebibliography}{00} % 00 влияет на выравнивание номеров записей в списке литературы.
\bibitem{bashilov} Башилов Г. Пассивные оптические сети: возможности и перспективы// GIO. - 2004. - № 12. - с. 2
\bibitem{bykov} Быков Ю.П., Егунов М.М., Ромашова Т.И. Справочные материалы по курсовому и дипломному проектированию. Справочное пособие. Новосибирск: СибГУТИ, 2001 г
\bibitem{eskd} Вайспапир В.Я., Катунин Г.П., Мефодьева Г.Д. Единая система конструкторской документации в студенческих работах
\bibitem{nec-neva} Описание оборудования фирмы «NEC-Нева»
\bibitem{optic} Оптические сети доступа. Teletekno, 2006 № 2.- с. 25; № 3.- с. 21
\bibitem{petrenko} Петренко И.И., Убайдуллаев Р.Р. Пассивные оптические сети PON// Lightwave Russian Edition.- 2004.- № 1.- с. 22;
\bibitem{connect_ru} www.connect.ru PON:многообещающая пассивность
\bibitem{deps_ua} http://www.deps.ua/
\bibitem{gbk_ru} http://www.gbk.ru/
\bibitem{pon_cnews} http://retail.cnews.ru/reviews/free/telecom2004/part2/topology.shtml
\end{thebibliography}

Список литературы


Обратите внимание, что заметки могут обновляться со временем. Это может быть как исправление найденных ошибок, так и доработка содержания с целью более полного раскрытия темы. Информация об изменениях доступна в репозитории на github. Там же вы можете оставить в Issue ваши замечания по данной заметке.


Если данная заметка оказалась вам полезной, можете поблагодарить автора финансово.