Линукс, Vim, LaTeX, полезные скрипты, визуализация данных, численные расчёты, немного ФП

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». Может кому пригодится.

14 коммент.:

Джус комментирует...

Спасибо за ссылку на документ Воронцова. До многих описанных там вещей в своё время пришлось доходить самому.

lkj12345 комментирует...

я автореферат набирал, как обычно, компилировал в postscript с разрешением 300 dpi, в потом масштабировал на a5 и превращал в книжку, чтобы напечатать и сшить самостоятельно, только для обрезки в типографию пришлось идти - нечем было обрезать готовые авторефераты, скриптами из psutils: psresize и psnup.

Миша.

A.I. комментирует...

«но если кто-то хочет использовать его в Викиучебниках или других проектах Wikimedia Foundation, то в этом случае можно распространять на условиях GFDL.»

Нельзя ограничить места использования лицензии GFDL. Либо GFDL для всех, либо это не GFDL.

jetxee комментирует...

2lkj12345:

Простое масштабирование листа даёт не лучший результат, шрифты будут иметь слишком тонкие линии, не очень красиво выглядеть. А вот для создания брошюр psnup действительно очень полезный инструмент.

2 A.I.:

Нельзя ограничить GFDL после факта публикации. В данный момент материал должен быть вначале внесён в википедию или викиучебник, и я это явно разрешаю (и после этого случае, понятно, можно и где угодно использовать по GFDL). Если никто вносить материал в викиучебники не будет, то при копировании из этого блога, CC-BY-NC-SA как обычно. Основная причина заморочки с NC — я не люблю рекламу и поисковых оптимизаторов.

lkj12345 комментирует...

2 jetxee

при компиляции исходников в postscript 300 dpi, последующем масштабировании a4->a5 и распечатке в разрешении 600 dpi насыщенность шрифтов получается имхо удовлетворительная.

вообще мне лично шрифты cm с кеглем больше 10 всегда казались слишком бледными, поэтому я и диссертацию для распечатки компилировал в 300 dpi, а распечатывал в 600. Получается "посочнее", чем если и компилировать и печатать в разрешении 600 dpi.

для распечатки использoвал gsview+ghostscript

virens комментирует...

Мой коллега-блоггер Миша Конник задумал титанический труд на тему «Как написать диплом в LaTeX».
Сергей, я его не просто задумал, а на пути к осуществлению :-)

Труд, кстати, средней титаничности :-) Дело в том, что у меня валяется куча хаков, трюков и заметок, которые я использую каждый день - всё это свалено в kjots. Соберу всё и это добро - и на блог, чтобы самому потом читать и народ посылать.


Который по задумке должен стать циклом статей, охватывающий вопросы от установки до вёрстки в LaTeX.
Я хочу объединить то, что уже написано, и то, будет, в некое методическое пособие по написанию диплома (и диссера) в латехе.

Это ни разу не пересказ Львовского - только самые необходимые вещи, которые нужны.

Мне лично представляется, что при такой широте охвата материала работа эта необъятная.
Ты удивишься, но статья про набор текста и титульника будет самой большой. Для картинок будет всего 3-4 примера - И ЭТОГО ДОСТАТОЧНО! И не надо читать килотонны Львовского, чтобы просто вставить рисунок.

С формулами то же самое - физикам много не надо.

Слишком много возможностей, слишком разные у всех задачи и тексты.
Нет, возможности одни и те же. Просто я выдаю тот ликбез, с которым можно набрать 90% дипломов и ни разу не глянуть в книгу.


Вопросы соответствия требованиям по оформлению работы
Этого не знает никто. У нас страна отсутствия стандартов, я в этом убедился давно.

тут лучше положиться на советы своего научного руководителя.
А эти вообще ничего не знают в этом деле, как правило :-)

В своей работе я использовал класс документа dissert.cls. Теперь его первоисточник что-то не находится
Он тут, но документация паршивая, и автору на это наплевать. А жаль, пакет неплох, сейчас сам в нём оформляю диссер.

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

некоторыми особенностями набора автореферата (который набирается на формате A5
А можно поподробнее с этого места?


P.S> Ну и традиционно спасибо за ссылку :)

