.. -*- rst-mode -*-

Greek text with the LGR font encoding
***************************************

:Copyright: © 2010 Günter Milde
:Licence:   This work may be distributed and/or modified under the
            conditions of the `LaTeX Project Public License`_, either
            version 1.3 of this license or any later version.

:Abstract:  The LGR font encoding is the de-facto standard for Greek
            typesetting with (8-bit) LaTeX. However, the encoding definition
            file that ships with babel_ misses many of the definitions common
            since the advent of the NFSS [fntguide]_.

            The `lgrx` bundle provides packages and definitions for
            typesetting Greek text with fonts in the LGR encoding.  It works
            for both, monotonic and polytonic Greek, independent of the
            `babel` package.

            The bundle is available from CTAN__ and included in 
            TeXLive 2012.

            __ http://www.ctan.org/pkg/lgrx

.. Note::

   The TeXLive 2012 pre-release contains the Unicode definition file
   ``lgrenc.dfu`` in the documentation instead of the TEXPATH. To enable
   `utf-8 support for Greek`_, update via `tlmgr` or place a copy in the
   TEXPATH «by hand».
   See http://tug.org/pipermail/tex-live/2012-June/031757.html

.. contents::


Manifest
========

The lgrx bundle consists of the following LaTeX files:

LaTeX files:
  :lgrxenc.def:   comprehensive LGR encoding definition file
  :lgrenc.dfu:    support for Unicode input
  :textalpha.sty: ``\text...`` macros for Greek letters in non-Greek text
  :alphabeta.sty: Greek letters with ``\alpha``, ``\beta``, ... in text
                  and math

  Literal sources:
    `<lgrxenc.def.html>`_, `<lgrenc.dfu.html>`_,
    `<textalpha.sty.html>`_, `<alphabeta.sty.html>`_

Documentation and test documents:
  .. class:: run-in

  :`<diacritics.pdf>`_:     `Greek diacritics with standard accent macros`
                            source `<diacritics.tex>`__
  :`<greekhyperref.pdf>`_:  `Greek script in PDF metadata`,
                            source `<greekhyperref.tex>`__
  :`<greek-unicode.pdf>`_:  `Greek Unicode with lgrenc.dfu`,
                            source `<greek-unicode.tex>`__
  :`<lgrxenc-test.pdf>`_:   source `<lgrxenc-test.tex>`__
  :`<textalpha-test.pdf>`_: source `<textalpha-test.tex>`__
  :`<alphabeta-test.pdf>`_: source `<alphabeta-test.tex>`__



Motivation
==========

Greek font encodings
--------------------

Unicode
~~~~~~~

The Unicode standard allows fonts that comprise glyphs from (almost) all
known scripts. With the TeX engines XeTeX or LuaTeX, typesetting Greek with
LaTeX is as easy as finding a font that contains Greek letters and setting
it up with fontspec_.  Beware, that you must not use the ``greek`` or
``polutonikogreek`` options of the babel_ package. The `babel` replacement
polyglossia_ provides Greek language support for XeLaTeX/LuaLaTeX.
If you go this way, you don't need the lgrx bundle.

T7
~~~~

The [encguide]_ reserves the name T7 for a Greek `standard font encoding`.
However, up to now, there is no agreement on an implementation because the
restrictions for general text encodings are too severe for typesetting
polytonic Greek.

LGR
~~~

The LGR font encoding is the de-facto standard for typesetting Greek with
(8-bit) LaTeX. Fonts in this encoding include the `CB fonts`_ (matching CM),
grtimes_ (Greek Times), Kerkis_ (matching URW Bookman), and the `GFS font
collection`_. Setup of these fonts as Greek variant to matching Latin fonts
is facilitated by the substitutefont_ package.

The LGR font encoding generates Greek characters via an ASCII
transliteration. This enables simple input with a Latin keyboard.
Characters with diacritics are selected by ligature definitions in the
font (see [greek-usage]_, [teubner-doc]_, [cbfonts]_).

