Tuesday, June 16, 2009

Bachelor Thesis in Computer Science. Part 2. Верстка в LaTeX

В предыдущей статье было дано краткое видеоописание программного продукта, который появился в результате написания бакалаврской работы. Во второй части хотелось бы рассказать про вёрстку диплома в LaTeX - ведь именно она заняла большую часть времени, которое я потратил на диплом(в несколько раз больше, чем было затрачено на программу :( ). Для нетерпеливых сразу дам ссылку на конечный вариант (в формате PDF) - скачать(~800kb).
Я уже как-то упоминал про LaTeX. С момента публикации той заметки, я занимался написанием и версткой диплома с использованием этого замечательного инструментария. Я не буду давать подробные описания, но хотелось бы отметить основные пункты. Cкачать исходные тексты можно здесь(~2mb).

Сборка

Для сборки я использовал scons. Рекомендую. Достаточно написать простейший Sconstruct файл:
DEFAULT_TARGET = 'main.dvi'

env=Environment()
env.Alias('dvi', 'main.dvi')
env.Alias('pdf', 'main.pdf')

src=['main.tex','preamble.tex']
main_dvi = env.DVI('main.dvi', src)
main_pdf = env.PDF('main.pdf', src)

Default(DEFAULT_TARGET)
После этого полная сборка выполняется командой scons или scons pdf.

Класс

Для написания диплома был использован видоизменённый rusthesis класс - я назвал его uadiplom. Многие изменения, связанные с требованиями моего ВУЗа были учтены в нём, однако многое было сделано отдельно - с использованием дополнительных пакетов.

Списки TODO

При написании диплома я пользовался замечательным пакетом todonotes, который и вам рекомендую попробовать. Для того, чтобы его использовать, понадобится:
\usepackage[paperwidth=210mm,paperheight=297mm,left=25mm,right=35mm,top=2cm,bottom=2cm]{geometry} % нужно оставить поле справа
\usepackage[colorinlistoftodos, shadow, textwidth=3cm, textsize=tiny]{todonotes} % и установить размер пометок
\usepackage{hyperref} % для ссылок
\hypersetup{colorlinks=true, linkcolor=blue, citecolor=blue, filecolor=blue, urlcolor=blue}
Также для удобства я использовал такие команды:
\newcommand{\toaddtext}[1]{\todo[color=green!40]{#1}}
\newcommand{\toaddref}{\todo[color=red!40]{Добавить ссылку}}
\newcommand{\torewrite}[1]{\todo[color=blue!40]{#1}}
Эти команды можно использовать прямо в тексте. Чтобы сгенерировать список TODO, достаточно вставить команду \listoftodos. Предлагаемые todonotes выглядят красиво и очень удобны.

Настройки заголовков

Одной из норм, которые приняты в моем ВУЗе, являются странноватые подписи к таблицам. А именно - подпись идёт сверху, в две строки, первая из которых - "Таблица ##" курсивом справа, а вторая - название таблицы жирным по центру. Для того, чтобы добиться этого, был использован пакет caption:
\usepackage[labelsep=period,justification=centering]{caption}
\DeclareCaptionLabelFormat{uatablelabelformat}{\hfill\textit{#1~#2}}
\DeclareCaptionFormat{uatableformat}{#1#2\\#3}
\DeclareCaptionTextFormat{uatabletextformat}{\textbf{#1}}
\captionsetup[table]{format=uatableformat,labelformat=uatablelabelformat,textformat=uatabletextformat}

Оформление библиографии

Был использован bibtex. Стиль - модифицированный gost780u (который я назвал uabib). Единственная модификация, которая понадобилась - изменение подхода к аббревиатурам.

Оформление рисунков

Для вставки рисунков были добавлены простенькие шорткаты:
\newcommand{\coolfigure}[3]{\coolwfigure{#1}{#2}{#3}{\textwidth}}
\newcommand{\coolwfigure}[4]{\begin{figure}[!ht]\begin{center}\includegraphics[width=#4]{#1}\end{center}\caption{#2}\label{#3}\end{figure}}
Т.е., для вставки рисунка достаточно указать адрес изображения, название и метку.

Оформление таблиц

Такой же шорткат был создан и для таблиц:
\newcommand{\cooltable}[4]{
\begin{longtable}{#1}
\kill
\caption{#3\label{#2}}\\
\endfirsthead
\kill
\multicolumn{\LT@cols}{c}{\parbox{\textwidth}{\hfill \textit{Продолжение таблицы~\ref{#2}}}}\\
\endhead
#4
\end{longtable}}
Он принял такой вид, чтобы правильно обрабатывать разрывы страниц (с надписью "Продолжение таблицы ##" в правом верхнем углу). Назначение параметров можно понять по представленному коду.

Выводы

LaTeX можно и нужно использовать при написании текстов со сложной версткой. Он очень удобен и обладает неоспоримыми преимуществами, среди которых одним из важнейших является возможность каскадных изменений. Основные неудобства связаны с нежеланием ВУЗов переходить на использование LaTeX. Например, в моем случае пример титулки был выдан в виде .DOC файла(поэтому официальную титулку я делал в OpenOffice, в предложенном архиве - заглушка), а пример рамок для плакатов - вообще в формате Visio. Что уж сетовать на неточность требований и неквалифицированность нормоконтролёра.
Также одним из недостатков LaTeX является его сложность в некоторых вещах по отношению к WYSIWIG редакторам(к примеру, вспомните таблицы). Этот недостаток уравновешивается тем, что квалифицированную помощь всегда можно найти, например, в комнате #latex на freenode. Спасибо за внимание! В следующей части я расскажу про использование beamer для создания презентаций.

0 comments:

Post a Comment