# alphabeta: Greek symbols in text and math

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{alphabeta}
      [2013/09/11 v0.4 macros for Greek letters in text and math]

Abstract

Use `\alpha, \beta, ...` for Greek letters in text and math mode.

Changelog:

  2012-06-26 | 0.1 | initial version
  2013-05-03 | 0.2 | new accent macro names with `lgrxenc.def` 0.7
  2013-05-28 | 0.3 | use `lgrenc.def` from greek-fontenc,
  |  | enable Unicode input in math mode.
  2013-09-11 | 0.4 | move to greek-fontenc, support XeTeX/LuaTeX.

# Motivation

By default, the `\alpha, \beta, ...` macros for Greek letters are only valid in mathematical mode.

With this package, the math macros are redefined to work in both, text and math mode, so that Greek letters can be specified with the established command names in text, too.

If used together with the `utf8` option of inputenc, literal Unicode characters can be used for Greek symbols in mathematical formulas.

Attention!

The macros work well in any font encoding for single symbols. However, with 8-bit TeX, 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 proper hyphenation.

# Usage

    \usepackage{alphabeta}

For details see alphabeta-doc.tex and alphabeta-doc.pdf.

# Implementation

## Requirements

This package extends the textalpha package:

    \RequirePackage{textalpha}

textalpha depends on greek-fontenc and (with 8-bit TeX) recommends greek-inputenc.

This package requires the e-TeX extensions (i.e. a not too old TeX distribution) for the `\ifdefined` test.

It uses the `\TextOrMath` test from the fixltx2e standard LaTeX package:

    \RequirePackage{fixltx2e}

## Postpone the re-definitions

