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.
\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.
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. |
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.
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}
To prevent other packages overwriting the re-defined commands we postpone the next steps until the start of the document body:
\AtBeginDocument{
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
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}}
\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} % ϡ
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
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