Тег «LaTeX»

cm-super и Fedora 12

Почему-то в репозиториях Fedora 12 отсутствует замечательный пакет Type1-шрифтов cm-super. Так как жизни я себе без него не представляю, то пришлось брать соответствующий пакет на CTAN и ставить вручную. Суть поста в том, что идущие в комплекте с cm-super инструкции по установке неверны. Начиная с некоторого времени стандартные пути к .map- и .enc-файлам в TeX Live были изменены, о чем сказано в официальном предупреждении.

Для лентяев добрые люди сочинили установочный скрипт (внизу страницы).

УжасноПлохоНормальноХорошоОтлично (Еще не оценили)
Loading ... Loading ...

Проблемы с microtype и шрифтами

Я уже писал про одну из возможностей пакета microtypeвисячую пунктуацию (кстати, это частный случай margin kerning — кернинга крайних символов в строке для визуального выравнивания границ текста). Так вот, этот пакет позволяет делать еще множество всяких микротипографских трюков (см. инструкцию). Один из основных — автоматическое растягивание шрифта (font expansion) для выравнивания пробелов между словами.

Не сказать чтобы мне это самое растягивание позарез как нужно, но после очередного обновления (у меня Fedora 11) моя статья перестала собираться, мотивируя это примерно так:

ERROR: pdfTeX error (font expansion): auto expansion is only possible with scalable fonts

Это загнало меня в тупик на несколько часов. Конечно, Гугль знает о такой проблеме. И в инструкции к microtype все подробно написано. Ответ очевиден: использовать масштабируемый шрифт. Проблема только в том, что используемый по умолчанию шрифт cmr из пакета cm-super очень даже масштабируемый. Лог сборки по этому поводу тоже не особенно внятен.

Решение нашлось практически случайно. Некая загадочная редиска закомментировала в файле updmap.cfg строки, содержащие «cm-super». Мне достаточно было раскомментировать строку (я использую кодировку T2A):

MixedMap cm-super-t2a.map

и выполнить

sudo updmap

Все заработало. За помощь в поимке редиски объявлено вознаграждение.

УжасноПлохоНормальноХорошоОтлично (Еще не оценили)
Loading ... Loading ...

ebib’лиотекарь

Все началось с того, что я подсел на emacs. Путь юного джедая был долог и тернист, но в конце концов я вынужден был согласиться, что да, иногда emacs оказывается эффективнее, чем другие редакторы и IDE. И что если уж подсел — то все, организм начинает отторгать все остальное. Не иначе как специальный гормон начинает вырабатываться, вызвающий эйфорию при пользовании emacs и депрессию вместе с неконтролируемыми вспышками гнева — во всех остальных случаях. А уж какие ощущения емаксист испытывает при редактировании своего ~/.emacs, не стоит даже и пытаться описывать…

Нет, конечно, с первого раза он мне не понравился. И со второго, и с третьего тоже. Но я был настойчив, потому что хотел убедиться, что все эти странные люди со Столлманом во главе ошибаются. Наивный… Майн готт, я даже нашел людей, которые пользуются emacs в Windows! Теперь я могу их понять. Чем дальше, тем меньше хочется переключаться в другое окно. Нужна оболочка — пожалуйста, M-x shell. Почту почитать — сколько угодно, rmail-mode. С файлами и каталогами поработать — вот, извольте, C-x d. Рисунок нарисовать, PDF посмотреть, по Интернету посерфить… Ах да, в нем еще можно редактировать текст (вот ведь приятная неожиданность)! В результате ловишь себя на мысли, что и Linux в общем-то не очень нужен, и только зря жрет ресурсы.

Но падаван вырос, и настало ему время заняться поддержкой многострадальной отечественной науки. Наука у нас в стране, говоря откровенно, каким-то парадоксальным образом существует отдельно от занимающихся ею ученых, в своеобразной параллельной реальности. Оцените: ВАКовский журнал требует предоставлять публикации в формате Word, и чтоб не более 5 страниц. Вместе с иллюстрациями и библиографией. Видели когда-нибудь нормальную научную статью из 5 страниц? Найдете — покажите мне. А уж статей, качественно сверстанных в Word, — днем с огнем; большинство просто не в курсе про такую вещь, как стили.  Но я на поводу у толпы не иду и как правильный апологет CS все пишу исключительно в (La)TeX. Потом как-нибудь через ODF и MathML сконвертирую, если припрет.

