greek-fontenc
#############
Greek font encoding definition files
************************************

:Author:    Günter Milde
:Date:      2014-12-25
:Copyright: © 2013 Günter Milde <milde@users.sf.net>
: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:  `LaTeX internal character representation` (LICR) macros are a
            verbose but failsafe 7-bit ASCII encoding that works unaltered
            under both, 8-bit TeX and XeTeX/LuaTeX. Use cases are macro
            definitions and generated text

            This package provides Greek LICR macro definitions and encoding
            definition files for `Greek text font encodings`_ for use with
            fontenc_.

.. note::   The LICR macro names for Greek symbols are chosen pending
            endorsement by the TeX community and related packages.

            Names for archaic characters, accents/diacritics, and
            punctuation may change in future versions.

News
====

.. class:: borderless

====== =========== ==========================================================
0.9    2013-07-03  greek-fontenc.def_ "outsourced" from lgrxenc.def
..                 experimental files xunicode-greek.sty and
                   greek-euenc.def_: LICRs for XeTeX/LuaTeX.
0.9.1  2013-07-18  Bugfix: wrong breathings psilioxia -> dasiaoxia.
0.9.2  2013-07-19  Bugfix: Disable composite defs starting with char macro,
..                 fix "hiatus" handling.
0.9.3  2013-07-24  Fix "input" path in xunicode-greek and greek-euenc.def.
0.9.4  2013-09-10  greek-fontenc.sty: Greek text font encoding setup package,
..                 remove xunicode-greek.sty.
0.10   2013-09-13  textalpha.sty_ and alphabeta.sty_ moved here from lgrx and
                   updated to work with XeTeX/LuaTeX.
..                 greek-fontenc.sty removed (obsoleted by textalpha.sty).
0.10.1 2013-10-01  Bugfix in greek-euenc.def_ and alphabeta-euenc.def_.
0.11   2013-11-28  Compatibility with Xe/LuaTeX in 8-bit mode,
..                 ``\greekscript`` TextCommand.
0.11.1 2013-12-01  Fix identification of ``greek-euenc.def``.
0.11.2 2014-09-04  Documentation update, remove duplicate code.
0.12   2014-12-25  Fix auxiliary macro names in `textalpha`.
..                 Conservative naming: move definition of ``\<`` and ``\>``
                   from ``greek-fontenc.def`` to ``textalpha.sty``
                   (Bugreport David Kastrup).
                   Documentation update.
====== =========== ==========================================================


TeX files
===========

`<greek-fontenc.def>`_
  `Common Greek font encoding definitions <greek-fontenc.def.html>`_.

`<lgrenc.def>`_
  `LGR Greek font encoding definitions <lgrenc.def.html>`_.

  This file is the successor of the basic LGR encoding definition file which
  comes with babel_'s Greek support and ``lgrxenc.def`` from the lgrx_
  bundle.

`<textalpha.sty>`_
  `Greek symbols in text <textalpha.sty.html>`_
  independent of font encoding and TeX engine.

`<alphabeta.sty>`_
  Generic macros for `Greek symbols in text and math <alphabeta.sty.html>`_.

`<alphabeta-euenc.def>`_
  `Composite defintions for alphabeta.sty_ with XeTeX/LuaTeX.
  <alphabeta-euenc.def.html>`_

`<greek-euenc.def>`_
  `Greek LICR definitions for XeTeX and LuaTeX <greek-euenc.def.html>`_.
  Requires euenc_.

Literate source files were converted with PyLit_ to reStructuredText_ and
with Docutils_ to the HTML documentation.


Documentation and test documents
================================

`<textalpha-doc.tex>`__, `<textalpha-doc.pdf>`_
  `The textalpha package`.

`<alphabeta-doc.tex>`__ `<alphabeta-doc.pdf>`_
  `The alphabeta package`.

`<lgrenc-test.tex>`_, `<lgrenc-test.pdf>`_
  Test and usage example.

`<greek-euenc-doc.tex>`_, `<greek-euenc-doc.pdf>`_
  Example for use of the experimental Greek LICR definitions with XeTeX or
  LuaTeX.

`<greekhyperref.tex>`_, `<greekhyperref.pdf>`_
  `Greek script in PDF metadata`.

  The package hyperref_ defines the PU font encoding which also supports
  (monotonic) Greek.

Experimental files
==================

These files are still in development and will eventually be moved to/merged
with other packages or removed in future versions:

`<lgr2licr.lua>`_
  `LGR Transcription to Greek LICR transformation <lgr2licr.lua.html>`_



Installation
============

If possible, get this package from your distribution using its installation
manager.

Otherwise, make sure LaTeX can find the package and definition files:

* Download and unpack ``greek-fontenc.zip``.

* Copy/Move/Link files ending in ``.def`` or ``.sty`` to a suitable place in
  the TDS_ and run ``texhash``, or place them in the current working
  directory (e.g. for testing).

Usage
=====

There are many alternatives to use the Greek font encoding setup
provided by this package/bundle, e.g.:

* Ensure Greek support in text mode with `textalpha`::

     \usepackage{textalpha}

  For details see `<textalpha-doc.tex>`_ and `<textalpha-doc.pdf>`_ (8-bit
  TeX) as well as `<greek-euenc-doc.tex>`_ and `<greek-euenc-doc.pdf>`_
  (XeTeX/LuaTeX).

* To use the short macro names (``\alpha`` ... ``\Omega``) known from math
  mode in both, text and math mode, write ::

     \usepackage{alphabeta}

  For details see `<alphabeta-doc.tex>`_ and `<alphabeta-doc.pdf>`_.

* Use the ``greek`` option with Babel_ (requires babel-greek_)::

     \usepackage[greek]{babel}

* Declare LGR via fontenc_. For example, specify T1 (8-bit
  Latin) as default font encoding and LGR for Greek with ::

     \usepackage[LGR,T1]{fontenc}

  Note that without ``textalpha`` or ``alphabeta``, Greek text macros work
  only if the current font encoding supports Greek. See [fntguide]_ for
  details and `<lgrenc-test.tex>`_ for an example.

* LGR encoded fonts can also be used alongside Unicode fonts with
  XeTeX/LuaTeX to enable the input of Greek letters via the Latin
  transcription provided by this font encoding.
  See `<greek-euenc-doc.tex>`_ -> `<greek-euenc-doc.pdf>`_ and
  `<lgrenc-test.tex>`_ -> `<lgrenc-test.pdf>`_.

Greek text font encodings
=========================

Greek TeX font encodings are the envisaged T7_, LGR_, and LGI_.
Greek letters and symbols are also defined in the Unicode-based font
encodings EU1 (XeTeX), EU2 (LuaTeX) and PU (hyperref_).

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 allows to access Greek characters via an ASCII
transliteration. This enables simple input with a Latin keyboard.
Characters with diacritics can be selected by ligature definitions in the
font (see [greek-usage]_, [teubner-doc]_, [cbfonts]_).

A major drawback of the 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 explicit
language-switch is required. This problem can only be solved via a
font-encoding comprising Latin and Greek like the envisaged T7_ or
Unicode (with XeTeX or LuaTeX).

LGI
---

The ‘Ibycus’ fonts from the package ibygrk_ implement an alternative
transliteration scheme (also explained in [babel-patch]_).
It is currently not supported by `greek-fontenc`.

The font encoding file ``lgienc.def`` from ibycus-babel_ provides a basic
setup (without any LICR macros or composite definitions).


Greek LICR macro names
======================

This package provides LaTeX internal character representations (LICR macros)
for Greek letters and diacritics. Macro names were selected based on the
following considerations:

The fntguide_ (section 6.4 Naming conventions) recommends:

  Where possible, text symbols should be named as ``\text`` followed
  by the Adobe glyph name: for example ``\textonequarter`` or
  ``\textsterling``. Similarly, math symbols should be named as
  ``\math`` followed by the glyph name, for example
  ``\mathonequarter`` or ``\mathsterling``.

The `Adobe Glyph List For New Fonts`_ has names for many glyphs in the
`Greek and Coptic` Unicode block, but not for `Greek extended`. The `Adobe
Glyph List`_ (for existing fonts) lists additional glyph names used in older
fonts. As these are not intened for further active use, the latter are not
considered in the name choice.

Proposals
---------

* If there exists a math-mode macro for a symbol, form the corresponding text
  macro by prepending ``text``?

  Example:
    The glyph name for the GREEK SMALL LETTER FINAL SIGMA is ``sigma1``,
    the corresponding math-macro is ``\varsigma``. The text symbol could be
    made available as ``\textvarsigma``.

  Problems:
    ``\varepsilon`` and ``\varphi`` math macros map to characters named
    "GREEK SMALL **LETTER** ...", while ``\\vartheta``, ``\\varkappa``,
    ``\\varrho``, and ``\\varpi`` math macros map to "GREEK ... **SYMBOL**"
    Unicode characters.

    In Greek text, these variants are interchangeable. The LGR font encoding
    does not contain slots for "symbol" glyph variants. In some Greek fonts,
    GREEK SMALL LETTERS use glyph variants resembling the corresponding
    GREEK SYMBOL Unicode character's reference glyph.

* Derive macro names from Unicode names?

  The `Unicode names list`_ provides standardized descriptive names for all
  Unicode characters that use only capital letters of the Latin alphabet.
  While not suited for direct use in a LICR macros, they can be either

  a) used as inspiration for new LICR macro names or

  b) converted to LICR macro names via a defined set of transformation rules.

  Example:
    ``\textfinalsigma`` or just ``\finalsigma`` as a more descriptive name
    for GREEK SMALL LETTER FINAL SIGMA derived via the rules:

    * drop "LETTER" if the name remains unique,
    * drop "GREEK" if the name remains unique,
    * use capitalized name for capital letters, lowercase for "SMALL" letters
      and drop "SMALL",
    * concatenate

