Каталог классов и стилей LaTeX. Часть 1. Каталог пакетов для набора текста

Данный цикл статей подробно описывает пакеты LaTeX, входящие в каталог TeX Live 2013 и предназначенные для решения самых разных задач. Эта статья посвящена базовым пакетам, использующимся для непосредственного форматирования текста.

Евгений Балдин, писатель, независимый специалист

Балдин Евгений Михайлович. Кандидат физико-математических наук в области Физики высоких энергий. Работает в ИЯФ им. Г.И. Будкера. С 2005 г. регулярно пишет популярные статьи на тему СПО.



08.05.2014

Введение

Если для поставленной задачи существует готовое решение, то им следует воспользоваться, но предварительно это решение необходимо найти и изучить документацию по нему. Каталог пакетов TeX Live 2013 предназначен для решения первой проблемы, но вторую проблему вам придётся решать самостоятельно.

В данном цикле статей мы постараемся помочь и в решении второй проблемы, представив подробный список пакетов для решения самых разных задач, возникающих в процессе создания, форматирования и печати текстов в системе LaTeX. Как правило, каждый пакет упоминается не более одного раза и только в одном разделе, и если вам не удалось обнаружить необходимую функциональность, например, рисование диаграмм, в разделе "Математика", то имеет смысл поискать в разделе "Графики, гистограммы и диаграммы".

В данном цикле статей упомянуты не все пакеты TeX Live 2013, так мы проигнорируем пакеты, которые не могут использоваться совместно с русским языком. Часть пакетов пропущена по причине невнятной документации, из-за наличия более современной или более популярной альтернативы или из-за своей недружелюбности к пользователю. Структура каталога создавалась с оглядкой на структуру книги Евгения Балдина "Компьютерная типография LaTeX".


Каталог пакетов для набора текста

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


Интернационализация и локализация

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

  • fontenc — стандартный стиль для выбора внутренней кодировки LaTeX.
  • inputenc — стандартный стиль для указания, в какой кодировке набран текст.
  • babel — стандартный пакет локализации или выбора языка документа LaTeX. Пакет поддерживает около шестидесяти языков без учёта диалектов. Кроме языков, поддерживаемых пакетом babel, отдельно существуют пакеты для набора в LaTeX на арабском (arabtex), китайском и японском (cjk) и многих других языках.
  • polyglossia — полная замена babel для пользователей XeLaTeX/LuaTeX с поддержкой свыше семидесяти языков.
  • utf8ienc — стандартная поддержка Unicode (опция utf8 при загрузке пакета inputenc).
  • ucs — поддержка Unicode (опция utf8x при загрузке пакета inputenc).
  • codepage — поддержка символьных кодировок (code page).
  • braille — поддержка набора с помощью шрифта Брайля (для слепых).

Русификация