jetxee комментирует...

> Ты удивишься, но статья про набор текста и титульника будет самой большой. Для картинок будет всего 3-4 примера - И ЭТОГО ДОСТАТОЧНО! И не надо читать килотонны Львовского, чтобы просто вставить рисунок.

Если не ошибаюсь, я свой первый диплом писал, опираясь на это руководство: Первые шаги в LaTeX. Оно тоже было очень конспективное.

>>Вопросы соответствия требованиям по оформлению работы
>Этого не знает никто. У нас страна отсутствия стандартов, я в этом убедился давно.

>>тут лучше положиться на советы своего научного руководителя.
>А эти вообще ничего не знают в этом деле, как правило :-)


За всех не скажу, мой знал, и знал хорошо. И вкус к правильно набранному тексту мне привил он. А после всех его правок, по оформлению, насколько помню, ни одной претензии со стороны Совета не было.

>Он тут, но документация паршивая, и автору на это наплевать.

Это другой пакет. Я использовал dissert, автор Andrew Martovlos, 2002. А у тебя disser, Stanislav Kruchinin. Кстати, ссылку на него действительно мне стоит добавить, судя по репозиторию, Станислав его активно развивает. Спасибо за ссылку.

>>некоторыми особенностями набора автореферата (который набирается на формате A5)
>А можно поподробнее с этого места?


Если конспективно, нужно сразу верстать А5, не поддаваясь соблазну легко масштабировать А4. Потому только так можно обеспечить хороший шрифт. Шрифт 14pt уменьшенный в √2̅ выглядят не так, как набранный сразу 10pt.

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

Третье, автореферат печатается типографским способом и должен быть 1 (или в некоторых случаях 1,5) печатных листа. Необходимость печатать типографским способом в моём случае означала, что количество страниц должно было быть кратно 8 (учитывая ограничение на количество печатных листов, получается нужно было подогнать на 16, или 24 страниц). Также возникает необходимость делать страницу с выходными данными (сзади).

Потом в автореферате оставляют только список своих публикаций. При необходимости на что-то сослаться, приходится делать ссылку в сноске. Я схитрил, и скопировал уже отформатированные ссылки из файла bbl.

Всё по отдельности не сложно, но повозитья над этими мелочами и техническими ограничениями пришлось.

P.S. На здоровье :)

Pavel Samolisov комментирует...

Моя фамилия - Самолысов ;)

Сергей комментирует...

Прошу прощения, Павел, опечатался поздно вечером. Исправил.

Вадим комментирует...

А ни кто не знает, вышло ли обновление классов BibTeX под ГОСТ 7.0.5?

Eji комментирует...

Вот вопрос: у кого-нибудь получалось сделать одновременно библиографический список по госту (т.е. с использованием стилей utf8gost*) и одновременно ссылки в тексте в формате (Автор, год)? Это стандарт для многих научных журналов.

По отдельности это не составляет труда. Первое позволяет соответствующий стиль библиографии, второе - использование пакета natbib. Но natbib не работает со стилем gost. Увы.

По сути это единственное, что удерживает от перехода на LaTeX в написании статей. Хотя все прочие вещи: математика, удобство набора, автоматизация библиографических ссылок много удобнее, чем в ворд.

eleniumblog комментирует...

Господин хороший, подскажи в чём косяк? Пытаюсь замутить команду \renewcommand\contentsdesc{Стр.} и компилятор на ней запарывается. Подумал что надо писать \renewcommand{\contentsdesc}{Стр.}, но все равно не работает. В инете рыл, но чет ничего толкового не нашел.

Заранее спасибо!

Сергей комментирует...

Ну, не видя ошибки, судить трудно — если хотите пришлите её на почту (jetxee улитка gmail дотком). Отмечу, однако, что команда \contentsdesc определена только в нестандартном классе dissert.cls, мной использованном. И если используете какой-то другой класс документа, то и этой команды нет (и она не нужна).

Eji комментирует...

К вопросу о ГОСТ 7.0.5 - соответствующие bst есть в пакете disser, нормально работают отдельно.

Отправить комментарий