Дорогие друзья!
Поздравляю всех с наступающим Новым годом! Желаю в будущем году, как можно больше задач решать с помощью свободного программного обеспечения. Пусть оно приносит вам не только удовольствие и пользу, но и удачу. Желаю всем вам весь год заниматься тем, чем нравится!
До встречи в Новом году!
20081231
20081226
Русский BibTeX и XeLaTeX
К заметке о шрифтах OpenType в XeLaTeX добавляю примеры совместного использования русского языка, BibTeX и XeLaTeX, как вместе с
Первое, не очень красивое решение: использовать по-прежнему
Итак, предположим, что и документ, и библиография (bib-файл) набраны в уникоде (UTF-8) и содержат кириллические символы. Дальше есть два пути.
При использовании
Для использования
P.S. Также дополнил предыдущую заметку о XeLaTeX примером, как обеспечить одинаковый рост строчных букв разных гарнитур.
babel
, так и вместе с polyglossia
; смотрите PDF и его исходник.Внимание: всё нижеследующее относится к использованию XeLaTeX, а не обычного, проверенного временем LaTeX.Стандартное средство для работы с библиографией в LaTeX — BibTeX. Стандартное средство для «русификации» (включения нужных правил переноса, названий разделов, определённых типографических норм) — пакет
babel
. Однако ни BibTeX, ни babel
не умеют работать с уникодом. В результате при попытке использования этих средств в XeLaTeX могут быть проблемы. В частности, проблемы возникают при попытке использовать их одновременно: при наборе русских текстов с русской библиографией.Первое, не очень красивое решение: использовать по-прежнему
babel
, но подставлять костыли, переопределяющие русские символы. Второе решение: перейти от babel
к использованию более современного пакета polyglossia
.Итак, предположим, что и документ, и библиография (bib-файл) набраны в уникоде (UTF-8) и содержат кириллические символы. Дальше есть два пути.
При использовании
babel
в каталог с документом необходимо положить xecyr.sty
, а в преамбуле поместить примерно такой код:\usepackage[cm-default]{fontspec} % or install lmodernКомпилировать с помощью
\usepackage{xltxtra} % load xunicode
\usepackage[russian]{babel}
\usepackage{xecyr}
xelatex
, запуская bibtex
как обычно.Для использования
polyglossia
нужно установить пакеты etoolbox
и polyglossia
. Можно просто поместить файлы etoolbox.sty
, polyglossia.ins
и polyglossia.dtx
из этих пакетов в каталог с документом и выполнить$ latex polyglossia.ins
а в преамбулу документа добавить примерно такой код:\usepackage[cm-default]{fontspec} % or install lmodern
\usepackage{xltxtra} % load xunicode
\usepackage[russian]{polyglossia}
polyglossia
довольно похожа на babel
но имеет некоторые отличия. Чтобы переопределить название стандартного заголовка, например, списка литературы, можно использовать команду\gappto\captionsrussian{\renewcommand{\refname}{Мои ссылки}}
P.S. Также дополнил предыдущую заметку о XeLaTeX примером, как обеспечить одинаковый рост строчных букв разных гарнитур.
20081215
eeePC 901 и Debian (установка и настройка)
У моей жены теперь появился eeePC 901. Эту модель выбрали в основном потому, что в ней сочетается ещё достаточно компактный размер и малый вес (при этом экран уже 1024×600), ёмкий аккумулятор и экономичный процессор (это один из наиболее автономных нетбуков), при этом цена вполне разумна. Выбрали жизнерадостный зелёный вариант исполнения с предустановленным Linux (в этом случае второй встроенный флэш-диск 16 ГБ, а не 8 ГБ, как в версии с Windows).
Вообще, надо отметить, что мы, конечно, с самого начала планировали ставить на него полноценный дистрибутив, но всё равно меня очень огорчила неполная работоспособность предустановленного Xandros.
Всё дело в том, что в 901, 1000 и 1000H Асус стал ставить модуль WiFi Realtek RT2860, драйвер к которому довольно сырой и требует проприетарной прошивки. Как результат, eeePC 901 из коробки просто не мог подключиться к открытой (!) точке доступа (тоже Асус, кстати). Такой хоккей нам не нужен. Более того, я теперь не удивляюсь, что им где-то там возвращают машины с Linux. Даже такая базовая для нетбука вещь как WiFi из коробки в новых 901 толком не работает, и не работает по вине производителя. Очень, очень стыдно, Асус, мы в тебя верили, а ты явно предпочитаешь модели без Linux! Одно отрадно: за лицензию Windows платить не пришлось, а проблема с WiFi решаема.
Так что почти сразу появился стимул поставить нормальный Debian. Сразу скажу, что с установкой системы моя жена справилась самостоятельно. Я только подсказал, как загрузочный образ debian-eeepc.img записать на флэшку:
Для загрузки с установочной флэшки, нужно вставить флэшку, нажать ESC при перезагрузке устройства и выбрать устройство, с которого осуществлять загрузку. WiFi включается в BIOS (F2 при загрузке), это необходимо, если планируется ставить систему по беспроводной сети. Мы ставили по обычному Ethernet.
Основной источник информации при установке и настройке Debian на eeePC: Debian EeePC Wiki.
После установки почти всё сразу заработало. Ручного вмешательства потребовали только настройка sudo, WiFi и звук (микрофон). Засыпание/просыпание и видеокамера заработали сразу после установки. VGA-выход ещё не проверяли. Даже многопальцевые комбинации на тачпэде работают (хотя и не настраиваются, и мне кажутся непривычными после тачпэда synaptics). Bluetooth ещё не проверяли. Кардиридер работает.
sudo настраивается как обычно, запуском
Драйвер для WiFi доступен как на сайте производителя (Ralink), так и в репозитории
После установки
Вообще, попробовал wicd я совсем недавно, и должен сказать, что это наиболее логичная и ясная графическая конфигурялка сети, которую я пока что видел. Устанавливается созданием файла
Далее звук. Игрался он и так нормально, а вот с микрофона ничего не записывалось. Выяснилось, что поддержка Intel HDA Audio появилась в ALSA сравнительно недавно. Соответственно, нужно или ставить ядро 2.6.28-rc1 или более позднее, или собрать новую альзу самостоятельно. Мне было проще сделать второе.
Для сборки альзы, вначале устанавливаем
Аппаратные клавиши работают должным образом после установки пакета
Ещё остаётся задача как следует настроить тачпэд. В 901 используется тачпэд Elantech. У меня он сейчас настроен как
Дополнение 2009-03-07: см. также мою следующую заметку, как переназначить курсорные клавиши, Shift и PageUp/PageDown на ееePC 901.
Дополнение 2009-04-02: дополнил описанием, как пересобрать пакеты ALSA для Debian stable, как собрать пакет ядра 2.6.29, как настроить тачпэд Elantech.
Дополнение 2009-07-01: в свежей заметке — как бороться с тормозами Firefox-а на eeePC.
Дополнение 2009-07-09: упомянул
Вообще, надо отметить, что мы, конечно, с самого начала планировали ставить на него полноценный дистрибутив, но всё равно меня очень огорчила неполная работоспособность предустановленного Xandros.
Всё дело в том, что в 901, 1000 и 1000H Асус стал ставить модуль WiFi Realtek RT2860, драйвер к которому довольно сырой и требует проприетарной прошивки. Как результат, eeePC 901 из коробки просто не мог подключиться к открытой (!) точке доступа (тоже Асус, кстати). Такой хоккей нам не нужен. Более того, я теперь не удивляюсь, что им где-то там возвращают машины с Linux. Даже такая базовая для нетбука вещь как WiFi из коробки в новых 901 толком не работает, и не работает по вине производителя. Очень, очень стыдно, Асус, мы в тебя верили, а ты явно предпочитаешь модели без Linux! Одно отрадно: за лицензию Windows платить не пришлось, а проблема с WiFi решаема.
Так что почти сразу появился стимул поставить нормальный Debian. Сразу скажу, что с установкой системы моя жена справилась самостоятельно. Я только подсказал, как загрузочный образ debian-eeepc.img записать на флэшку:
0. посмотреть как называется устройство флэшки в выводе командыи подсказал ещё как лучше разбить диск (/ на первом флэш-диске, 4 ГБ, /home на втором, 16 ГБ, раздел для подкачки не создавали). Следуя рекомендации в Debian Wiki мы оставили два небольших раздела на первом флэш-диске. Вроде бы это ускоряет загрузку.mount
,
1. отсоединить том флэшки,
2.dd if=debian-eeepc.img of=/dev/устройство_флэшки
,
3.sync
Для загрузки с установочной флэшки, нужно вставить флэшку, нажать ESC при перезагрузке устройства и выбрать устройство, с которого осуществлять загрузку. WiFi включается в BIOS (F2 при загрузке), это необходимо, если планируется ставить систему по беспроводной сети. Мы ставили по обычному Ethernet.
Основной источник информации при установке и настройке Debian на eeePC: Debian EeePC Wiki.
После установки почти всё сразу заработало. Ручного вмешательства потребовали только настройка sudo, WiFi и звук (микрофон). Засыпание/просыпание и видеокамера заработали сразу после установки. VGA-выход ещё не проверяли. Даже многопальцевые комбинации на тачпэде работают (хотя и не настраиваются, и мне кажутся непривычными после тачпэда synaptics). Bluetooth ещё не проверяли. Кардиридер работает.
sudo настраивается как обычно, запуском
visudo
от root-а, и добавлением строки username ALL=(ALL) ALL
в файл /etc/sudoers
. Другой вариант, раскомментировать строчку %sudo ALL=NOPASSWD: ALL
а пользователя добавить в группу sudo.Драйвер для WiFi доступен как на сайте производителя (Ralink), так и в репозитории
deb http://eeepc.debian.net/debian lenny main contrib non-free
Данный репозиторий подключается автоматически, если установка велась с указанного выше загрузочного образа.После установки
rt2860-modules-2.6.26-1-686
появляется возможность использовать сетевой интерфейс ra0
. Разные способы настройки описаны здесь. Я же выбрал лёгкий путь и поставил wicd. Минутой позже я спокойно подключился к точке доступа с WPA2PSK.Вообще, попробовал wicd я совсем недавно, и должен сказать, что это наиболее логичная и ясная графическая конфигурялка сети, которую я пока что видел. Устанавливается созданием файла
/etc/apt/sources.list.d/wicd.list
с указанием на сторонний репозиторий:deb http://apt.wicd.net lenny extras
импортом ключей:wget -q http://apt.wicd.net/wicd.gpg -O- | sudo apt-key add -
и после этого обычной установкой пакета wicd
(с удалением NetworkManager). Запустить апплет wicd для панели Gnome: wicd-client
.Далее звук. Игрался он и так нормально, а вот с микрофона ничего не записывалось. Выяснилось, что поддержка Intel HDA Audio появилась в ALSA сравнительно недавно. Соответственно, нужно или ставить ядро 2.6.28-rc1 или более позднее, или собрать новую альзу самостоятельно. Мне было проще сделать второе.
Дополнение 2009-04-02. Несколько слов о сборке ядра 2.6.29 для Debian. Хотя пакет этого ядра уже появился в репозиториях (sid), ставить его на eeePC 901 смысла нет: драйвер тачпэда Elantech в нём выключен, а поддержку WiFi-модуля в Debian-ядре вообще выкинули по лицензионным соображениям (см. баги #522078 и #521553).
Короче, поступать в этой ситуации следует так:
1) не устанавливать готовых пакетов Debian, а взять исходники ядра на kernel.org и собрать пакет самостоятельно; при этом получив и поддержку тачпэда, и поддержку WiFi, и ядро, оптимизированное для настольных приложений — «из коробки»; постарался отключить всё лишнее, но явно отключил не всё. Конфигурацию ядра я частично позаимствовал отсюда. Основные особенности:CONFIG_PREEMPT=y
(десктоп),CONFIG_RT2860=y
(встроенный WiFi),CONFIG_MOUSE_PS2_ELANTECH=y
(тачпэд Elantech),CONFIG_ATL1E
(гигабитный Ethernet);
2) следовать инструкциям по сборке собственного пакета с ядром; если кратко, то переходим в каталог с распакованными исходниками ядра и делаем следующее:$ make menuconfigНе забываем перед этим установить
$ make-kpkg clean
$ nice -n +10 fakeroot make-kpkg --initrd --revision=eee901 kernel_image kernel_headerskernel-package
иzlib1g-dev
;
3) переходим на один каталог выше и устанавливаем собранные пакеты:$ cd ..
$ sudo dpkg -i linux-headers-*.deb linux-image-*.deb
4) Перед тем, как перезагрузиться, не забываем пересобрать те модули, которые ставились из исходников. Например, пересобрать пользовательские модули ALSA изalsa-source
можно так:sudo nice -n +10 m-a a-i -l 2.6.29 alsaХотя, кстати, с 2.6.29 я уже не уверен, что это нужно. Спросите экспертов;
5) после перезагрузки у меня вроде всё заработало (о настройке тачпэда см. ниже): WiFi, двухпальцевых скроллинг на тачпэде, звук и запись звука, видеокамера, кардридер, блутус (встроенный Bluetooth ещё не проверял, внешний USB-модуль работает), засыпание-просыпание, датчики батареи.
Для сборки альзы, вначале устанавливаем
linux-headers
:sudo aptitude install linux-headers-`uname -r`
после чего можно скачивать исходники альзы. Исходники распаковываем, переходим в каталог с ними, делаем $ ./configure --with-cards=hda-intel
$ make
$ sudo make install-modules
$ sudo ./snddevices
Конечно, не Debian-way, но работает. После установки драйверов из alsa-drivers-1.0.18a и перезагрузки заработал и микрофон, и регулировка громкости аппаратными клавишами.Дополнение 2009-04-02: правильный для Debian способ заключается в пересборке пакетов ALSA. Тогда драйвера не будут затираться при каждом апгрейде ALSA в дистрибутиве. Конкретно в этом случае, если система Lenny (stable), а нужная версия доступна только в Sid (unstable), я поступил так:
1) добавил репозиторий исходников sid в/etc/apt/sources.list
:# sid source repositoryи вполнил
deb-src http://ftp.debian.org/debian sid main contrib non-freesudo aptitude update
.
2) во временном каталоге выполнил$ apt-get -t sid source alsa-baseт.е. вытащил все исходники пакета alsa из репозитория sid. Затем скачал и установил все необходимые для сборки зависимости:$ sudo apt-get -t sid build-dep alsa-baseМожно сохранить где-нибудь список, чтобы было проще удалить их потом. Наконец, перешёл в каталог с пакетом:$ cd alsa-driver-1.0.19.dfsg/Конкретная версия может отличаться.
3) Редактирую файл списка изменений$ vi debian/changelogНа самом деле просто добавил «~backport1
» к номеру версии. Новую запись в файлеchangelog
делаю по образцу предыдущих (сохраняю отступы и количество пробелов). Время в нужном формате печатает командаdate -R
.
4) Пересобираю пакеты:$ fakeroot dpkg-buildpackage -us -ucПерехожу на каталог выше и устанавливаю все собранные пакеты:$ cd ..Почти готово.
$ sudo dpkg -i linux-sound-base_1.0.19.dfsg-2~backport1_all.deb \
alsa-base_1.0.19.dfsg-2~backport1_all.deb \
alsa-source_1.0.19.dfsg-2~backport1_all.deb
5) Осталось собственно собрать модули для текущей версии ядра. Для этого должен быть установлен пакетlinux-headers
иmodule-assistant
. Тогда сборка и установка будет практически автоматической:$ sudo m-a a-i alsaВсё. Теперь «правильная» альза должна быть установлена «правильным» способом. И пока в stable не появится более свежей альзы, будет использоваться «бэкпорт». При обновлении ядра нужно будет повторить только последний шаг (5). Чтобы новые модули заработали, нужно или выгрузить вручную все старые модули, которые начинаются наsnd...
, или просто перезагрузиться.
Аппаратные клавиши работают должным образом после установки пакета
eeepc-acpi-scripts
из указанного выше специального репозитория Debian для eeePC. Опять же, при установке со специального образа, он устанавливается по-умолчанию.Ещё остаётся задача как следует настроить тачпэд. В 901 используется тачпэд Elantech. У меня он сейчас настроен как
Section "InputDevice"и он вроде работает. Кажется, только, иногда подтормаживает. Двумя пальцами делается вертикальная прокрутка и эмулируется средняя кнопка мыши, тремя пальцами эмулируется правая кнопка мыши, краткое касание второго пальца при удержании первого включает режим перетаскивания. Эти комбинации работают, но после тачпэда synaptics кажутся непривычными, и некоторые из них я бы отключил, особенно перетаскивание. На первое время я убавил чувствительность тачпэда в настройках Gnome.
Identifier "Configured Mouse"
Driver "mouse"
EndSection
Дополнение 2009-04-02: если было установлено достаточно свежее ядро с поддержкой тачпэдов Elantech (см. выше инструкции по установке ядра 2.6.29), то можно использовать нормальный драйвер тачпэда. Соответственно вСсылки по теме:Народный опыт (*nix на схожих моделях):/etc/X11/xorg.conf
помещаем:Section "InputDevice"Кроме этого нужно установить
Identifier "Configured Mouse"
Driver "synaptics"
Option "Device" "/dev/input/mouse0"
Option "Protocol" "auto-dev"
Option "SHMConfig" "true"
Option "VertTwoFingerScroll" "1"
Option "HorizTwoFingerScroll" "1"
Option "TapButton1" "1"
Option "TapButton2" "2"
Option "TapButton3" "3"
EndSectionxserver-xorg-input-synaptics
версии не ниже 0.99.3. Готовые пакеты для Debian Lenny (stable) можно взять здесь. После перезапуска иксов, будет работать как вертикальный, так и горизонтальный скролинг двумя пальцами на тачпэде.
Подробности о настройке тачпэда смотрим в DebianEeePc Wiki.
- Ubuntu 8.04 Hardy на eeePC 1000H (ⓒ passshok)
- Fedora 10 на eeePC 1000H (ⓒ Tigro)
- openSUSE 11, Fedora 10, Debian testing, FreeBSD 8 на Acer Aspire One (ⓒ hrafn)
- Gentoo на eeePC 901 (ⓒ TheMixa)
- openSUSE 1.1 на MSI Wind U100 (ⓒ magik)
Дополнение 2009-03-07: см. также мою следующую заметку, как переназначить курсорные клавиши, Shift и PageUp/PageDown на ееePC 901.
Дополнение 2009-04-02: дополнил описанием, как пересобрать пакеты ALSA для Debian stable, как собрать пакет ядра 2.6.29, как настроить тачпэд Elantech.
Дополнение 2009-07-01: в свежей заметке — как бороться с тормозами Firefox-а на eeePC.
Дополнение 2009-07-09: упомянул
CONFIG_ATL1E
(гигабитный Ethernet). Убрал ссылки на конфиг ядра, в котором его не было.
20081209
Пример рисования в PyCairo
Пробуя библиотеку для рисования Cairo из Python, сделал такую вот табличку:
У кого браузер не поддерживает SVG, сморим PNG.
Идею нарисовать временную шкалу использования языков программирования дал мне вот этот опрос на StackOverflow («В каком возрасте вы начали программировать?»).
Кто хочет себе такую же табличку (в смысле, аналогичную), скрипт к вашим услугам (Public Domain). Требует PyCairo (
Оказалось, рисовать из Python в Cairo очень просто. При этом можно получать изображения в векторном формате (PDF, PostScript, SVG), не говоря уже о PNG. Можно будет использовать в будущем для автоматизированного создания схем и графиков, если готовых программ вдруг не хватит.
Есть самоучитель Cairo Tutorial (тоже на примере Python). Если очень кратко, то это делается так:
Шаг 1. Импортируем модуль:
Шаг 2. Создаём «поверхность» и берём из неё «контекст» для рисования. Я рисовал сразу в SVG файл:
Шаг 3. Рисуем, используя контекст:
Шаг 4. Нарисовавшись всласть, сохраняем результат (закрываем «поверхность»):
У кого браузер не поддерживает SVG, сморим PNG.
Идею нарисовать временную шкалу использования языков программирования дал мне вот этот опрос на StackOverflow («В каком возрасте вы начали программировать?»).
Кто хочет себе такую же табличку (в смысле, аналогичную), скрипт к вашим услугам (Public Domain). Требует PyCairo (
python-cairo
).Оказалось, рисовать из Python в Cairo очень просто. При этом можно получать изображения в векторном формате (PDF, PostScript, SVG), не говоря уже о PNG. Можно будет использовать в будущем для автоматизированного создания схем и графиков, если готовых программ вдруг не хватит.
Есть самоучитель Cairo Tutorial (тоже на примере Python). Если очень кратко, то это делается так:
Шаг 1. Импортируем модуль:
import cairo
Шаг 2. Создаём «поверхность» и берём из неё «контекст» для рисования. Я рисовал сразу в SVG файл:
svg=cairo.SVGSurface("имяфайла.svg",ширина_в_пунктах,высота_в_пунктах)
ctx=cairo.Context(svg)
Шаг 3. Рисуем, используя контекст:
ctx.set_line_width(ширина_линии) # выбираем линию
ctx.set_source_rgba(красный,зелёный,синий,прозрачность) # выбираем цвет
ctx.move_to(x,y) # перемещаем «курсор»
ctx.line_to(x2,y2) # рисуем линию от позиции «курсора» до x2,y2
ctx.arc(x,y,радиус,угол1,угол2) # рисуем дугу с центром в (x,y)
ctx.close_path() # замыкаем контур
ctx.fill() # заливаем контур выбранным цветом
ctx.stroke() # обводим контур выбранной линией
ctx.set_font_size(размер_шрифта) # выбираем размер шрифта, можно дробный
ctx.show_text("буквы") # пишем слово «буквы»
Шаг 4. Нарисовавшись всласть, сохраняем результат (закрываем «поверхность»):
svg.finish()В качестве справки используем документацию по Cairo для языка Си. Изменения для Python-скриптов вполне очевидны: вместо передачи параметров
cairo_t *cr
используем методы объекта-контекста. Аналогично для поверхностей.
20081206
Диссертация в LaTeX
Мой коллега-блоггер Миша Конник задумал титанический труд на тему «Как написать диплом в LaTeX». Который по задумке должен стать циклом статей, охватывающий вопросы от установки до вёрстки в LaTeX. Некоторые статьи уже готовы. Кстати, один подобный цикл статей, но более общего характера, уже существует.
Мне лично представляется, что при такой широте охвата материала работа эта необъятная. И если это будет коллективная работа, то место ей в Викиучебниках. Особенно в том, что касается вёрстки в LaTeX. Слишком много возможностей, слишком разные у всех задачи и тексты. Вопросы же установки и настройки во многом зависят от используемой ОС и используемого дистрибутива LaTeX. Остаются вопросы специфичные для написания именно диплома (или подобных работ: курсовых, диссертаций, отчётов). Я же в своём блоге стараюсь разрешать конкретные, частные вопросы.
В этой заметке я поделюсь кое-каким опытом написания кандидатской диссертации в LaTeX. Многое пригодится и тем, кто пишет дипломы. Писал я её три года назад, пользовался тогда teTeX (теперь TeXLive). Однако почти всё должно работать и сейчас. Во всяком случае, мой исходник по-прежнему компилируется PDFLaTeX. Об использовании русского языка в PDFLaTeX см. эту заметку. Не утверждаю, что всё сделал правильно или наилучшим образом. Очень может быть, что для ряда задач появились с тех пор лучшие решения.
Оставлю также в стороне нетехнические вопросы: что писать, как писать и как организовать работу. Вот тут есть некоторые рекомендации (на английском), многое применимо и в отечественных условиях.
Из технических вопросов, можно выделить:
В плане размера шрифтов, межстрочного интервала* и полей я полагался на настройки пакета dissert.cls. Однако эти вещи легко настраиваются и вручную, см. заметки изменение межстрочного интервала в LaTeX и как задать поля страницы в LaTeX.
Переопределение формата нумерации в списке литературы:
Для организации иллюстраций несколько в одной я использовал пакет
Шаблон же основной части документа у меня был такой:
В будущем, возможно, я дополню эту заметку особенностями набора математики (пока можно обратиться к примерам К. Воронцова), некоторыми особенностями набора автореферата (который набирается на формате A5) и шаблоном титульного листа.
Хотя этот текст распространяется, как обычно в моём блоге, по лицензии CC-BY-NC-SA (т.е. со ссылкой на советы.блогспот.ком и не для коммерческого использования), но если кто-то хочет использовать его в Викиучебниках или других проектах Wikimedia Foundation, то в этом случае можно распространять на условиях GFDL.
Дополнение 2009-10-18: нашёл ещё серию статей Павла Самолысова «Верстаем диплом в LaTeX». Может кому пригодится.
Мне лично представляется, что при такой широте охвата материала работа эта необъятная. И если это будет коллективная работа, то место ей в Викиучебниках. Особенно в том, что касается вёрстки в LaTeX. Слишком много возможностей, слишком разные у всех задачи и тексты. Вопросы же установки и настройки во многом зависят от используемой ОС и используемого дистрибутива LaTeX. Остаются вопросы специфичные для написания именно диплома (или подобных работ: курсовых, диссертаций, отчётов). Я же в своём блоге стараюсь разрешать конкретные, частные вопросы.
В этой заметке я поделюсь кое-каким опытом написания кандидатской диссертации в LaTeX. Многое пригодится и тем, кто пишет дипломы. Писал я её три года назад, пользовался тогда teTeX (теперь TeXLive). Однако почти всё должно работать и сейчас. Во всяком случае, мой исходник по-прежнему компилируется PDFLaTeX. Об использовании русского языка в PDFLaTeX см. эту заметку. Не утверждаю, что всё сделал правильно или наилучшим образом. Очень может быть, что для ряда задач появились с тех пор лучшие решения.
Оставлю также в стороне нетехнические вопросы: что писать, как писать и как организовать работу. Вот тут есть некоторые рекомендации (на английском), многое применимо и в отечественных условиях.
Из технических вопросов, можно выделить:
- Вопросы соответствия требованиям по оформлению работы (как правило, они определяют используемый шрифт, макет страницы, отступы, порядок нумерации объектов, страниц, формат подписей, макет титульной страницы); тут лучше положиться на советы своего научного руководителя.
В случае диссертаций, в соответствии с Положением о порядке присуждения ученых степеней, утверждены формы титульных листов диссертации и автореферата, а оформление диссертации «должно соответствовать требованиям, устанавливаемым Министерством образования Российской Федерации»
- Вопросы соответствия нормам отечественной полиграфии (не секрет, что ЛаТэХ по-умолчанию набирает «по-американски», в том числе формулы и математику), тут для начала можно посмотреть примеры правильного набора у К. Воронцова; вот некоторые из отличий:
- кавычки у нас используются французские или немецкие;
- иначе набирается тире (во всех случаях);
- отличается ряд математических символов, например, знаки нестрогих неравенств;
- используется другое начертание греческих букв;
- отличаются обозначения ряда функций и ряд других математических обозначений;
- знак «равно» дублируется при разрыве формулы на две строки;
- первый абзац набирается тоже с отступом;
- кавычки у нас используются французские или немецкие;
- Оформление списка литературы регламентируется соответствующими ГОСТами. С 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''Также я использовал пакет hangcaption, чтобы обеспечить «висящие» номера иллюстраций. Это выглядело примерно так:
\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
Я также включал макрос
________________
,́ `.
| |
| @}---,--`-- |
| |
`.________________,'
Рис. 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». Может кому пригодится.
20081203
Символьные вычисления в SymPy онлайн
Интерактивная демо-сессия SymPy: live.sympy.org. Теперь любой желающий сразу может попробовать в действии эту библиотеку для компьютерной алгебры в Python.
Также может пригодится как символьный веб-калькулятор :) Там же есть и графическая версия консоли, в которой формулы отрисовываются как в LaTeX.
Также может пригодится как символьный веб-калькулятор :) Там же есть и графическая версия консоли, в которой формулы отрисовываются как в LaTeX.
20081201
XeLaTeX и шрифты OpenType в LaTeX
Использовать нестандартные гарнитуры в традиционном LaTeX не так-то просто. Практически, необходимо иметь отдельный пакет LaTeX для каждой новой гарнитуры. Для ряда распространённых гарнитур такие пакеты есть. А если хочется нестандартную гарнитуру, для которой нет стандартного пакета?
Легко использовать любые современные шрифты TrueType и OpenType позволяет XeLaTeX.
Вначале нужно установить XeLaTeX. В Debian/Ubuntu для этого достаточно поставить пакет
Помимо этого, нужно определиться собственно с используемыми шрифтами. XeLaTeX может использовать любые шрифты, которые может использовать Fontconfig. Просмотреть список установленных в системе шрифтов и их имена можно с помощью команды
Далее создаём документ LaTeX, как обычно. В преамбулу добавляем:
Как я понял,
Затем можно задать стандартные шрифты документа:
Компилировать нужно с помощью
пример использования (исходник, UTF-8)
пример использования (PDF)
Да, очень рекомендую посмотреть на что способен XeLaTeX, если ему дать хороший шрифт. Вот только где бы ещё лицензионных (свободно распространяемых) русских шрифтов найти…
Дополнение: XeLaTeX не совместим с пакетом
Дополнение 20081226: выкладываю также примеры использования BibTeX совместно с XeLaTeX для написания русскоязычных текстов. Рассмотрены оба способа: и с
Легко использовать любые современные шрифты TrueType и OpenType позволяет XeLaTeX.
Вначале нужно установить XeLaTeX. В Debian/Ubuntu для этого достаточно поставить пакет
texlive-xetex
.Помимо этого, нужно определиться собственно с используемыми шрифтами. XeLaTeX может использовать любые шрифты, которые может использовать Fontconfig. Просмотреть список установленных в системе шрифтов и их имена можно с помощью команды
fc-list
: $ fc-list | grep Inconsolata
Inconsolata:style=Medium
Ещё можно поставить программу FontMatrix для просмотра и сравнения шрифтов. Установку дополнительных шрифтов я здесь описывать подробно не буду, скажу лишь, что в большинстве случаев для этого достаточно поместить файлы шрифта в ~/.fonts/
.Далее создаём документ LaTeX, как обычно. В преамбулу добавляем:
\usepackage[cm-default]{fontspec}Главный пакет тут —
\usepackage{xunicode}
\usepackage{xltxtra}
fontspec
. Опция cm-default
необходима, чтобы он не пытался использовать шрифты lmodern
(которые в Debian/Ubuntu надо ставить отдельно, а русских глифов в них всё равно нет).Как я понял,
xunicode
изменяет традиционнее латэховские макросы вроде \"
таким образом, что немецкую «о умляют» (ö) в XeLaTeX можно ввести не только напрямую с клавиатуры как ö
, но и как обычно, \"o
. Вообще, все уникодные символы можно вводить непосредственно с клавиатуры (например, с помощью клавиши Compose). Это удобно. Пакет xltxtra
добавляет чудесный макрос \XeLaTeX
. Затем можно задать стандартные шрифты документа:
\setromanfont{Charis SIL}В общем-то, названия этих команд говорит сами за себя. Они меняют шрифт всего документа в целом. Есть ещё команда
\setsansfont{Liberation Sans}
\setmonofont{Inconsolata}
\setmainfont{Имя шрифта}
.Дополнение 20081226: поскольку рост строчных букв у разных гарнитур одного кегля разнится, то при совместном использовании в пределах одного абзацах их необходимо соответствующим образом масштабировать. Для того, чтобы обеспечить одинаковый росит строчных букв, можно задать глобальную опцию:Временное переключение гарнитуры делается командой\defaultfontfeatures{Scale=MatchLowercase}Можно, конечно, задавать опцию Scale для каждой гарнитуры отдельно. Аналогичная опцияScale=MatchUppercase
позволяет обеспечить единый рост заглавных букв разных гарнитур.
\fontspec{Имя шрифта}
в теле документа.Компилировать нужно с помощью
xelatex
вместо latex
. А так — как обычно. Получается PDF. Всё на удивление просто. Примеры по ссылкам. Инструкции в примерах немного более подробные, чем в этой заметке.пример использования (исходник, UTF-8)
пример использования (PDF)
Да, очень рекомендую посмотреть на что способен XeLaTeX, если ему дать хороший шрифт. Вот только где бы ещё лицензионных (свободно распространяемых) русских шрифтов найти…
Дополнение: XeLaTeX не совместим с пакетом
babel
. Можно или пользоваться дополнительным пакетом xecyr
, переопределяющий кириллический символы LaTeX в соответствии с уникодом, или пользоваться пакетом polyglossia
, заменяющим babel
. Спасибо Shender-у за подсказанные решения.Дополнение 20081226: выкладываю также примеры использования BibTeX совместно с XeLaTeX для написания русскоязычных текстов. Рассмотрены оба способа: и с
babel
+xecyr
, и с polyglossia
.
Подписаться на:
Сообщения (Atom)