Основная проблема при создании русскоязычных документов в LaTeX — это малое число качественных шрифтов с поддержкой кириллицы. XeLaTeX частично решает эту проблему, но для набора текстов лучше держаться семейства шрифтов Computer Modern, особенно если в тексте содержатся математические формулы.

  • concrete — стиль из пакета ltxmisc. Инициализирует шрифты concrete (для текста) и euler (для математики). Шрифт полностью русифицирован и использовался Д.Э. Кнутом для набора книги "Конкретная математика".
  • cyrillic — поддержка кириллицы в LaTeX. Включает набор восьмибитных кириллических кодировок для пакета inputenc.
  • lh — набор кириллических шрифтов базового семейства Computer Modern, которые доступны в векторном формате Type1 в составе пакета cm-super.
  • indentfirst из пакета tools — после инициализации этого стиля первый параграф раздела начинается с красной строки.
  • t2 — набор макросов и вспомогательных программ для поддержки набора кириллицы. В пакет входят стили misccorr (при загрузке исправляет некоторые несоответствия с правилами отечественной полиграфии), mathtext (позволяет набирать русский текст в математическом стиле) и citehack (хак для поддержки кириллических меток для BibTeX.
  • eskdx — активно поддерживаемая реализация стандарта ЕСКД. Пакет содержит исчерпывающую документацию на русском. Также существует менее совершенная версия реализации стандарта в виде пакета eskd.
  • gost — пакет GOST реализует для BibTeX требования ГОСТов 7.0.5—2008, 7.1—2003, 7.80—2000, 7.11—2004 и 7.82—2001.
  • biblatex-gost — пакет Biblatex-GOST предоставляет стили, в которых реализуется поддержка требований ГОСТов 7.0.5—2008, 7.1—2003, 7.80—2000, 7.82—2001 для Biblatex.

Пунктуация

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

  • decimal — позволяет изменить поведение разделителя между целой и дробной частями числа в зависимости от режима (текстового или математического).
  • ellipsis — выставляет правильные пробелы вокруг многоточия \dots.
  • eqell — правильные пробелы между многоточием и другими знаками препинания.
  • extdash из пакета ncctools — простые псевдонимы для команд дефисов, тире и пробелов.
  • ncccomma из пакета ncctools — позволяет использовать запятую вместо точки для отделения целой части числа от дробной. Схожей функциональностью обладает стиль icomma из пакета was.
  • underscore — позволяет набирать знак подчёркивания ("_") в текстовом режиме. По умолчанию его использование в текстовом режиме провоцирует ошибку компиляции.
  • xpuncuate — определяет макросы \xperiod, \xcomma и \xperiodcomma, которые вставляют соответствующие знаки препинания, только когда это необходимо.

Выделение текста

Если отдельные фрагменты текста должны выделяться по сравнению с остальными, для этого можно воспользоваться стилями, перечисленными ниже. Но в разделе "Боксы" тоже можно найти интересные способы выделения фрагментов текста.

  • abraces — фигурные скобки сверху или снизу выделенного текста.
  • background — позволяет определить цвет фона для текстового фрагмента.
  • censor — пакет для создания и редактирования документов, где часть текста подвергнута цензуре (закрашена чёрным цветом).
  • contour — возможность добавления цветного контура вокруг букв и эмуляции контурных шрифтов.
  • dashundergaps — предоставляет макросы для подчёркивания текста сплошной или прерывистой линиями. Позволяет скрывать текст, который подчёркивается (удобно для тестов).
  • embrac — если внутри выделенного с помощью команды \emph текста поставить фрагмент внутри квадратных скобок [sic!], то выделение для этого фрагмента снимается.
  • formular — оформляет пропуски, которые необходимо заполнить после распечатки документа.
  • harpoon — набор гарпунных стрелок для подчёркивания текста или расположения их сверху.
  • nccstretch из пакета ncctools для разрядки текста.
  • shadowtext — добавление эффекта тени для текста.
  • soul — печать в разрядку, подчёркивание, перечёркивание текста и многое другое.
  • truncate — урезает текст до необходимой длины.
  • ulem — разные способы подчёркивания и перечёркивания текста.
  • umoline — определяет макросы для подчёркивания текста с возможностью переноса.

Разделительные линии

Разделительные линии помогают отделять фрагменты текста друг от друга.

  • dashrule — пунктирные разделительные линии.
  • decorule — набор декоративных разделительных линий.
  • mboxfill из пакета ncctools — заполнение пространства указанными символами.
  • nccrules из пакета ncctools — различные типы разделительных линий.
  • xhfill — заполнение пространства линиями разной толщины, цвета и формы.

Форматирование параграфа

Рассмотрим стили, доступные для форматирования параграфов:

  • cutwin — позволяет "прорезать" окошко в текстовом параграфе для размещения там выделенного текста или картинки.
  • fancypar — выделение параграфа с помощью цвета, подчёркивания и маркеров.
  • lineno — добавляет номер строки на полях. Удобно для указания конкретного места в тексте.
  • leading — изменение расстояния между строками.
  • lettrine — добавление простых буквиц в начале параграфа.
  • microtype — интерфейс к микротипографическому расширению pdftext для улучшения общего впечатления от текста. По умолчанию обеспечивает висячую пунктуацию. При использовании pdflatex в качестве основного компилятора настоятельно рекомендуется к использованию!
  • nccparskip из пакета ncctools — управляет вертикальными промежутками между абзацами и устраняет избыточные вертикальные отступы в списках.
  • ragged2e из пакета ms — выравнивание абзаца по правому или левому краю без выключения механизма переносов.
  • hanging — управление отступами внутри параграфа.
  • hyphenat — отмена переносов во всём документе или в выделенном фрагменте.
  • noindentafter — ликвидация горизонтальных отступов после окружения, например, после теоремы.
  • nolbreaks — запрет на перевод строки в указанном месте. Работает естественно не всегда.
  • notes — создание выделенного параграфа с привлекающим внимание знаком на полях.
  • rjlparshap — пакет для предания параграфу желаемой формы в прямом смысле этих слов.
  • shapepar — печать параграфа любой заданной формы, например, нестандартного символа.
  • setspace — устанавливает вертикальное расстояние между строк.
  • tabto-ltx — определяет механизм табуляций.

Cтили для определения списков

Списки используются для оформления перечислений разного рода элементов.

  • bullcntr — набор простых маркеров для списка и окружение для их использования.
  • desclist из пакета ncctools — улучшенный аналог окружения description.
  • engrec — нумерация перечня производится с помощью заглавных и строчных греческих букв.
  • enumerate из пакета tools — добавляет необязательный аргумент к стандартному окружению enumerate для определения стиля нумерации перечня.
  • enumitem — задание макета перечня.
  • enumitem-zref — расширяет механизм ссылок для пакета enumitem.
  • eqlist — определяет одноимённое окружение, похожее на description, но с одинаковым отступом для текста перечня.
  • easylist — определяет окружение для создания нумерованных списков. Степень вложенности определяет число поставленных в начале строки маркеров, как это делается в обычных текстовых списках, например, в org-mode emacs.
  • etaremune — определяет нумерованный перечень с обратной нумерацией.
  • expdlist — расширение окружения description.
  • iitem — добавляет макросы \iitem, \iiitem и \ivtem, которые позволяют сформировать многоуровневый перечень без вложенных окружений.
  • moreenum — определяет дополнительные стили для окружения enumerate.
  • multenum — многоколоночный перечень.
  • outline — шестиуровневый аналог стандартного окружения enumerate.
  • outlines — перечень с уровнями, задаваемыми пользователем.
  • paralist — формирование внутриабзацного перечня.
  • tablist — перечень из коротких пунктов, выравненных по колонкам. Полезно для оформления заданий или ответов в задачнике.

Неформатированный текст

Для LaTeX пробелы и переносы в параграфе не имеют значения, система сама знает, как лучше переносить текст, но некоторые фрагменты текста нужно отобразить один в один или не отображать совсем.

  • alltt — вывод неформатированного текста с возможностью исполнения команд LaTeX внутри одноимённого окружения.
  • comment — определяет одноимённое окружение, позволяющее закомментировать текст внутри него.
  • cprotect — позволяет передать окружение verbatim в качестве аргумента, например, команде \footnote.
  • fancyvrb — определяет множество изощрённых способов по работе с неформатированным текстом.
  • gmverb — переопределяет окружение verbatim и команду \verb так, что неформатированный текст может переноситься, если строка выходит за пределы полосы набора. Схожую задачу решает пакет spverbatim.
  • moreverb — расширение возможностей пакета verbatim.
  • newvbtm — ещё два варианта "verbatim-like" окружения с поддержкой табуляции.
  • newverbs — механизм для определения аналогов команды \verb, где можно задать выполнение каких-то действий до и после выполнения самих команд.
  • verbatim из пакета tools — улучшение стандартного одноимённого окружения для вывода неформатированного текста. Добавляется окружение comment.
  • verbdef — позволяет определять "не хрупкие" команды, которые раскрываются в неформатированный текст.

Цитирование и эпиграфы

При работе над текстом часто возникает необходимость выделить фрагмент текста в качестве цитаты.

  • balancedquotes — заменяет симметричные "кавычки" на сбалансированные, например, «ёлочки».
  • csquotes — пакет для создания цитат, локализованный для некоторых европейских языков, включая русский.
  • dirtytalk — определяет макрос \say, который правильно расставляет кавычки вокруг переданного ему аргумента. Схожий функционал предоставляет пакет quotmark.
  • epigraph — формирование эпиграфа. Классы KOMA-Script предоставляют схожую функциональность с помощью команды \setchapterpreamble.
  • quotchap — добавление эпиграфов к главам.
  • quoting — альтернатива стандартным командам цитирования.

Акронимы

Зачастую красивое, но чересчур длинное название приходится сокращать с помощью акронимов – ООН – Организация Объединённых Наций.

  • acro — весьма продвинутое оформление акронимов и сокращений.
  • acronym — простой способ создания сокращений или акронимов.
  • acroterm — ещё один пакет для оформления сокращений в тексте.

Рубрикация

Задача автора – разделить текст на разделы согласно логике повествования, задача LaTex – обеспечить оформление этих разделов

  • alnumsec — буквенная нумерация разделов.
  • anonchap — оформление заголовков глав по примеру разделов.
  • apptools — добавляет набор хуков для оформления приложений. Схожую функциональность предоставляет KOMA-Script.
  • appendix — дополнительные возможности по работе с приложением.
  • chappg — страницы для каждой новой главы опять начинают нумероваться с единицы.
  • fncychap — семь дополнительных нестандартных способов оформления заголовков глав.
  • nccsect из пакета ncctools — альтернативный механизм рубрикации.
  • sectionbox — помещает разделы в причудливо оформленные боксы, также подходит для создания постеров.
  • titlesec — альтернативный способ формирования заголовков разделов, сильно отличающийся от стандартной схемы. Для работы с оглавлением в том же стиле следует использовать пакет titletoc.
  • topsection из пакета ncctools— определяет команду высокого уровня секционирования \topsection без нумерации. Совместимо со стандартными классами, где команда \chapter отсутствует.
  • nonumonpart — гарантированная ликвидация номеров страниц в начале главы и титульном листе.

Титульный лист

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

  • abstract — оформление аннотации к статье.
  • authblk из пакета preprint — переопределяет команду author, позволяя вводить имя автора и организацию, к которой он принадлежит, более естественным образом.
  • authoraftertitle — добавляет макросы \MyAuthor, \MyTitle, \MyDate для возможности использования в тексте строк, определённых с помощью команд \author, \title, \date. Схожим функционалом обладает пакет rectopma.
  • coverpage — включает стиль CoverPage, который определяет шаблон для создания обложки для научной статьи.
  • titling — улучшение стандартной команды \maketitle.
  • titlepages — 40 примеров оформления титульного листа.

Боксы

Боксы — это элементарный строительный материал для TeX, так как система сама определяет их, прежде чем склеить в строки, абзацы, а затем страницы, но боксы можно создавать и самостоятельно.

  • adjustbox — определяет одноимённую команду для манипуляции с боксами в стиле ключ=значение.
  • boites — определяет окружения, формирующие боксы, которые могут частично переноситься на другую страницу.
  • boxedminipage — определяет одноимённое окружение, создающее мини-страницу с рамкой вокруг неё.
  • boxhandler — именованные боксы.
  • dashbox — рисует пунктирную рамку вокруг бокса.
  • efbox — расширение стандартной команды \fbox, которая не только рисует рамку вокруг фрагмента текста, но и позволяет задать цвет фона.
  • eqparbox — создаёт группу боксов одинаковой ширины, равной максимальной ширине среди ширин аргументов.
  • fancybox — создание боксов с разнообразными рамками и фоном.
  • framed — набор боксов с рамкой, фоном и тенью.
  • genmpage — расширенная версия стандартного окружения minipage. Позволяет задавать параметры форматирования текста внутри бокса по умолчанию.
  • ghab — бокс с декорированной рамкой.
  • gradientframe — добавляет простую серую градиентную рамку вокруг объекта.
  • graphicxbox — добавляет в качестве фона бокса картинку.
  • makebox — определяет макрос \makebox*, который работает как стандартный \makebox, но в качестве параметра принимает не размеры бокса, а эталонную текстовую строку.
  • mdframed — определяет окружение с цветным фоном, по примеру \colorbox, которое может разрываться при окончании страницы.
  • minibox — определение бокса, в котором текст может быть разбит на несколько строк с помощью команды \\.
  • nccboxes из пакета ncctools — дополнительные способы создания боксов. Пакет ориентирован на работу с таблицами. В частности предоставляет набор команд для создания невидимых подпорок определённой высоты.
  • ncccropbox из пакета ncctools— боксы с отмеченными уголками.
  • niceframe — рамки из символов dingbat (разного рода орнаменты).
  • pbox — боксы переменной ширины.
  • pst-fr3d — 3D-боксы.
  • realboxes и verbatimbox — набор боксов, которые могут принимать в качестве аргумента не форматированный текст (verbatim).
  • roundbox — определяет одноимённое окружение, рисующее рамку с закруглёнными краями вокруг бокса.
  • storebox — определяет макрос \storebox, который является аналогом \savebox, но в случае нескольких вставок работает быстрее, может использоваться совместно с pdflatex.
  • shadow — предоставляет макрос shabox, создающий бокс с рамкой и тенью.
  • tcolorbox — бокс, раскрашенный и заключённый в рамку с возможностью добавления названия.
  • textpos — расположение бокса в любой указанной точке страницы. Параметры передаются в виде относительных координат.

Заключение

В этой статье мы только начали знакомиться с многообразием стилей, доступных в каталоге пакетов TeX Live 2013.

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

Ресурсы

Комментарии

developerWorks: Войти

Обязательные поля отмечены звездочкой (*).


Нужен IBM ID?
Забыли Ваш IBM ID?


Забыли Ваш пароль?
Изменить пароль

Нажимая Отправить, Вы принимаете Условия использования developerWorks.

 


Профиль создается, когда вы первый раз заходите в developerWorks. Информация в вашем профиле (имя, страна / регион, название компании) отображается для всех пользователей и будет сопровождать любой опубликованный вами контент пока вы специально не укажите скрыть название вашей компании. Вы можете обновить ваш IBM аккаунт в любое время.

Вся введенная информация защищена.

Выберите имя, которое будет отображаться на экране



При первом входе в developerWorks для Вас будет создан профиль и Вам нужно будет выбрать Отображаемое имя. Оно будет выводиться рядом с контентом, опубликованным Вами в developerWorks.

Отображаемое имя должно иметь длину от 3 символов до 31 символа. Ваше Имя в системе должно быть уникальным. В качестве имени по соображениям приватности нельзя использовать контактный e-mail.

Обязательные поля отмечены звездочкой (*).

(Отображаемое имя должно иметь длину от 3 символов до 31 символа.)

Нажимая Отправить, Вы принимаете Условия использования developerWorks.

 


Вся введенная информация защищена.


  • Bluemix

    Узнайте больше информации о платформе IBM Bluemix, создавайте приложения, используя готовые решения!

  • developerWorks Premium

    Эксклюзивные инструменты для построения вашего приложения. Узнать больше.

  • Библиотека документов

    Более трех тысяч статей, обзоров, руководств и других полезных материалов.

static.content.url=http://www.ibm.com/developerworks/js/artrating/
SITE_ID=40
Zone=Open source
ArticleID=970832
ArticleTitle=Каталог классов и стилей LaTeX. Часть 1. Каталог пакетов для набора текста
publish-date=05082014