[XeTeX] How to make hyphenation work in XeLaTeX?
Nikola Lecic
nlecic at EUnet.yu
Mon Jan 22 16:41:08 CET 2007
Yves and Jonathan, thank you so much, hyphenation in both languages is
working now. XeLaTeX typesetting Ancient Greek and Serbian Cyrillic in
their real forms (i.e. in Unicode) -- with hyphenation and endless font
features -- is a form of happiness :) To sum up, these steps led to
desired output:
(i) I downloaded xu-grahyph4.tex and xu-srhyphc.tex and placed them to
the 'hyphen' directory (and renamed previously downloaded xgrahyph.tex
to utf8-grahyph4.tex to match inclusion filename from Greek xu-... version),
(ii) edited language.dat (serbian xu-srhyphc.tex and greek xu-grahyph4.tex),
(iii) run 'fmtutil --byfmt xelatex',
(iv) and arranged XeLaTeX commands like this:
\usepackage{fontspec}
\usepackage[serbian,greek,english]{babel}
\def\cyrillicencoding{EU1}
\let\greektext\relax
[...]
\newcommand{\sr}[1]{{\selectlanguage{serbian}\srfont #1}}
\newcommand{\gr}[1]{{\selectlanguage{greek}\grfont #1}}
And that works.
(By the way, \section{Pythagorean \gr{σύμβολα}} doesn't work due to
\selectlanguage, while \sr and \gr work properly inside thm or
\paragraph{...}. That's obviously babel's confusion again, isn't it?
However, it doesn't matter at all, because one doesn't need hyphenation
in section names and fontspec language- and script-related features
still work in \section{Pythagorean \grfont{σύμβολα}}).
Nikola
Jonathan Kew a écrit :
> If your document declares something like
>
> \usepackage[greek,russian,english]{babel}
>
> then the patterns are available; the main problem is that if you say
>
> \selectlanguage{greek}
>
> to set the hyphenation language, this will *also* mess with your font.
>
> To work around this, you could say
>
> \let\greektext\relax
>
> after loading the Babel package; this eliminates Babel's hook that
> changes the font/encoding. So if you've selected Gentium with
> fontspec, everything should be fine. (As far as hyphenation and font
> choice are concerned. The Greek text for headings, captions, etc.,
> won't be right, as the Babel file greek.ldf is non-Unicode.)
>
> For Russian (or presumably other Cyrillic-script languages), I think
> you want to say
>
> \def\cyrillicencoding{EU1}
>
> *before* loading Babel, IIRC.
>
> All this is a bit messy, but until there's a Unicode-aware Babel
> replacement or update, it should be possible to work around the
> issues using techniques like this.
>
Yves Codet a écrit :
> As far as I know XeTeX doesn't set language environments at all. You
> can set them with Babel but if you do that for Greek, it will use its
> default font, which isn't what you want and leads to the errors you
> mention below.
>
>
> There's "xu-srhyphc.tex" (in TeX Live 2007, at least), which modifies
> "srhyphc.tex" so that XeTeX can use it.
...
> Personally I would do something like this:
>
> \setromanfont{Doulos SIL} % for the main language (English?)
> \newfontfamily\greekfont{Gentium}
> \newcommand{\gr}[1]{{\language=\greek\greekfont #1}}
>
> For Serbian I don't know how "xu-srhyphc.tex" can be called without
> Babel.
>
>
...
> If you mean why doesn't it use "Gentium" instead of "cbgreek", it's
> not XeLaTeX's but Babel's fault.
>
> The problem you have, and many other users have, was clearly
> explained by Bruno Voisin in a previous post (unfortunately I don't
> have it at hand): we need a replacement for Babel. Perhaps a minimal
> post-Babel package could only include a way to select hyphenation
> patterns, which seems to be the most urgent need.
>
More information about the XeTeX
mailing list