alphabeta: Greek symbols in text and math

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