Но что-то меня сегодня понесло на отвлеченные темы болтать, пора бы перейти к делу. Так вот, поскольку emacs теперь мой дом родной, то AUCTeX — просто-таки домашние тапочки, основная работа происходит именно в нем. Но какой же научный текст без библиографии? Вот и пришлось искать некий редактор BibTeX-файлов, встроенный в emacs (кто не в курсе, про что вообще речь и зачем он нужен, почитайте обзор BibTeX от Дебианщика). Таковым редактором оказался ebib. Это не режим никакой, а полноценное elisp-приложение, вроде Gnus.

ebib прост, как пятак. Для начала в ~/.emacs записываем строчку:

(autoload 'ebib "ebib" "Ebib, a BibTeX database manager." t)

Теперь запускаем его по M-x ebib, видим два буфера: верхний (индексный, index buffer) и нижний (буфер записи, entry buffer). В индексном буфере отображается список ключей всех записей в bib-базе. При выборе одного из ключей в буфере записи отображаются поля, описывающие соответствующий библиографический источник.

Ebib

Я не буду подробно и по шагам описывать, как именно пользоваться ebib — дело нехитрое. Лучше приведу небольшой набор наиболее полезных привязок:

  • o —открыть (создать) bib-файл;
  • q —выйти из ebib совсем (в индексном буфере) или завершить редактирование записи (в буфере записи);
  • z — отправить ebib на задний план, без закрытия файла (вернуть обратно опять по M-x ebib);
  • a — добавить запись;
  • e — редактировать запись (в индексном буфере) или поле (в буфере записи);
  • E —изменить ключ записи;
  • C-x b —завершить редактирование многострочного поля;
  • c, x, y —copy, cut, yank;
  • s — сохранить файл;
  • w — сохранить файл в другое место;
  • / — поиск в базе по регулярному выражению;
  • P — сформировать файл с таблицей всех записей в базе (мегаудобная штука!).

Теперь о самом главном — об интеграции с LaTeX-mode. Это происходит с двух сторон. Если мы редактируем tex-файл (то есть, находимся в LaTeX-mode), то в нашем распоряжении есть две замечательные функции:

  • ebib-insert-bibtex-key — в позицию курсора вставляется ссылка на источник, ключ которого мы зададим в минибуфере (при этом работает автодополнение!);
  • ebib-entry-summary — отобразить информацию о цитате, на которой находится курсор.

По умолчанию эти функции не закреплены за клавиатурными комбинациями, поэтому рекомундую сразу дописать в ~/.emacs следующее:

(add-hook 'LaTeX-mode-hook #'(lambda () (local-set-key "\C-cb" 'ebib-insert-bibtex-key)))
(add-hook 'LaTeX-mode-hook #'(lambda () (local-set-key "\C-cs" 'ebib-entry-summary)))

Разумеется, для корректной работы на заднем плане в это время должен работать ebib. Если же мы находимся в индексном буфере ebib’a, то можем выбрать ключ и нажать p (push), вставив тем самым цитату в некоторый другой буфер. Это хорошо тем, что перед глазами сразу вся база, и не нужно мучительно вспоминать имена ключей.

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

УжасноПлохоНормальноХорошоОтлично (Еще не оценили)
Loading ... Loading ...

Висячая пунктуация в LaTeX

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

Подробнее можно посмотреть, например, у Лебедева или погуглить.

Реализовать висячую пунктуацию можно в разных типографских программах, таких как Adobe InDesign. Можно даже сделать в Web-страницах, и даже динамически. Но везде это сопряжено с известными трудностями: нельзя просто сказать «а сделай-ка мне висячую пунктуацию» и беззаботно топтать текст. Наиболее просто вариант предлагает LaTeX: нужно просто вставить следующие настройки в преамбулу:

\usepackage{microtype}
\SetProtrusion
{
encoding = T2A,
family = faq
}
{
« = {1000,     },
» = {    , 1000},
„ = {1000,     },
“ = {    , 1000},
( = {1000,     },
) = {    , 1000},
! = {    , 1000},
? = {    , 1000},
: = {    , 1000},
; = {    , 1000},
. = {    , 1000},
- = {    ,  500},
{,}= {    , 1000}
}
\DeclareMicrotypeSet{t2atext}{encoding=T2A}
\UseMicrotypeSet{t2atext}

Чтобы все это заработало, придется установить последнюю версию пакета microtype. Параметр faq в приведенном выше коде — это семейство шрифтов. Здесь я использую пакет шрифтов pscyr и семейство антиквенных шрифтов (aq).

Висячая пунктуация

Идея взята из поста Roman Odaisky на РСДН и ЖЖ-поста ogoldberg.

УжасноПлохоНормальноХорошоОтлично (2 голосов, средний: 3.00 из 5)
Loading ... Loading ...