A major drawback of this transliteration is, that you cannot access Latin
letters if LGR is the active font encoding (e.g. in documents or parts of
documents given the `Babel` language ``greek`` or ``polutionikogreek``).
This means that for every Latin-written word or acronym an explicite
language-switch is required. This problem can only be solved via a
font-encoding comprising Latin and Greek like the hypothetic T7_ or Unicode
(with XeTeX or LuaTeX).

\*OT7
~~~~~

The name LGR does not reflect status of this font encoding due to historical
reasons. [encguide]_ classifies encodings starting with `L` as "local".
Indeed, LGR started as a local encoding for the `CB fonts`_ by Claudio
Beccari. Later, Apostolos Syropoulos advanced it to the default font
encoding for the `babel` package's ``greek`` option.  A better name would be
OT7:

* It is an 'old' encoding.
* It implements a Latin transcription for a non-Latin script like the
  OT2 encoding.
* It is not confined to 128 bit but OT4 shows that this is no
  absolute requirement for an `OT` encoding.

However, due to the fact that the LGR font encoding has been used under its
current name for a long time, the name will not change for compatibility
reasons.


Problems with the default setup
-------------------------------

The `lgrx` budle adresses a set of problems with the LGR font encoding as
set up by `babel`:

1. Ligatures with prefix notation prevent kerning (see the example document
   lgrxenc-test.pdf_ and [teubner-doc]_).

2. Sub-optimal results with the standard accent macros:

   * no combined accents,
   * accents above (instead of before) capital letters,
   * pre-composed characters are not used.

