- Подписка на печатную версию:
- Подписка на электронную версию:
- Подшивки старых номеров журнала (печатные версии)
LXF90:LaTeX
Материал из Linuxformat.
Содержание |
Путеводитель по классам LaTeX
ЧАСТЬ 7 Подобно Золушке, ставшей принцессой, документ LaTeX может несколько раз сменить свой класс за время существования. Многообразие классов LaTeX способно смутить любого – но Евгений Балдин предлагает их полную классификацию.
Класс документа – это первое, что требуется указать при наборе. В то же время первое вовсе не значит важное. С заключительным выбором класса почти всегда можно повременить до окончания основного набора. С другой стороны, выбирать всё равно когда-нибудь придётся, так что нелишне знать, что может нам предложить LaTeX.
Зачем нужны эти классы?
Класс документа выбирается с помощью команды documentclass. Её нужно и можно выполнить ровно один раз в самом начале документа:
\documentclass[a4paper,12pt]{article}В качестве обязательного аргумента указывается имя класса, которому через запятую передаются необязательные параметры. Класс определяется в файле с расширением .cls. В дистрибутиве LaTeX TeX Live 2005 присутствует 175 уникальных файлов с подобным расширением. Естественно, это далеко не все существующие на белом свете классы, тем более, что никто не мешает вам создать свой личный класс. Но для начала лучше все же воспользоваться одним из имеющихся.
Класс определяет вид и структуру документа. Класс – это база, которую можно править с помощью подключаемых стилевых файлов. В классе задаётся геометрия страницы и определяются команды секционирования. Сам по себе класс может быть как просто небольшой модификацией уже имеющегося, так и принципиально новой реализацией представления печатного или электронного TeXнического слова. В качестве примера последнего можно привести молодой (2007 год) пока пакет papertex, который позволяет применять LaTeX в деле вёрстки газет, то есть для того, для чего LaTeX в проекте вовсе не предназначался. Сам пакет можно найти на любом CTAN-архиве в директории {CTAN}/macros/LaTeX/contrib/papertex/.
Классовая база
Исторически сложилось так, что LaTeX начался с 6 классов: article (статья), book (книга), report (отчёт), proc (доклад), letter (письмо) и slides (слайды).
По идее, статьи следовало набирать в article. В этом классе определены команды секционирования вплоть до section (раздел). Одним из желательных элементов оформления является предисловие (окружение abstract). В классе book присутствует расширенный набор команд секционирования, в который добавлена команда chapter (глава). Также в классе book присутствует базовый набор команд для оформления титульного листа, предисловия и оглавления. Класс для создания отчёта report является упрощённой версией класса book. Отчёты – те же книги, только читают их по необходимости, а не по желанию. Класс proc, предназначенный для создания тезисов докладов, в свою очередь является модификацией класса article, причём основное отличие состоит в обязательной двухколоночной печати. Для написания писем был создан класс letter. Набор команд в этом классе существенно отличается от уже перечисленных, в частности, для писем нет нужды в командах секционирования. Класс slides – простой и быстрый способ сделать презентацию. С помощью этого класса не удастся создать пёстрого фона и головокружительных эффектов смены слайдов, зато он позволяет сосредоточиться на основном – на тексте.
Особняком от этих классов стоит класс minimal, который является «болванкой» для создания и тестирования новых классов и идей. В классе minimal не определено никаких специальных команд – минимум есть минимум. В качестве побочного эффекта документ, выбирающий этот класс, транслируется LaTeX значительно быстрее.
С этих классов всё начиналось, но на них ничего не закончилось. Следует понимать, что базовые классы далеко не так хороши, как хотелось бы. После трансляции текста сразу возникает желание взять в руки «электронный надфиль» и пройтись по настройкам класса. Это цена за то, что перечисленные классы являются базовыми. На них ссылается и их модифицирует множество других классов и пакетов, поэтому их развитие было заморожено. Для начального набора сгодится и это, но для конечной вёрстки лучше подобрать что-то более подходящее, или придётся серьёзно модифицировать значения по умолчанию.
Часто набор необязательных параметров для стандартных классах используется и в других классах, например, в целях совместимости. Некоторые из полезных опций перечислены ниже:
- 10pt|11pt|12pt – установка базового размера шрифта. Обычно этих трёх значений хватает.
- a4paper – установка размера листа бумаги. Следует использовать всегда, так как по умолчанию LaTeX использует размер листа letter.
- draft – режим черновой печати для «отлавливания» проблем вёрстки. В этом режиме не внедряются картинки (вместо них вставляются прямоугольники нужного размера) и отмечаются строчки, где алгоритм разбиения абзаца на строки даёт осечку.
- oneside|twoside – форматирование документа для односторонней и двухсторонней печати, соответственно.
- twocolumn – печать в две колонки.
Классификация
Сразу предупрежу: число классов постоянно растёт, поэтому не следует думать, что все имеющиеся варианты исчерпываются классами, перечисленными ниже.
Модификации и улучшения базы
Стандартные классы не нравятся всем, и всякий старается их улучшить. Кто-то убирает какой-то конкретный недостаток, как это сделано в наборе классов extsizes (extarticle, extbook, extletter, extproc, extreport), которые отличаются от стандартных только возможностью указать базовый размер шрифта, отличный от обычного 10-12pt. Есть наборы классов, которые делались с какой-то определённой целью. Примером такого подхода являются классы от AMS (amsart, amsbook, amsproc), которые используются для материалов, предназначенных для публикации в журналах Американского математического сообщества. Классы из набора ntgclass представляют из себя «героическую» попытку немецкоговорящих голландцев сделать то же, что и в стандарте, но существенно разными способами.
KOMA-Script
В последнее время всё больше внимания обращает на себя набор классов KOMA-script. В этот раз хорошо постарались немцы. Следует учитывать, что европейские традиции полиграфии (в основном французские), всё-таки ближе к нам, чем американские, на которые традиционно ориентировалось LaTeX-сообщество. Для статей предполагается использовать scrartcl, для книг scrbook, для писем scrlttr2, а для отчётов scrreprt.
В отличие от стандарта, классы из KOMA-script позволяют использовать базовые размеры шрифта в 9pt, 14pt и 17pt. Огромные поля, имеющие место в стандартных классах, в классах KOMA-script значительно уменьшены. Претерпели изменения и другие элементы. Если оформление по умолчанию не кажется адекватным, то KOMA-script предоставляет обширный набор высокоуровневых настроек. Подробная документация на более чем двухстах страницах «The KOMA-Script bundle» (scrguien.pdf) позволяет подстроить все необходимые параметры.
NCC
Ещё один вариант замены стандартных классов – это использование пакета NCC. Очень подробно об этом пакете написано в замечательной книге от создателя NCC Александра И. Роженко: «Искусство верстки в LaTeX’е», 2005 (ISBN 5-901548-25-6).
Для использования следует загрузить класс ncc и передать ему желаемый стиль оформления в качестве параметра: article (статья – используется по умолчанию), preprint (препринт), book (монография) или report (отчёт). Дальнейшие подробности об использовании этого класса можно почерпнуть в краткой инструкции к пакету: nccLaTeX.pdf.
Поддерживаем стандарты
Стандарт подразумевает наличие подробного описания, которое и является его сущностью. То, что написано на бумаге в виде набора непротиворечивых правил, может быть переведено на язык машины. Далее можно забыть про эти правила, так как помнить все нюансы – работа для машины5 (Рис. 2).Константин Кориков создал и активно поддерживает пакет eskdx, который представляет из себя набор классов и стилей, предназначенный для вёрстки документации в соответствии с требованиями «Единой системы конструкторской документации». Основу коллекции составляют три класса: eskdtext (для текстовой документации), eskdbtab (для чертежей и схем) и eskdgraph (для документов, разбитых на графы). Внятная документация на русском (eskdx.pdf) приятно дополняет картину. Пакет можно найти на CTAN в директории {CTAN}/macros/LaTeX/contrib/eskdx/, а его домашняя страничка расположена по адресу: http://lostclus.linux.kiev.ua/eskdx/.
eskdx – относительно молодой пакет. Ранее аналогичная попытка была предпринята Вячеславом Фёдоровым, в результате которой на свет появился пакет eskd (без «x» на конце). В отличии от класса Константина Корикова, класс eskd.cls требует обязательной установки шрифтов из коллекции pscyr.
Стандарт для написания документов, описывающих стандарты. Что может быть ещё более стандартным? Класс isov2.cls из пакета iso является стандартом для стандартов. Документация к пакету isoman.pdf подробно описывает все технические тонкости в деле подготовки документов по стандартам ISO. Аналогично, для создания документации ISO 10303 есть свой пакет iso10303.
Пишем письма
Класс letter является стандартным для LaTeX и, как следствие, никто им не пользуется. Часто стандарт для написания писем создаётся автором самостоятельно. Так, например, любит делать Кнут. Это очень неплохо работает в силу того, что структура письма не слишком сложна. Как следствие, в LaTeX имеется огромное число альтернатив для letter.
С точки зрения английского FAQ по LaTeX (http://www.tex.ac.uk/faq) класс newlfm является наиболее продвинутым. lfm расшифровывается как letter (письмо), fax (факс) и memorandum (служебная записка). Документация представляет из себя текстовый README и набор примеров использования.
Хорошо документированный класс akletter также является хорошим шаблоном для старта. Документация lettereng.pdf, кроме краткой инструкции, также включает и формальное описание структуры письма.
Упомянутый выше пакет KOMA-script предоставляет прекрасную замену стандартному классу letter в виде scrlttr2. Набор классов ntgclass также предоставляет свой вариант в виде класса brief.
Кроме более-менее общих решений, полно и частных. Например, для внутренней переписки университета города Падуя есть специальный пакет cdpbundl, содержащий целых три класса.
Верстаем книги
Написание книги – это очень долгий процесс, и первоначальную «набивку» текста можно начать со стандартного класса book. С другой стороны, структура книги может быть очень сложной, и правильный выбор базового класса позволит несколько облегчить процесс созидания.
В качестве улучшенного стандартного класса book можно использовать класс octavo. Класс scrbook из KOMA-script также является хорошей альтернативой для book. Структура и основные команды копируют стандартный класс. Значения же параметров по умолчанию более адекватны для европейской полиграфии.
Описание класса memoir (memman.pdf) представляет из себя книгу о создании книги, превышающую по объёму триста страниц. Там есть всё, начиная от формальной структуры печатной книги, советов по оформлению электронных копий, и заканчивая собственно описанием класса. Все элементы структуры и управляющие размеры показаны в виде рисунков и схем. Класс не является надстройкой над чем-либо – это произведение искусства, созданное с нуля. Документацию следует пролистать хотя бы просто для ознакомления. Класс развивается до сих пор. Новые возможности описываются в дополнении к основной документации (memmanadd.pdf), и на текущий момент дополнение почти достигло объёма в сто страниц.
Если не требуется написать книгу, а нужно распечатать мегабайтный текст на дешёвеньком принтере в режиме экономии тонера, то для этого дела вполне может подойти класс sffms – простенько и строки через два интервала.
Создаём отчёты
Отчёт – не книга, но и здесь есть свои правила и структура. Для начала можно воспользоваться scrreprt из KOMA-script, как замена стандартному классу report.
Инженер-электронщик Эли Биллауэр [Eli Billauer] сделал LaTeX-класс для бумаг в HiTech-стиле и назвал его, соответственно, hitec. Простенько и со вкусом. Есть, естественно, и частные решения. Хочется заключить контракт с американским правительством – стандартная форма 298, обеспечиваемая классом sffms, будет вполне кстати. Класс manual из пакета nassflow даст возможность пообщаться со структурой под названием «Center for the Automation of Weapon and Command Systems, Royal Netherlands Navy» [Центр автоматизации вооружения и командных систем Королевских ВМФ, Нидерланды].
Делаем презентации
В начале предполагалось, что цель презентации состоит в распространении нужной информации от одного человека ко многим. Поэтому во главу угла ставился текст, а «украшательства» сводились к простой рамке. Стандартные классы seminar и sides вполне годились для этого.Но время суровых докладчиков прошло, и «рюшечки» вышли на первый план. LaTeX может предоставить и «рюшечки», но лучше всётаки помнить о смысле.
Класс prosper создан как улучшенный seminar и поддерживает не только оверлеи, гиперссылки и шаблоны оформления, но и «стандартный» набор динамических эффектов доступных через формат pdf. Вспомогательный класс ppr-prv позволяет создать печатную версию электронных слайдов класса prosper.
В пакет texpower входит класс powersem, который, по сути дела, просто загружает slides, а всю работу по созданию презентации выполняет стиль texpower. Возможности этого пакета сравнимы с prosper – просто он немного другой.
В последнее время в деле создания презентации всё популярнее и популярнее становится относительно молодой, но довольно мощный класс beamer. Активная поддержка сообщества при создании этого пакета позволила автору beamer Тилу Тантау (Till Tantau) собрать в одном месте немало тем для слайдов. Ключевой особенностью этих тем является разнообразие. Наличие широкого выбора стандартных тем позволяет быстро выбрать обрамление для презентации. Более чем 200 страниц документации ускоряют решение любой возникшей проблемы.Для создания презентаций можно настроить даже WYSIWYM-редактор LyX. Для этого следует воспользоваться ещё одним достаточно молодым, но уже вполне функциональным классом powerdot, в комплекте с которым идут настройки для LyX.
Класс talk, в отличие от упомянутых выше пакетов, позволяет пользователю определить более одного стиля слайдов для презентации. Резкая смена стиля во время доклада – иногда бывает нужно и такое.
Для создания настенного постера в первом приближении можно воспользоваться пакетом a0poster, который позволяет работать с большими форматами бумаги. Канонического класса, который бы решал все проблемы при изготовлении постера, в LaTeX на текущий момент не существует. Возможно, ближе всего к идеалу подошёл класс sciposter из одноимённого пакета.
Защищаем диссертации
Раньше всюду были курсовые и дипломные работы, а теперь, куда ни плюнь, везде диссертации. Каждый уважающий, не сильно уважающий и вообще не уважающий себя университет имеет свой уникальный стиль оформления диссертации. Если хочется написать свой класс, то в качестве отправной точки можно выбрать ucthesis от Калифорнийского университета (UC Berkeley).
Станислав Кручинин озадачился судьбами русскоговорящих диссертантов и создал класс disser. Пакет с одноимённым названием можно взять на CTAN в директории {CTAN}/macros/LaTeX/contrib/disser. Следует учесть, что пользовательская документация на текущий момент отсутствует. С другой стороны, диссертанты, по идее, люди неглупые и разберутся в имеющихся примерах.
Организуем резюме
Написание резюме или curriculum vitae – довольно популярный вид деятельности в современном мире. Для резюме нет общепринятого стандарта, но некоторые указания существуют.
Европейская комиссия рекомендует определённый формат для составления резюме, и этот формат полностью реализуется с помощью класса europecv. Класс vita представляет собой конструктор для создания резюме. Несмотря на отсутствие документации, разобраться с ним по имеющимся примерам для IT-специалиста и певца не составит сложности. Класс curve, напротив, обладает качественной документацией. Механизм рубрик позволяет классу curve поддерживать несколько резюме разной направленности и легко переключаться между ними. Современный класс morderncv рекомендуется как гибкое и простое средство создания резюме как современного вида, так и классической формы. Пакет можно взять на CTAN в директории {CTAN}/macros/LaTeX/contrib/moderncv.
Следует отметить, что классы определяют многое, но далеко не всё. Поэтому после выбора класса можно подключить стили, которые серьёзно поменяют внешний вид документа. Стиль currvita позволяет создавать резюме в окружении стандартных классов.Журнальные и конференционные классы
Каждый серьёзный научный журнал и крупная конференция имеет свой LaTeX-класс. Обычно этот класс лежит где-то на официальном сайте, например, журналы, издаваемые издательством МАИК «Наука/Интерпериодика», должны следовать правилам, выложенным здесь: http://www.maik.ru/pub/tex/. Но довольно много журнальных классов можно найти в стандартном дистрибутиве LaTeX. Например, класс asaetr используется в American Society for Agricultural Engineers (ASAE). Maple Technical Newsletter можно создавать с помощью класса mtn. Классом jpsj2 отметились японцы. Из русскоязычных журналов замечен только «Сибирский журнал вычислительной математики» – класс sibjnm.
Следует отметить класс elsart, обязательный для подготовки журнальных публикаций в издательстве Elsevier. Класс nature позволит подготовить pdf-файл для журнала Nature. Часто при создании публикаций для журналов или конференций используются небольшие модификации класса revtex4.
Для объединения разных документов в один, например, для оформления трудов конференции, может пригодиться класс combine.
Всякая всячина
Далеко не все классы подчиняются уже перечисленной классификации. За рамки темы вышли классы для составления календарей, обложек для CD (cd), вопросников (qcm), объявлений о занятиях (assignment), концертных программок (ConcProg), программ курсов (courseoutline и coursepaper), рабочего журнала для биологов (labbook), пьес (stage), тибетских карточек (pecha), карточек для запоминания иностранных слов (flashcards), и для многого другого. Старые и давно не поддерживаемые классы могут не собраться в новом окружении, но исходные тексты доступны, так что их всегда можно довести до необходимой кондиции.Заключение
Классов существует много – места в статье мало. Малая толика из упомянутых классов будет рассмотрена в последующих статьях цикла. Это не является проблемой, так как в чём-чём, а в отсутствии документации к пакетам LaTeX обвинить невозможно – ну, почти. LXF