# textalpha: Greek symbols in text

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.

Identification

      \NeedsTeXFormat{LaTeX2e}
      \ProvidesPackage{textalpha}
      [2013/11/28 v0.11 macros for Greek letters in text]

Abstract

Provide a set of `\text*` macros for Greek letters outside math.

Note

The package was renamed from textgreek to textalpha to prevent confusion with the textgreek package by Leonard Michlmayr.

Changelog:

  2010-06-16 | 0.1 | initial version
  2012-06-27 | 0.2 | support for compound Unicode definitions outside LGR
  2013-05-03 | 0.3 | new accent macro names with `lgrxenc.def` 0.7
  2013-05-28 | 0.4 | use `lgrenc.def` from greek-fontenc.
  2013-09-11 | 0.5 | move to greek-fontenc,
  |  | support XeTeX/LuaTeX, add breve below accents.
  2013-11-28 | 0.11 | Compatibility with Xe/LuaTeX in 8-bit mode.

# Motivation

By default, TeX macros for Greek letters are only valid in mathematical mode. This package sets up a suitable font encoding and Greek LICR definitions (`\textalpha` – `\textOmega`).

To allow documents using Greek LICR macros without worrying about the TeX engine used to compile them, this package tests the declared font encodings and does “the right thing” to set up Greek text font support:

- If the Unicode font encodings EU1 (XeTeX) or EU2 (LuaTeX) are declared, before loading this package (e.g. vie `fontspec`) the package provides Greek LICR definitions for them.

- If the LGR font encoding is declared before loading this package, it is set as default for Greek LICR macros (cf. fntguide section 5.3).

  With XeTeX or LuaTex, Unicode fonts and LGR encoded 8-bit fonts can be used in the same document (see test-euenc.tex).

Advantages:

- Symbols from a Greek text font (e.g. the CB fonts) can be accessed without the need for an explicite font-encoding switch anywhere in the text.

- Unicode input of Greek characters is supported

  - via `\usepackage[utf8]{inputenc}` and `lgrenc.dfu` from greek-inputenc for 8-bit TeX or XeTeX/LuaTeX in 8-bit compatibility mode in any font encoding (see textalpha-test.tex).

  - natively by XeTeX/LuaTeX for Unicode fonts. As inputenc does not work with these engines, text input can be done via the Latin transcription or LICR but not via literal Unicode characters for 8-bit font encodings like LGR (see test-euenc.tex).

Attention!

The macros work well in any font encoding for single symbols. However, with 8-bit TeX engines, the automatic font-encoding switches behind the doors interfere with kerning between letters and replacement of accent+character with a pre-composed character.

Therefore, Greek text should be written with the help of babel or polyglossia (setting the language to `greek`) or wrapped in the provided `ensuregreek` macro. Using babel or polyglossia also helps to ensure correct hyphenation of Greek text.

# Usage

    \usepackage{textalpha}

For details see textalpha-test.tex and textalpha-test.pdf (8-bit TeX and XeTeX/LuaTeX in 8-bit compatibility mode) as well as test-euenc.tex and test-euenc.pdf (XeTeX/LuaTeX with Unicode fonts).

# Implementation

## Requirements

With XeTeX or LuaTeX, there is one common input and font encoding – Unicode. 8-bit TeX font encodings are only used in compatibility mode or for fonts not available otherwise. For compatibility with the LaTeX font selection system, the package euenc defines the (pseudo) font encodings EU1 and EU2 for XeTeX and LuaTeX respectively. However euenc does not (yet) define LICR macros. We therefore explicitely load Greek LICR definitions for XeTeX/LuaTeX from greek-euenc.def which in turn includes greek-fontenc.def.

With 8-bit LaTeX, the LGR font encoding is used for Greek characters. If no Greek-supporting font encoding (EU1, EU2, or LGR) is declared, LGR is loaded and set up as default Greek font encoding by this package.

To give `textalpha.sty` a chance of finding out which font encodings are used, load it after fontspec and/or fontenc.

### Font encodings