3. The tilde character ``~`` is used for a non-breaking space by
   default. Therefore the transliteration for the *perispomeni* accent is
   not available without re-definition of this character. [#tildehack]_

4. The ``polutonikogreek`` `babel` option redefines both, ``~`` and ``\~``
   to produce accents via input ligatures (restricted to the language
   setting instead of the font encoding). This prevents the placing of a
   tilde-accent on non-supported characters like in *niño* if the language
   is set to polytonic Greek, even if ``\textlatin`` is used. [#poluhack]_

5. There is no Unicode support with `inputenc`_'s ``utf8`` option.

   The `ucs` package contributed by Dominique Unruh provides Unicode support
   with the ``utf8x`` option. A babel patch by Werner Lemberg for Greek
   Unicode support [lemberg2008]_ never got applied.)

6. The LGR transliteration does not work for PDF metadata.


.. [#tildehack] Problem 3 can be solved by the simple one-liner ::

    \DeclareTextSymbol{\~}{LGR}{126}

  which results in ``\~`` inserting a plain tilde character if the
  font encoding is LGR.

  Drawback: you cannot place a ~-accent on Greek characters except the
  ones supported by an input ligature.

.. [#poluhack] Fortunately, LaTeX saves copies of the accent macros: ``\~``
   is an alias of ``\a~`` (which is an alias of ``\@tabacckludge~``), so it
   can be restored after loading `babel` with::

      \addto\extraspolutonikogreek{\renewcommand*{\~}{\a~}}
      \addto\extrasgreek{\renewcommand*{\~}{\a~}}

   With this addition, both the comprehensive font encoding definitions and
   the workaround [#tildehack]_ also work with the ``polutonikogreek``
   `babel` option.


Components of the `lgrx` bundle
===============================

The `lgrx` bundle comprises tools that help typesetting Greek script
with (8-bit) LaTeX in Greek as well as multi-lingual documents.

Comprehensive font encoding definition file
-------------------------------------------

``lgrxenc.def`` is an alternative to the rudimentary LGR encoding definition
file [#fdf]_ ``lgrenc.def`` which comes with babel_'s Greek support. It
defines LICR macros for Greek characters that select pre-composed glyphs if
possible and places the diacritics according to Greek typesetting rules
else. Combined accents can be specified as backslash + transliteration
(``\~>a``) or iteratively (``\~\>{a}``).

For usage and documentation see the literal source lgrxenc.def.html_, the
user manual diacritics.pdf_, and the test document lgrxenc-test.pdf_.

.. [#fdf] See [fntguide_, section 5] for a definition of `encoding definition
   files`.

UTF-8 support for Greek
-----------------------

``lgrenc.dfu`` provides standards-compatible UTF-8 support for Greek based
on the comprehensive font encoding definitions. It is compatible with
hyperref_ enabling Greek characters in PDF metadata without the need for
``\texorpdfstring``.

See the literal source lgrenc.dfu.html_ and the test document
greek-unicode.pdf_.

Text macros for Greek symbols
-----------------------------

``textalpha.sty`` makes the ``\textalpha``, ``\textbeta`` ... macros as well
as the ``\ensuregreek`` command aviable in any font encoding. With this
package, Unicode input of Greek letters works in any font encoding, too.

.. _limitations:

However, in any font encoding except LGR:

* there is no kerning between Greek characters,
* composition of diacritics (like ``\Dasia\Tonos``) fails,
* accent macros do not select precomposed characters
  (pre-composed Unicode literals work fine).

See the literal source textalpha.sty.html_ and textalpha-test.pdf_ for
details on usage, limitations, and recommended workarounds.

Generic macros for Greek symbols
--------------------------------

``alphabeta.sty`` allows you to use ``\alpha``, ``\beta``, ... in both, text
and math mode. For this, the math macros are redefined with the help of
``\TextOrMath`` from the standard package fixltx2e_.

See the literal source alphabeta.sty.html_ and the test document
alphabeta-test.pdf_.


References
==========

.. [fntguide] LaTeX3 Project Team, `LaTeX 2ε font selection`, 2005.
   http://mirror.ctan.org/macros/latex/doc/fntguide.pdf
.. [encguide] Frank Mittelbach, Robin Fairbairns, Werner Lemberg,
   LaTeX3 Project Team, `LaTeX font encodings`, 2006.
   http://mirror.ctan.org/macros/latex/doc/encguide.pdf
.. [greek-usage] Apostolos Syropoulos, `Writing Greek with the greek option
   of the babel package`, 1997.
   http://www.tug.org/texlive/Contents/live/texmf-dist/doc/generic/babel/greek-usage.pdf
.. [cbfonts] Claudio Beccari, `The CB Greek fonts`, Εὔτυπον, τεῦχος № 21, 2008.
   http://www.eutypon.gr/eutypon/pdf/e2008-21/e21-a01.pdf
.. [teubner-doc] Claudio Beccari, ``teubner.sty``
   `An extension to the greek option of the babel package`, 2011.
   http://mirror.ctan.org/macros/latex/contrib/teubner/teubner-doc.pdf
.. [lemberg2008] Werner Lemberg, 
   `Unicode support for the Greek LGR encoding`, Εὔτυπον, τεῦχος № 20, 2008.
   http://www.eutypon.gr/eutypon/pdf/e2008-20/e20-a03.pdf


.. _LaTeX Project Public License: http://www.latex-project.org/lppl.txt
.. _CB Fonts: http://mirror.ctan.org/help/Catalogue/entries/cbgreek-complete.html
.. _grtimes: http://mirror.ctan.org/help/Catalogue/entries/grtimes.html
.. _GFS font collection: http://mirror.ctan.org/help/Catalogue/entries/gfs.html
.. _Kerkis: http://mirror.ctan.org/help/Catalogue/entries/kerkis.html
.. _substitutefont: http://mirror.ctan.org/help/Catalogue/entries/substitutefont.html
.. _babel: http://mirror.ctan.org/help/Catalogue/entries/babel.html
.. _fontenc:  http://mirror.ctan.org/help/Catalogue/entries/fontenc.html
.. _inputenc: http://mirror.ctan.org/help/Catalogue/entries/inputenc.html
.. _fontspec:  http://mirror.ctan.org/help/Catalogue/entries/fontspec.html
.. _polyglossia: http://mirror.ctan.org/help/Catalogue/entries/polyglossia.html
.. _textgreek: http://mirror.ctan.org/help/Catalogue/entries/textgreek.html
.. _fixltx2e: http://mirror.ctan.org/help/Catalogue/entries/fixltx2e.html
.. _hyperref: http://mirror.ctan.org/help/Catalogue/entries/hyperref.html
.. _bookmark: http://mirror.ctan.org/help/Catalogue/entries/bookmark.html
