?

Log in

No account? Create an account

Previous Entry Share Next Entry
XeLaTeX и "---
gooroo and apple-2
bodigrim_new wrote in ru_tex
Пытаюсь перейти с LaTeX на XeLaTeX. Убрал в преамбуле babel, добавил polyglossia. В результате все нормально, но перестали срабатывать команды "--- и "--*. Как это исправить? Заменить их просто на юникодное тире не хочется - АФАИР, эти команды еще и с отступами вокруг взаимодействуют.

Преамбула:
\documentclass[14pt,a4paper,draft]{extarticle}

\usepackage{polyglossia}
\setmainfont{DejaVu Serif}
\setsansfont{DejaVu Sans}
\setmonofont{DejaVu Sans Mono}
\defaultfontfeatures{Scale=MatchLowercase, Mapping=tex-text}
\setdefaultlanguage[spelling=modern]{russian}
\setotherlanguage{english}

\usepackage{amsfonts,amsmath,amssymb,mathtext,latexsym}
\usepackage{verse}
\usepackage{bbding}

  • 1
\defaultfontfeatures{Mapping=tex-text}

разве это распространяется на бабелевские шортхэнды?

\setdefaultlanguage{russian}
\setkeys{russian}{babelshorthands=true}

первая строчка у вас есть, нужна только вторая.

Не работает:
! Package xkeyval Error: `babelshorthands' undefined in families `russian'.

Работает:

\documentclass{article}

\usepackage{polyglossia}
\setmainfont{DejaVu Serif}
\setsansfont{DejaVu Sans}
\setmonofont{DejaVu Sans Mono}
\defaultfontfeatures{Scale=MatchLowercase, Mapping=tex-text}
\setdefaultlanguage[spelling=modern]{russian}
\setkeys{russian}{babelshorthands=true}
\setotherlanguage{english}

\begin{document}

a "--- b
\end{document}

\NeedsTeXFormat{LaTeX2e}
\ProvidesPackage{polyglossia}[2010/07/27 v1.2.0a
Babel replacement for XeLaTeX]

Неа, не работает. Та же самая ошибка.

Или я что-то не понял?

Версия полиглоссии? У меня:

$ head -2 `kpsewhich polyglossia.sty`
\NeedsTeXFormat{LaTeX2e}
\ProvidesPackage{polyglossia}[2010/07/27 v1.2.0a

Ага, у меня 2009/01/25 v1.0.2

Хм. Поставил TeX Live 2011 со свежим xelatex. Теперь новая загадка: вот такой фрагмент кода при сборке зависает на некоторое время, а затем падает с ошибкой о превышении памяти.

\documentclass{article}
\usepackage{polyglossia}

\defaultfontfeatures{Scale=MatchLowercase, Mapping=tex-text}

\setmainfont{Linux Libertine O}
\setdefaultlanguage{russian}

\begin{document}
aaa
\end{document}

С другой стороны он работает в любом из следующих случаев:
а) если убрать опцию Scale=MatchLowercase
б) если убрать строчку \setdefaultlanguage{russian}
в) если очистить тело документа

Как бы эту проблему одолеть?

На TeX Live 2009 c xelatex 0.9995 работает нормально, а в 0.9997.5 - зависает и падает.

Только с этим шрифтом проблема?

о, а подскажите плиз ссылки на более или менее последовательную вводную: чем xelatex отличается от pdflatex'а и какова его поддержка в стандартных дистрибутивах. Наивно попытался скомпиллировать простой файл с вашей преамбулой - ругнулось на отсутствие полиглоссии. texlive-2007-47.fc11. Дистрибутив не обновляю по ряду причин. В новых релизах должно работать автоматически?

xelatex: юникодные файлы, использование шрифтов формата otf с их фичами напрямую (без tfm-vf-fd-...). (Двунаправленным набором не интересовался, но, как следует из самого названия, он это тоже умеет.)

В новых должно работать.

Спасибо. Конечно это даже не abstract такой вводной, но погуглить мотивирует.

Я доставил texlive-xetex и все заработало из коробки.

В качестве вводной пользовался статьей в Вики и далее по ссылкам.

А что делают "--- и "--* ?

Нашёл:
"--- Cyrillic emdash in plain text.
"--~ Cyrillic emdash in compound names (surnames).
"--* Cyrillic emdash for denoting direct speech.
Но всё равно не понимаю:
Чем "--- отличается от --- ?
Чем "--~ и "--* отличаются от "--- ?

Поведением отступов до и после тире и возможностью переноса по тире. После "--* ставится нерастягиваемый пробел, чтобы все реплики прямой речи начинались на одном уровне. По "--~ можно переносить, даже если за ним не следует пробел.

А "--- для чего нужно?

Сравните пробелы в а --- б и а "--- б.

И почему для русского нужны меньшие пробелы?

Так принято в отечественной типографской традиции.

По "--- тоже можно переносить, а после "--~ не ставится пробел.

Вот, нашел у Сюткина правильное описание:

Пакет russianb вводит три команды для набора тире, которые печатаются согласно россий-
ской традиции.
Команда "--- используется для печати тире в тексте. Оно несколько короче английского
длинного тире. Кроме того, команда задаёт небольшую жёсткую отбивку от слова, стоящего
перед тире. При этом, само тире не отрывается от слова. После тире следует такая же
отбивка от текста, как и перед тире. При наборе текста между словом и командой, за
которым она следует, должен стоять пробел.
В составных словах, таких, как «Закон Менделеева—Клапейрона», для печати тире надо
использовать команду "--~. Она ставит более короткое, по сравнению с английским, тире и
позволяет делать переносы во втором слове. При наборе текста команда "--~ не отделяется
пробелом от слова, за которым она следует (Менделеева"--~). Следующее за командой
слово может быть отделено от неё пробелом или перенесено на другую строку.
Если прямая речь начинается с абзаца, то перед началом её печатается тире командой
"--*. Она печатает русское тире и жёсткую отбивку нужной величины перед текстом.
Вместо команд, начинающихся с символа ", можно использовать аналогичные им по
действию, но более длинные в наборе, команды \cdash---, \cdash--~ и \cdash--*,
соответственно.

хотя у меня --- и "--- одинаковой длины

  • 1