Ensure a Greek-supporting font encoding exists and supports Greek LICR macros:

Load the Greek LICR definitions for Unicode if font encoding EU1 (XeTeX) or EU2 (LuaTeX) is detected.1 In an ideal world, this would be done in the `eu1enc.def` (or `eu2enc.def`) file of the euenc package. If none of EU1, EU2, and LGR is declared, load `lgrenc.def`:

Re-set the `\LastDeclaredEncoding`: Because fontenc loads font encoding definition files only once, it may happen that another font encoding is defined afterwards — for example fontspec leaves `\LastDeclaredEncoding` at `T3` (tipa), because it inputs the xunicode package which in turn loads `t3enc.def`.

    \@ifl@aded{def}{eu1enc}{
      \renewcommand{\LastDeclaredEncoding}{EU1}
      \input{greek-euenc.def}
    }{% else
      \@ifl@aded{def}{eu2enc}{
        \renewcommand{\LastDeclaredEncoding}{EU2}
        \input{greek-euenc.def}
      }{% else
        \@ifl@aded{def}{lgrenc}{
          % LGR already declared and set up
        }{
          \input{lgrenc.def}
        }
      }
    }

1

  The two different (pseudo) font encodings allow different font setups for XeTeX vs. LuaTeX using differently named `*.fd` files (see euenc for details).

