Showing posts with label computer science. Show all posts
Showing posts with label computer science. Show all posts

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 для создания презентаций.

Friday, June 12, 2009

Bachelor Thesis in Computer Science. Part 1

Finally, my bachelor thesis has come to an end! And now I am going to publish the most interesting stuff I've done. Let me introduce you CamTrack, a simple OpenCV based tool that can be used to control your desktop using webcam. There is nothing breaking new in there (it is only a bachelor thesis and in Ukraine it is not something difficult). But I think, it can be a strong open source competitor to the CamSpace software.





You can find the source code on bitbucket. Or use direct link to download latest version. Don't hesitate to ask if you have any problems with installation.

If you're interested in this software or if you want to take part in it - please contact me.

Announcement for russian readers: I am also going to publish my thesis papers and give some suggestions about writing thesis using LaTeX. Stay tuned.