20081206

Диссертация в LaTeX

Мой коллега-блоггер Миша Конник задумал титанический труд на тему «Как написать диплом в LaTeX». Который по задумке должен стать циклом статей, охватывающий вопросы от установки до вёрстки в LaTeX. Некоторые статьи уже готовы. Кстати, один подобный цикл статей, но более общего характера, уже существует.

Мне лично представляется, что при такой широте охвата материала работа эта необъятная. И если это будет коллективная работа, то место ей в Викиучебниках. Особенно в том, что касается вёрстки в LaTeX. Слишком много возможностей, слишком разные у всех задачи и тексты. Вопросы же установки и настройки во многом зависят от используемой ОС и используемого дистрибутива LaTeX. Остаются вопросы специфичные для написания именно диплома (или подобных работ: курсовых, диссертаций, отчётов). Я же в своём блоге стараюсь разрешать конкретные, частные вопросы.

В этой заметке я поделюсь кое-каким опытом написания кандидатской диссертации в LaTeX. Многое пригодится и тем, кто пишет дипломы. Писал я её три года назад, пользовался тогда teTeX (теперь TeXLive). Однако почти всё должно работать и сейчас. Во всяком случае, мой исходник по-прежнему компилируется PDFLaTeX. Об использовании русского языка в PDFLaTeX см. эту заметку. Не утверждаю, что всё сделал правильно или наилучшим образом. Очень может быть, что для ряда задач появились с тех пор лучшие решения.

Оставлю также в стороне нетехнические вопросы: что писать, как писать и как организовать работу. Вот тут есть некоторые рекомендации (на английском), многое применимо и в отечественных условиях.

Из технических вопросов, можно выделить:
  1. Вопросы соответствия требованиям по оформлению работы (как правило, они определяют используемый шрифт, макет страницы, отступы, порядок нумерации объектов, страниц, формат подписей, макет титульной страницы); тут лучше положиться на советы своего научного руководителя.
    В случае диссертаций, в соответствии с Положением о порядке присуждения ученых степеней, утверждены формы титульных листов диссертации и автореферата, а оформление диссертации «должно соответствовать требованиям, устанавливаемым Министерством образования Российской Федерации»
  2. Вопросы соответствия нормам отечественной полиграфии (не секрет, что ЛаТэХ по-умолчанию набирает «по-американски», в том числе формулы и математику), тут для начала можно посмотреть примеры правильного набора у К. Воронцова; вот некоторые из отличий:
    1. кавычки у нас используются французские или немецкие;
    2. иначе набирается тире (во всех случаях);
    3. отличается ряд математических символов, например, знаки нестрогих неравенств;
    4. используется другое начертание греческих букв;
    5. отличаются обозначения ряда функций и ряд других математических обозначений;
    6. знак «равно» дублируется при разрыве формулы на две строки;
    7. первый абзац набирается тоже с отступом;

  3. Оформление списка литературы регламентируется соответствующими ГОСТами. С 2009-го года, кстати, вступает в действие новый ГОСТ Р 7.0.5-2008. Думаю, обновлённые стили BiBTeX скоро появятся.
Лирическое отступление. Эта статья написана для блога советы.блогспот.ком и распространяется на условиях лицензии CC-BY-NC-SA 3.0, т. е. требует ссылки на оригинал и запрещает коммерческое использование текста.
В своей работе я использовал класс документа dissert.cls. Теперь его первоисточник что-то не находится, так что выкладываю ту версию, которую использовал сам. Однако очень может быть, что класс rusthesis.cls и лучше. Я его не пробовал. Есть ещё пакет disser, который служит тем же целям. Его я тоже не пробовал.