To prevent other packages overwriting the re-defined commands we postpone the next steps until the start of the document body:

    \AtBeginDocument{

## Save math macros

Provide an alias for the standard math commands:

    \let\mathGamma\Gamma
    \let\mathDelta\Delta
    \let\mathTheta\Theta
    \let\mathLambda\Lambda
    \let\mathXi\Xi
    \let\mathPi\Pi
    \let\mathSigma\Sigma
    \let\mathUpsilon\Upsilon
    \let\mathPhi\Phi
    \let\mathPsi\Psi
    \let\mathOmega\Omega
    %
    \let\mathalpha\alpha
    \let\mathbeta\beta
    \let\mathgamma\gamma
    \let\mathdelta\delta
    \let\mathepsilon\epsilon
    \let\mathzeta\zeta
    \let\matheta\eta
    \let\maththeta\theta
    \let\mathiota\iota
    \let\mathkappa\kappa
    \let\mathlambda\lambda
    \let\mathmu\mu
    \let\mathnu\nu
    \let\mathxi\xi
    \let\mathpi\pi
    \let\mathrho\rho
    \let\mathsigma\sigma
    \let\mathvarsigma\varsigma
    \let\mathtau\tau
    \let\mathupsilon\upsilon
    \let\mathphi\phi
    \let\mathchi\chi
    \let\mathpsi\psi
    \let\mathomega\omega
    % ``\digamma`` is defined by amsmath, provide a fallback
    \providecommand*{\digamma}{\textit{\textdigamma}}
    \let\mathdigamma\digamma

## Commands to access Greek letters by name

For letters defined in math mode, the commands work in both, text and math.

Some Greek letters look identical to Latin letters and can therefore not be used as variable symbols in math formulas. These letters are not defined in TeX’s math mode, we provide an alias to the corrsponding `\text...` command.

    \providecommand*{\Alpha}{\textAlpha}
    \providecommand*{\Beta}{\textBeta}
    \renewcommand*{\Gamma}{\TextOrMath{\textGamma}{\mathGamma}}
    \renewcommand*{\Delta}{\TextOrMath{\textDelta}{\mathDelta}}
    \providecommand*{\Epsilon}{\textEpsilon}
    \providecommand*{\Zeta}{\textZeta}
    \providecommand*{\Eta}{\textEta}
    \renewcommand*{\Theta}{\TextOrMath{\textTheta}{\mathTheta}}
    \providecommand*{\Iota}{\textIota}
    \providecommand*{\Kappa}{\textKappa}
    \renewcommand*{\Lambda}{\TextOrMath{\textLambda}{\mathLambda}}
    \providecommand*{\Mu}{\textMu}
    \providecommand*{\Nu}{\textNu}
    \renewcommand*{\Xi}{\TextOrMath{\textXi}{\mathXi}}
    \providecommand*{\Omicron}{\textOmicron}
    \renewcommand*{\Pi}{\TextOrMath{\textPi}{\mathPi}}
    \providecommand*{\Rho}{\textRho}
    \renewcommand*{\Sigma}{\TextOrMath{\textSigma}{\mathSigma}}
    \providecommand*{\Tau}{\textTau}
    \renewcommand*{\Upsilon}{\TextOrMath{\textUpsilon}{\mathUpsilon}}
    \renewcommand*{\Phi}{\TextOrMath{\textPhi}{\mathPhi}}
    \providecommand*{\Chi}{\textChi}
    \renewcommand*{\Psi}{\TextOrMath{\textPsi}{\mathPsi}}
    \renewcommand*{\Omega}{\TextOrMath{\textOmega}{\mathOmega}}
    %
    \renewcommand*{\alpha}{\TextOrMath{\textalpha}{\mathalpha}}
    \renewcommand*{\beta}{\TextOrMath{\textbeta}{\mathbeta}}
    \renewcommand*{\gamma}{\TextOrMath{\textgamma}{\mathgamma}}
    \renewcommand*{\delta}{\TextOrMath{\textdelta}{\mathdelta}}
    \renewcommand*{\epsilon}{\TextOrMath{\textepsilon}{\mathepsilon}}
    \renewcommand*{\zeta}{\TextOrMath{\textzeta}{\mathzeta}}
    \renewcommand*{\eta}{\TextOrMath{\texteta}{\matheta}}
    \renewcommand*{\theta}{\TextOrMath{\texttheta}{\maththeta}}
    \renewcommand*{\iota}{\TextOrMath{\textiota}{\mathiota}}
    \renewcommand*{\kappa}{\TextOrMath{\textkappa}{\mathkappa}}
    \renewcommand*{\lambda}{\TextOrMath{\textlambda}{\mathlambda}}
    \renewcommand*{\mu}{\TextOrMath{\textmu}{\mathmu}}
    \renewcommand*{\nu}{\TextOrMath{\textnu}{\mathnu}}
    \renewcommand*{\xi}{\TextOrMath{\textxi}{\mathxi}}
    \providecommand*{\omicron}{\textomicron}
    \renewcommand*{\pi}{\TextOrMath{\textpi}{\mathpi}}
    \renewcommand*{\rho}{\TextOrMath{\textrho}{\mathrho}}
    \renewcommand*{\sigma}{\TextOrMath{\textsigma}{\mathsigma}}
    \renewcommand*{\varsigma}{\TextOrMath{\textvarsigma}{\mathvarsigma}}
    \providecommand*{\finalsigma}{\varsigma}
    \renewcommand*{\tau}{\TextOrMath{\texttau}{\mathtau}}
    \renewcommand*{\upsilon}{\TextOrMath{\textupsilon}{\mathupsilon}}
    \renewcommand*{\phi}{\TextOrMath{\textphi}{\mathphi}}
    \renewcommand*{\chi}{\TextOrMath{\textchi}{\mathchi}}
    \renewcommand*{\psi}{\TextOrMath{\textpsi}{\mathpsi}}
    \renewcommand*{\omega}{\TextOrMath{\textomega}{\mathomega}}

### Archaic letters

    \renewcommand*{\digamma}{\TextOrMath{\textdigamma}{\mathdigamma}} % ϝ
    \providecommand*{\Digamma}{\textDigamma}     % Ϝ
    \providecommand*{\stigma}{\textstigma}       % ϛ
    \providecommand*{\varstigma}{\textvarstigma} % stigma variant (CB.enc, teubner)
    \providecommand*{\koppa}{\textkoppa}         % ϟ (greek small letter koppa)
    \providecommand*{\qoppa}{\textqoppa}         % ϙ (archaic koppa)
    \providecommand*{\Qoppa}{\textQoppa}         % Ϙ (archaic Koppa)
    \providecommand*{\Stigma}{\textStigma}       % Ϛ (in some fonts ϹΤ ligature)
    \providecommand*{\Sampi}{\textSampi}         % Ϡ
    \providecommand*{\sampi}{\textsampi}         % ϡ

## TextCompositeCommands for the generic macros

The NFSS TextComposite mechanism looks for the next token without expanding it. In order to let compositions like `\ensuregreek{\'\Alpha}` or `\ensuregreek{\>"\alpha}` work as expected we define TextComposites with the letter name commands. (Composition only works if the active font encoding is LGR).

    \ifdefined\XeTeXrevision
      \input{alphabeta-euenc.def}
      % \expandafter\endinput % "return"
    \else\ifdefined\luatexversion
      \input{alphabeta-euenc.def}
      % \expandafter\endinput % "return"
    \else % 8-bit TeX
      \input{alphabeta-lgr.def}
    \fi\fi

## Re-definition for Greek Unicode input in math mode

Check with `\ifdefined` for the definition of `\DeclareUnicodeCharacter`. In contrast to `\@ifdefined`, this works without side-effects. It makes the package dependent on the e-TeX extensions but theses are standard in all current TeX distributions anyway.

Map Greek characters that are also defined in math mode to the generic macros:

    \ifdefined\DeclareUnicodeCharacter
      \DeclareUnicodeCharacter{0393}{\Gamma}   % Γ
      \DeclareUnicodeCharacter{0394}{\Delta}   % Δ
      \DeclareUnicodeCharacter{0398}{\Theta}   % Θ
      \DeclareUnicodeCharacter{039B}{\Lambda}  % Λ
      \DeclareUnicodeCharacter{039E}{\Xi}      % Ξ
      \DeclareUnicodeCharacter{03A0}{\Pi}      % Π
      \DeclareUnicodeCharacter{03A3}{\Sigma}   % Σ
      \DeclareUnicodeCharacter{03A5}{\Upsilon} % Υ
      \DeclareUnicodeCharacter{03A6}{\Phi}     % Φ
      \DeclareUnicodeCharacter{03A8}{\Psi}     % Ψ
      \DeclareUnicodeCharacter{03A9}{\Omega}   % Ω

      \DeclareUnicodeCharacter{03B1}{\alpha}    % α
      \DeclareUnicodeCharacter{03B2}{\beta}     % β
      \DeclareUnicodeCharacter{03B3}{\gamma}    % γ
      \DeclareUnicodeCharacter{03B4}{\delta}    % δ
      \DeclareUnicodeCharacter{03B5}{\epsilon}  % ε
      \DeclareUnicodeCharacter{03B6}{\zeta}     % ζ
      \DeclareUnicodeCharacter{03B7}{\eta}      % η
      \DeclareUnicodeCharacter{03B8}{\theta}    % θ
      \DeclareUnicodeCharacter{03B9}{\iota}     % ι
      \DeclareUnicodeCharacter{03BA}{\kappa}    % κ
      \DeclareUnicodeCharacter{03BB}{\lambda}   % λ
      \DeclareUnicodeCharacter{03BC}{\mu}       % μ
      \DeclareUnicodeCharacter{03BD}{\nu}       % ν
      \DeclareUnicodeCharacter{03BE}{\xi}       % ξ
      \DeclareUnicodeCharacter{03C0}{\pi}       % π
      \DeclareUnicodeCharacter{03C1}{\rho}      % ρ
      \DeclareUnicodeCharacter{03C2}{\varsigma} % ς
      \DeclareUnicodeCharacter{03C3}{\sigma}    % σ
      \DeclareUnicodeCharacter{03C4}{\tau}      % τ
      \DeclareUnicodeCharacter{03C5}{\upsilon}  % υ
      \DeclareUnicodeCharacter{03C6}{\phi}      % φ
      \DeclareUnicodeCharacter{03C7}{\chi}      % χ
      \DeclareUnicodeCharacter{03C8}{\psi}      % ψ
      \DeclareUnicodeCharacter{03C9}{\omega}    % ω

      \DeclareUnicodeCharacter{03DD}{\digamma}  % ϝ
    \fi

    } % close the \AtBeginDocument macro