* Omit the "text" prefix for macros that do not have a math counterpart?

  Pro:
    + Simpler,

    + ease of use (less typing, better readability of source text),

    + many established text macro names without "text",

    + there are examples of encoding-specific macros
      without the ``text``-prefix, especially for letters,

      :T1:  ``\AE \DH \DJ \L \NG \OE \O \SS \TH \ae \dh \dj \guillemotleft``
            ``\guillemotright \guilsinglleft \guilsinglright \i \j \l \ng``
            ``\oe \o \quotedblbase \quotesinglbase \ss \th`` (also in OT1)
      :T2*: ``\CYR*`` and ``\cyr*``
      :HE8: ``\heb*`` or no prefix
      :PU:  short descriptive names in the arabic part (``puarenc.def``)

    + ``text`` prefix does **not** mark a macro as encoding-specific or
      "inserting a glyph". There are e.g. font-changing macros (``\textbf``,
      ``\textit``) and encoding-changing macros (``\textgreek``,
      ``\textcyr``).

  Contra:
    - Less consistent.

    - ``text`` prefix marks a macro as confined to text (as opposed to math)
      mode.

  Conclusion:
      To avoid name clashes, the font encoding definition files use the
      ``text`` prefix for symbols. Aliases (short forms, compatibility defs,
      etc.) can be defined locally or in additional packages (see
      alphabeta.sty_, `babel-greek`_, or teubner_)


How to name *accent macros*?
----------------------------

* standard accent macros (``\DeclareTextAccent`` definitions in
  ``latex/base/...``) are one-symbol macros (``\' \" ... \u \v ...``) .

* ``tipa.sty``, xunicode_, and ucs_ use the "text" prefix also for accents.

  However, the `Adobe Glyph List For New Fonts`_ maps, e.g., "tonos" and
  "dieresistonos" to 0384 GREEK TONOS and 0385 GREEK DIALYTIKA TONOS, hence
  `\texttonos` and `\textdiaresistonos` should be spacing characters.

* textcomp (ts1enc.def) defines ``\capital...`` accents (i.e. without
  ``text`` prefix).

* Use a common prefix ``\textaccent...``, ``\accent...``,
  or just ``\acc...`` (cf. ``\@tabacckludge``)?

Currently, `greek-fontenc` uses for diacritics:

- Greek names like in Unicode, and ucsencs.def

- The prefix "acc" to distinguish the macros as `TextAaccent` and reduce the
  risc of name clashes.

- For the end-user "symbol macros" (``\~ \' \` \" \< \>``) are provided.
  (The non-standard macros ``\<`` and ``\>`` only with textalpha.sty_.)


References
----------

An alternative, more complete set of short mnemonic character names is
the `XML Entity Definitions for Characters`_ W3C Recommendation from
01 April 2010.

For glyph names of the LGR encoding see e.g. ``CB.enc`` by Apostolos
Syropoulos and ``xl-lgr.enc`` from the libertine_ (legacy) package.
``lgr.cmap`` provides a mapping to Unicode characters.

A full set of ``\text*`` symbol macros is defined in ``ucsencs.def``
from the ucs_ package.

Aliases from ``puenc.def`` ensure that the hyperref_ package can convert
Greek text in "LICR encoding" to a PDF-string (utf-8 encoded input is used
as-is).


.. [fntguide] LaTeX3 Project Team, `LaTeX2ε 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

.. [babel-patch] 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
.. _PyLit: http://pylit.berlios.de
.. _reStructuredText: http://docutils.sourceforge.net/rst.html
.. _Docutils: http://docutils.sourceforge.net/rst.html
.. _TDS: http://www.tex.ac.uk/cgi-bin/texfaq2html?label=tds

.. _Adobe Glyph List For New Fonts:
    http://www.adobe.com/devnet-archive/opentype/archives/aglfn.txt
.. _Adobe Glyph List:
    http://partners.adobe.com/public/developer/en/opentype/glyphlist.txt
.. _Unicode names list: http://www.unicode.org/Public/UNIDATA/NamesList.txt
.. _XML Entity Definitions for Characters:
    http://www.w3.org/TR/xml-entity-names/

.. _CB Fonts: http://www.ctan.org/pkg/cbgreek-complete
.. _GFS font collection: http://www.ctan.org/pkg/gfs
.. _Kerkis: http://www.ctan.org/pkg/kerkis
.. _babel: http://www.ctan.org/pkg/babel
.. _babel-greek: http://www.ctan.org/pkg/babel-greek
.. _euenc:  http://www.ctan.org/pkg/euenc
.. _fontenc:  http://www.ctan.org/pkg/fontenc
.. _grtimes: http://www.ctan.org/pkg/grtimes
.. _hyperref: http://www.ctan.org/pkg/hyperref
.. _ibycus-babel: http://www.ctan.org/pkg/ibycus-babel
.. _ibygrk: http://www.ctan.org/pkg/ibygrk
.. _lgrx: http://www.ctan.org/pkg/lgrx
.. _libertine: http://www.ctan.org/pkg/libertine-legacy
.. _substitutefont: http://www.ctan.org/pkg/substitutefont
.. _teubner: http://www.ctan.org/pkg/teubner
.. _ucs: http://www.ctan.org/pkg/unicode
.. _xunicode: http://www.ctan.org/pkg/xunicode
