% 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" \fi \ifdefined\luatexversion \input{alphabeta-euenc.def} \expandafter\endinput % "return" \fi % No other action is required with Unicode-aware TeX engines. % % Composite commands for 8-bit TeX:: \DeclareTextComposite{\accvaria}{LGR}{\alpha}{128} \DeclareTextComposite{\accdasia}{LGR}{\alpha}{129} \DeclareTextComposite{\accpsili}{LGR}{\alpha}{130} \DeclareTextComposite{\accdasiavaria}{LGR}{\alpha}{131} \DeclareTextComposite{\acctonos}{LGR}{\alpha}{136} \DeclareTextComposite{\accdasiaoxia}{LGR}{\alpha}{137} \DeclareTextComposite{\accpsilioxia}{LGR}{\alpha}{138} \DeclareTextComposite{\accpsilivaria}{LGR}{\alpha}{139} \DeclareTextComposite{\accperispomeni}{LGR}{\alpha}{144} \DeclareTextComposite{\accdasiaperispomeni}{LGR}{\alpha}{145} \DeclareTextComposite{\accpsiliperispomeni}{LGR}{\alpha}{146} \DeclareTextComposite{\accvaria}{LGR}{\eta}{152} \DeclareTextComposite{\accdasia}{LGR}{\eta}{153} \DeclareTextComposite{\accpsili}{LGR}{\eta}{154} \DeclareTextComposite{\acctonos}{LGR}{\eta}{160} \DeclareTextComposite{\accdasiaoxia}{LGR}{\eta}{161} \DeclareTextComposite{\accpsilioxia}{LGR}{\eta}{162} \DeclareTextComposite{\accdasiavaria}{LGR}{\eta}{163} \DeclareTextComposite{\accperispomeni}{LGR}{\eta}{168} \DeclareTextComposite{\accdasiaperispomeni}{LGR}{\eta}{169} \DeclareTextComposite{\accpsiliperispomeni}{LGR}{\eta}{170} \DeclareTextComposite{\accpsilivaria}{LGR}{\eta}{171} \DeclareTextComposite{\accvaria}{LGR}{\omega}{176} \DeclareTextComposite{\accdasia}{LGR}{\omega}{177} \DeclareTextComposite{\accpsili}{LGR}{\omega}{178} \DeclareTextComposite{\accdasiavaria}{LGR}{\omega}{179} \DeclareTextComposite{\acctonos}{LGR}{\omega}{184} \DeclareTextComposite{\accdasiaoxia}{LGR}{\omega}{185} \DeclareTextComposite{\accpsilioxia}{LGR}{\omega}{186} \DeclareTextComposite{\accpsilivaria}{LGR}{\omega}{187} \DeclareTextComposite{\accperispomeni}{LGR}{\omega}{192} \DeclareTextComposite{\accdasiaperispomeni}{LGR}{\omega}{193} \DeclareTextComposite{\accpsiliperispomeni}{LGR}{\omega}{194} \DeclareTextComposite{\accvaria}{LGR}{\iota}{200} \DeclareTextComposite{\accdasia}{LGR}{\iota}{201} \DeclareTextComposite{\accpsili}{LGR}{\iota}{202} \DeclareTextComposite{\accdasiavaria}{LGR}{\iota}{203} \DeclareTextComposite{\acctonos}{LGR}{\iota}{208} \DeclareTextComposite{\accdasiaoxia}{LGR}{\iota}{209} \DeclareTextComposite{\accpsilioxia}{LGR}{\iota}{210} \DeclareTextComposite{\accpsilivaria}{LGR}{\iota}{211} \DeclareTextComposite{\accperispomeni}{LGR}{\iota}{216} \DeclareTextComposite{\accdasiaperispomeni}{LGR}{\iota}{217} \DeclareTextComposite{\accpsiliperispomeni}{LGR}{\iota}{218} \DeclareTextComposite{\accdialytika}{LGR}{\iota}{240} \DeclareTextComposite{\accdialytikavaria}{LGR}{\iota}{241} \DeclareTextComposite{\accdialytikatonos}{LGR}{\iota}{242} \DeclareTextComposite{\accdialytikaperispomeni}{LGR}{\iota}{243} \DeclareTextComposite{\accvaria}{LGR}{\upsilon}{204} \DeclareTextComposite{\accdasia}{LGR}{\upsilon}{205} \DeclareTextComposite{\accpsili}{LGR}{\upsilon}{206} \DeclareTextComposite{\accdasiavaria}{LGR}{\upsilon}{207} \DeclareTextComposite{\acctonos}{LGR}{\upsilon}{212} \DeclareTextComposite{\accdasiaoxia}{LGR}{\upsilon}{213} \DeclareTextComposite{\accpsilioxia}{LGR}{\upsilon}{214} \DeclareTextComposite{\accpsilivaria}{LGR}{\upsilon}{215} \DeclareTextComposite{\accperispomeni}{LGR}{\upsilon}{220} \DeclareTextComposite{\accdasiaperispomeni}{LGR}{\upsilon}{221} \DeclareTextComposite{\accpsiliperispomeni}{LGR}{\upsilon}{222} \DeclareTextComposite{\accdialytika}{LGR}{\upsilon}{244} \DeclareTextComposite{\accdialytikavaria}{LGR}{\upsilon}{245} \DeclareTextComposite{\accdialytikatonos}{LGR}{\upsilon}{246} \DeclareTextComposite{\accdialytikaperispomeni}{LGR}{\upsilon}{247} \DeclareTextComposite{\accvaria}{LGR}{\epsilon}{224} \DeclareTextComposite{\accdasia}{LGR}{\epsilon}{225} \DeclareTextComposite{\accpsili}{LGR}{\epsilon}{226} \DeclareTextComposite{\accdasiavaria}{LGR}{\epsilon}{227} \DeclareTextComposite{\acctonos}{LGR}{\epsilon}{232} \DeclareTextComposite{\accdasiaoxia}{LGR}{\epsilon}{233} \DeclareTextComposite{\accpsilioxia}{LGR}{\epsilon}{234} \DeclareTextComposite{\accpsilivaria}{LGR}{\epsilon}{235} \DeclareTextComposite{\accvaria}{LGR}{\omicron}{228} \DeclareTextComposite{\accdasia}{LGR}{\omicron}{229} \DeclareTextComposite{\accpsili}{LGR}{\omicron}{230} \DeclareTextComposite{\accdasiavaria}{LGR}{\omicron}{231} \DeclareTextComposite{\acctonos}{LGR}{\omicron}{236} \DeclareTextComposite{\accdasiaoxia}{LGR}{\omicron}{237} \DeclareTextComposite{\accpsilioxia}{LGR}{\omicron}{238} \DeclareTextComposite{\accpsilivaria}{LGR}{\omicron}{239} \DeclareTextCompositeCommand{\accdasia}{LGR}{\Alpha}{A} \DeclareTextCompositeCommand{\accpsilivaria}{LGR}{\Alpha}{>`A} \DeclareTextCompositeCommand{\accpsilioxia}{LGR}{\Alpha}{>'A} \DeclareTextCompositeCommand{\accpsiliperispomeni}{LGR}{\Alpha}{>\char126A} \DeclareTextCompositeCommand{\acctonos}{LGR}{\Alpha}{'A} \DeclareTextCompositeCommand{\accvaria}{LGR}{\Alpha}{`A} \DeclareTextCompositeCommand{\accdasia}{LGR}{\Epsilon}{E} \DeclareTextCompositeCommand{\accpsilioxia}{LGR}{\Epsilon}{>'E} \DeclareTextCompositeCommand{\accpsilivaria}{LGR}{\Epsilon}{>`E} \DeclareTextCompositeCommand{\acctonos}{LGR}{\Epsilon}{'E} \DeclareTextCompositeCommand{\accvaria}{LGR}{\Epsilon}{`E} \DeclareTextCompositeCommand{\accdasia}{LGR}{\Eta}{H} \DeclareTextCompositeCommand{\accpsilivaria}{LGR}{\Eta}{>`H} \DeclareTextCompositeCommand{\accpsilioxia}{LGR}{\Eta}{>'H} \DeclareTextCompositeCommand{\accpsiliperispomeni}{LGR}{\Eta}{>\char126H} \DeclareTextCompositeCommand{\acctonos}{LGR}{\Eta}{'H} \DeclareTextCompositeCommand{\accvaria}{LGR}{\Eta}{`H} \DeclareTextCompositeCommand{\accdasia}{LGR}{\Iota}{I} \DeclareTextCompositeCommand{\accpsilivaria}{LGR}{\Iota}{>`I} \DeclareTextCompositeCommand{\accpsilioxia}{LGR}{\Iota}{>'I} \DeclareTextCompositeCommand{\accpsiliperispomeni}{LGR}{\Iota}{>\char126I} \DeclareTextCompositeCommand{\acctonos}{LGR}{\Iota}{'I} \DeclareTextCompositeCommand{\accvaria}{LGR}{\Iota}{`I} \DeclareTextCompositeCommand{\accdasia}{LGR}{\Omicron}{O} \DeclareTextCompositeCommand{\accpsilivaria}{LGR}{\Omicron}{>`O} \DeclareTextCompositeCommand{\accpsilioxia}{LGR}{\Omicron}{>'O} \DeclareTextCompositeCommand{\acctonos}{LGR}{\Omicron}{'O} \DeclareTextCompositeCommand{\accvaria}{LGR}{\Omicron}{`O} \DeclareTextCompositeCommand{\accdasia}{LGR}{\Upsilon}{W} \DeclareTextCompositeCommand{\accpsilivaria}{LGR}{\Omega}{>`W} \DeclareTextCompositeCommand{\accpsilioxia}{LGR}{\Omega}{>'W} \DeclareTextCompositeCommand{\accpsiliperispomeni}{LGR}{\Omega}{>\char126W} \DeclareTextCompositeCommand{\acctonos}{LGR}{\Omega}{'W} \DeclareTextCompositeCommand{\accvaria}{LGR}{\Omega}{`W} \DeclareTextComposite{\accdialytika}{LGR}{\Iota}{219} \DeclareTextComposite{\accdialytika}{LGR}{\Upsilon}{223} \DeclareTextCompositeCommand{\LGR@hiatus}{LGR}{\Alpha}{\LGR@A@hiatus} \DeclareTextCompositeCommand{\LGR@hiatus}{LGR}{\Epsilon}{\LGR@E@hiatus} % 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, however, the package dependent on the `e-TeX` % extensions. % % 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