The package hyperref defines the PU font encoding which also supports (monotonic) Greek. It currently misses polytonic greek and the `\greekscript` and `\ensuregreek` TextCommands:

    \@ifl@aded{def}{puenc}
      {\ProvideTextCommand{\greekscript}{PU}{}
       \ProvideTextCommand{\ensuregreek}{PU}[1]{#1}}
      {}

## Default declarations

The following definitions ensure that the Greek LICR macros can be used anywhere in the document also with 8-bit TeX by declaring LGR as their default font encoding. Abort here, if another Greek-supporting font encoding is used instead of LGR:

    \@ifl@aded{def}{lgrenc}
      {\renewcommand{\LastDeclaredEncoding}{LGR}}
      {\expandafter\endinput} % "return"

### greekscript, ensuregreek

The `\greekscript` declaration ensures the current font encoding supports the Greek script. `greek-fontenc.def` sets this to the empty declaration for font encodings that do so. This is currently used by `lgrenc.def` (LGR) and `greek-euenc.def` (Greek LICR macros for EU1 and EU2).

We define LGR as default encoding for Greek text. We use `\ProvideTextCommandDefault` to enable the author or other packages to use an alternative definition (see [fntguide]):

    \ProvideTextCommandDefault{\greekscript}{\fontencoding{LGR}\selectfont}

The `\ensuregreek` command can be used to ensure that its argument is set in a font encoding with support for Greek. Again the default is LGR:

    \ProvideTextCommandDefault{\ensuregreek}[1]{\leavevmode{\greekscript #1}}

Eventually, all font encodings supporting Greek script (e.g. LGI, PU, EU1, EU2) will declare `\ensuregreek` as text command that passes the argument unchanged. This way, kerning and selection of precomposed glyphs would work also for cases like `\ensuregreek{\'A}U`.

### Greek Alphabet

Define the `text*` marcos as default for all font encodings:

    \DeclareTextSymbolDefault{\textAlpha}{LGR}
    \DeclareTextSymbolDefault{\textBeta}{LGR}
    \DeclareTextSymbolDefault{\textGamma}{LGR}
    \DeclareTextSymbolDefault{\textDelta}{LGR}
    \DeclareTextSymbolDefault{\textEpsilon}{LGR}
    \DeclareTextSymbolDefault{\textZeta}{LGR}
    \DeclareTextSymbolDefault{\textEta}{LGR}
    \DeclareTextSymbolDefault{\textTheta}{LGR}
    \DeclareTextSymbolDefault{\textIota}{LGR}
    \DeclareTextSymbolDefault{\textKappa}{LGR}
    \DeclareTextSymbolDefault{\textLambda}{LGR}
    \DeclareTextSymbolDefault{\textMu}{LGR}
    \DeclareTextSymbolDefault{\textNu}{LGR}
    \DeclareTextSymbolDefault{\textXi}{LGR}
    \DeclareTextSymbolDefault{\textOmicron}{LGR}
    \DeclareTextSymbolDefault{\textPi}{LGR}
    \DeclareTextSymbolDefault{\textRho}{LGR}
    \DeclareTextSymbolDefault{\textSigma}{LGR}
    \DeclareTextSymbolDefault{\textTau}{LGR}
    \DeclareTextSymbolDefault{\textUpsilon}{LGR}
    \DeclareTextSymbolDefault{\textPhi}{LGR}
    \DeclareTextSymbolDefault{\textChi}{LGR}
    \DeclareTextSymbolDefault{\textPsi}{LGR}
    \DeclareTextSymbolDefault{\textOmega}{LGR}
    %
    \DeclareTextSymbolDefault{\textalpha}{LGR}
    \DeclareTextSymbolDefault{\textbeta}{LGR}
    \DeclareTextSymbolDefault{\textgamma}{LGR}
    \DeclareTextSymbolDefault{\textdelta}{LGR}
    \DeclareTextSymbolDefault{\textepsilon}{LGR}
    \DeclareTextSymbolDefault{\textzeta}{LGR}
    \DeclareTextSymbolDefault{\texteta}{LGR}
    \DeclareTextSymbolDefault{\texttheta}{LGR}
    \DeclareTextSymbolDefault{\textiota}{LGR}
    \DeclareTextSymbolDefault{\textkappa}{LGR}
    \DeclareTextSymbolDefault{\textlambda}{LGR}
    \DeclareTextSymbolDefault{\textmu}{LGR}
    \DeclareTextSymbolDefault{\textnu}{LGR}
    \DeclareTextSymbolDefault{\textxi}{LGR}
    \DeclareTextSymbolDefault{\textomicron}{LGR}
    \DeclareTextSymbolDefault{\textpi}{LGR}
    \DeclareTextSymbolDefault{\textrho}{LGR}
    \DeclareTextSymbolDefault{\textsigma}{LGR}
    \DeclareTextSymbolDefault{\textvarsigma}{LGR}
    \DeclareTextSymbolDefault{\textfinalsigma}{LGR} % alias for \textvarsigma
    \DeclareTextSymbolDefault{\textautosigma}{LGR}  % char 115 in LGR
    \DeclareTextSymbolDefault{\texttau}{LGR}
    \DeclareTextSymbolDefault{\textupsilon}{LGR}
    \DeclareTextSymbolDefault{\textphi}{LGR}
    \DeclareTextSymbolDefault{\textchi}{LGR}
    \DeclareTextSymbolDefault{\textpsi}{LGR}
    \DeclareTextSymbolDefault{\textomega}{LGR}

#### Additional Greek symbols

Including alias names for compatibility with hyperref’s puenc.def.

Ancient Greek Numbers (Athenian Numerals):

    \DeclareTextSymbolDefault{\textpentedeka}{LGR}    % GREEK ACROPHONIC ATTIC FIFTY
    \DeclareTextSymbolDefault{\textpentehekaton}{LGR} % GREEK ACROPHONIC ATTIC FIVE HUNDRED
    \DeclareTextSymbolDefault{\textpenteqilioi}{LGR}  % GREEK ACROPHONIC ATTIC FIVE THOUSAND
    \DeclareTextSymbolDefault{\textpentemurioi}{LGR}  % GREEK ACROPHONIC ATTIC FIFTY THOUSAND

Archaic letters:

    \DeclareTextSymbolDefault{\textstigma}{LGR}      % ϛ
    \DeclareTextSymbolDefault{\textstigmagreek}{LGR} % ϛ (puenc.def)
    \DeclareTextSymbolDefault{\textvarstigma}{LGR}   % stigma variant
    \DeclareTextSymbolDefault{\textkoppa}{LGR}       % ϟ (greek small letter koppa)
    \DeclareTextSymbolDefault{\textkoppagreek}{LGR}  % ϟ (puenc.def)
    \DeclareTextSymbolDefault{\textqoppa}{LGR}       % ϙ (archaic koppa)
    \DeclareTextSymbolDefault{\textQoppa}{LGR}       % Ϙ (archaic Koppa)
    \DeclareTextSymbolDefault{\textStigma}{LGR}      % Ϛ ϹΤ ligature in some fonts
    \DeclareTextSymbolDefault{\textStigmagreek}{LGR} % Ϛ (puenc.def)
    \DeclareTextSymbolDefault{\textSampi}{LGR}       % Ϡ
    \DeclareTextSymbolDefault{\textSampigreek}{LGR}  % Ϡ (puenc.def)
    \DeclareTextSymbolDefault{\textsampi}{LGR}       % ϡ
    \DeclareTextSymbolDefault{\textsampigreek}{LGR}  % ϡ (puenc.def)
    \DeclareTextSymbolDefault{\textanoteleia}{LGR}   % ·
    \DeclareTextSymbolDefault{\texterotimatiko}{LGR} % ; (003B is the preferred character)
    \DeclareTextSymbolDefault{\textdigamma}{LGR}     % ϝ
    \DeclareTextSymbolDefault{\textDigamma}{LGR}     % Ϝ
    \DeclareTextSymbolDefault{\textdigammagreek}{LGR} % ϝ (puenc.def)
    \DeclareTextSymbolDefault{\textDigammagreek}{LGR} % Ϝ (puenc.def)

numeral signs: http://en.wikipedia.org/wiki/Greek_numerals

    \DeclareTextSymbolDefault{\textnumeralsigngreek}{LGR}      % (puenc.def)
    \DeclareTextSymbolDefault{\textnumeralsignlowergreek}{LGR} % (puenc.def)

### Diacritics

Greek diacritics via “named” macros:

    \DeclareTextAccentDefault{\accdasia}{LGR}
    \DeclareTextAccentDefault{\accpsili}{LGR}
    \DeclareTextAccentDefault{\acctonos}{LGR}
    \DeclareTextAccentDefault{\accvaria}{LGR}
    \DeclareTextAccentDefault{\accperispomeni}{LGR}
    \DeclareTextAccentDefault{\accdialytika}{LGR}
    \DeclareTextAccentDefault{\<}{LGR}
    \DeclareTextAccentDefault{\>}{LGR}
    %
    \DeclareTextAccentDefault{\accdasiaoxia}{LGR}
    \DeclareTextAccentDefault{\accdasiavaria}{LGR}
    \DeclareTextAccentDefault{\accdasiaperispomeni}{LGR}
    \DeclareTextAccentDefault{\accpsilioxia}{LGR}
    \DeclareTextAccentDefault{\accpsilivaria}{LGR}
    \DeclareTextAccentDefault{\accpsiliperispomeni}{LGR}
    \DeclareTextAccentDefault{\accdialytikatonos}{LGR}
    \DeclareTextAccentDefault{\accdialytikavaria}{LGR}
    \DeclareTextAccentDefault{\accdialytikaperispomeni}{LGR}

Postfix accents:

    \DeclareTextSymbolDefault{\ypogegrammeni}{LGR} % "small" sub-iota
    \DeclareTextSymbolDefault{\prosgegrammeni}{LGR}  % "capital" sub-iota

Other accents in LGR:

    \DeclareTextAccentDefault{\accinvertedbrevebelow}{LGR} % INVERTED BREVE BELOW
    \DeclareTextAccentDefault{\textsubarch}{LGR}           % tipa, Teubner name: ut
    \DeclareTextAccentDefault{\accbrevebelow}{LGR}         % BREVE BELOW

### Auxiliary macros

`\MakeUppercase` requires two internal commands:

    \DeclareTextAccentDefault{\LGR@hiatus}{LGR}
    \DeclareTextAccentDefault{\LGR@Dialytika}{LGR}