% 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. % % :Abstract: Use ``\alpha, \beta, ...`` for Greek letters in text and math % mode. % % :Identification: % :: \NeedsTeXFormat{LaTeX2e} \ProvidesPackage{alphabeta} [2013/09/11 v0.4 macros for Greek letters in text and math] % Changelog: % .. class:: borderless % % ========== ===== ========================================================= % 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 % ===== % % .. code:: latex % % \usepackage{alphabeta} % % For details see ``_ and ``_. % % % 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 % .. References % ---------- % .. _LaTeX Project Public License: http://www.latex-project.org/lppl.txt % .. _CB Fonts: http://www.ctan.org/pkg/cbgreek-complete % .. _babel: http://www.ctan.org/cgi-bin/ctanPackageInformation.py?id=babel % .. _e-TeX: http://www.tex.ac.uk/cgi-bin/texfaq2html?label=etex % .. _greek-fontenc: http://www.ctan.org/pkg/greek-fontenc % .. _greek-inputenc: http://www.ctan.org/pkg/greek-inputenc % .. _inputenc: http://www.ctan.org/pkg/inputenc % .. _fixltx2e: http://www.ctan.org/pkg/fixltx2e % .. _polyglossia: http://www.ctan.org/pkg/polyglossia