В плане размера шрифтов, межстрочного интервала* и полей я полагался на настройки пакета dissert.cls. Однако эти вещи легко настраиваются и вручную, см. заметки изменение межстрочного интервала в LaTeX и как задать поля страницы в LaTeX.
*) Да, я считаю, что полуторный, а тем более двойной, интервал — это некрасиво, разве что удобно, чтобы делать правки на бумаге. Однако таков жанр.
Набирал текст я в кодировке CP1251, в основном с расчётом на то, чтобы в процессе работы можно было спокойно давать исходник пользователям Windows. Однако это практически не потребовалось.
\usepackage[cp1251]{inputenc}
\usepackage[russian]{babel}
\usepackage[T2A]{fontenc}
Также я пользовался пакетом шрифтов pscyr, пользоваться которым я, однако, не рекомендую, по причине неясной лицензии на распространение этих шрифтов. К счастью, свободно-распространяемых шрифтов с тех пор прибавилось.

Переопределение формата нумерации в списке литературы:
\makeatletter
\renewcommand\@biblabel[1]{#1.}
\makeatother
Надпись «Стр.» над номерами страниц в таблице с оглавлением (только для класса документа dissert.cls):
\renewcommand\contentsdesc{Стр.}
Первый абзац с отступом:
\usepackage{indentfirst}
Далее, я переопределял формат подписей под иллюстрациями:
%different caption style: ``Fig.~N.~Caption text''
\makeatletter
\long\def\@makecaption#1#2{%
\vskip\abovecaptionskip
\sbox\@tempboxa{#1.~#2}%
\ifdim \wd\@tempboxa >\hsize
#1.~#2\par
\else
\global \@minipagefalse
\hb@xt@\hsize{\hfil\box\@tempboxa\hfil}%
\fi
\vskip\belowcaptionskip}
\makeatother
Также я использовал пакет hangcaption, чтобы обеспечить «висящие» номера иллюстраций. Это выглядело примерно так:

________________
,́ `.
| |
| @}---,--`-- |
| |
`.________________,'


Рис. 1.1. Что значит имя? Роза пахнет розой,
хоть розой назови её, хоть нет.
Я также включал макрос \reversemarginpar, поскольку широким в диссертации является именно левое поле.

Для организации иллюстраций несколько в одной я использовал пакет subfigure. Соответственно, чтобы включить нумерацию внутренних элементов иллюстрации русскими буквами («Рис. 3.14 (д)»):
\renewcommand{\thesubfigure}{(\asbuk{subfigure})~}
Я опущу все макросы, касающиеся набора математики. С высокой вероятностью, у моих читателей они будут другие.

Шаблон же основной части документа у меня был такой:
\begin{document}

\tableofcontents
\clearpage

\include{intro}
\clearpage

\include{ch02}
\clearpage

\include{ch03}
\clearpage

\chapter*{Заключение}
\addcontentsline{toc}{chapter}{Заключение}
Текст заключения.
\clearpage

\listoffigures
\addcontentsline{toc}{chapter}{Список иллюстраций}
\clearpage

\listoftables
\addcontentsline{toc}{chapter}{Список таблиц}
\clearpage

\renewcommand{\bibname}{Список использованных источников}
\addcontentsline{toc}{chapter}{Список использованных источников}
\bibliographystyle{gost71u}
\bibliography{thesis}
\end{document}
Как можно заметить, я вынес все главы в отдельные файлы (вообще, такой подход можно рекомендовать для набора любых больших документов). Правильные заголовки всяких «списков» в оглавление вносил вручную (команды \addcontentsline). Ещё изменил название списка литературы. А формат списка литературы определил с помощью стиля BiBTeX gost71. В случае, если это не годится, можно создать собственный стиль BiBTeX.

В будущем, возможно, я дополню эту заметку особенностями набора математики (пока можно обратиться к примерам К. Воронцова), некоторыми особенностями набора автореферата (который набирается на формате A5) и шаблоном титульного листа.

Хотя этот текст распространяется, как обычно в моём блоге, по лицензии CC-BY-NC-SA (т.е. со ссылкой на советы.блогспот.ком и не для коммерческого использования), но если кто-то хочет использовать его в Викиучебниках или других проектах Wikimedia Foundation, то в этом случае можно распространять на условиях GFDL.

Дополнение 2009-10-18: нашёл ещё серию статей Павла Самолысова «Верстаем диплом в LaTeX». Может кому пригодится.