% textalpha.sty % +++++++++++++ % Greek symbols in text % ********************* % % :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: Provide a set of ``\text*`` macros for Greek characters % in text mode. % % :Identification: % :: \NeedsTeXFormat{LaTeX2e} \ProvidesPackage{textalpha} [2013/11/28 v0.11 macros for Greek letters in text] % .. note:: % % The package was renamed from `textgreek` to `textalpha` to prevent % confusion with the textgreek_ package by Leonard Michlmayr. % % % Changelog: % .. class:: borderless % % ========== ===== ========================================================= % 2010-06-16 0.1 initial version % 2012-06-27 0.2 support for compound Unicode definitions outside LGR % 2013-05-03 0.3 new accent macro names with ``lgrxenc.def`` 0.7 % 2013-05-28 0.4 use ``lgrenc.def`` from greek-fontenc. % 2013-09-11 0.5 move to greek-fontenc_, % .. support XeTeX/LuaTeX, add breve below accents. % 2013-11-28 0.11 Compatibility with Xe/LuaTeX in 8-bit mode. % ========== ===== ========================================================= % % Motivation % ========== % % By default, TeX macros for Greek letters are only valid in mathematical % mode. This package sets up a suitable font encoding and Greek LICR % definitions (``\textalpha`` -- ``\textOmega``). % % To allow documents using Greek LICR macros without worrying about the TeX % engine used to compile them, this package tests the declared font encodings % and does "the right thing" to set up Greek text font support: % % * If the Unicode font encodings EU1 (XeTeX) or EU2 (LuaTeX) are declared, % before loading this package (e.g. vie ``fontspec``) the package provides % Greek LICR definitions for them. % % * If the LGR font encoding is declared before loading this package, it is % set as default for Greek LICR macros (cf. fntguide_ section 5.3). % % With XeTeX or LuaTex, Unicode fonts and LGR encoded 8-bit fonts can be % used in the same document (see greek-euenc-doc.tex_). % % Advantages: % % * Symbols from a Greek text font (e.g. the `CB fonts`_) can be accessed % without the need for an explicite font-encoding switch anywhere in the % text. % % * Unicode input of Greek characters is supported % % + via ``\usepackage[utf8]{inputenc}`` and ``lgrenc.dfu`` from % greek-inputenc_ for 8-bit TeX or XeTeX/LuaTeX in 8-bit compatibility % mode in any font encoding (see textalpha-doc.tex_). % % + natively by XeTeX/LuaTeX for Unicode fonts. As inputenc_ does not work % with these engines, text input can be done via the Latin transcription % or LICR but *not via literal Unicode characters* for 8-bit font encodings % like LGR (see greek-euenc-doc.tex_). % % .. Attention:: The macros work well in any font encoding for single symbols. % However, with 8-bit TeX engines, 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 correct hyphenation of Greek text. % % % Usage % ===== % % .. code:: latex % % \usepackage{textalpha} % % For detailled examples see ``_ and ``_ % (8-bit TeX and XeTeX/LuaTeX in 8-bit compatibility mode) as well as % ``_ and ``_ (XeTeX/LuaTeX with % Unicode fonts). % % % Implementation % ============== % % Requirements % ------------ % % With XeTeX or LuaTeX, there is one common input and font encoding -- % Unicode. 8-bit TeX font encodings are only used in compatibility mode or for % fonts not available otherwise. For compatibility with the LaTeX font % selection system, the package euenc_ defines the (pseudo) font encodings EU1 % and EU2 for XeTeX and LuaTeX respectively. However euenc does not (yet) % define LICR macros. We therefore explicitely load Greek LICR definitions for % XeTeX/LuaTeX from `greek-euenc.def `_ which in turn % includes `greek-fontenc.def `_. % % With 8-bit LaTeX, the LGR font encoding is used for Greek characters. If no % Greek-supporting font encoding (EU1, EU2, or LGR) is declared, LGR is loaded % and set up as default Greek font encoding by this package. % % To give ``textalpha.sty`` a chance of finding out which font encodings are % used, load it after fontspec_ and/or fontenc_. % % Font encodings % """""""""""""" % % Ensure a Greek-supporting font encoding exists and supports Greek LICR % macros: % % Load the Greek LICR definitions for Unicode if font encoding EU1 (XeTeX) or % EU2 (LuaTeX) is detected. [#EU]_ In an ideal world, this would be done in % the ``eu1enc.def`` (or ``eu2enc.def``) file of the euenc_ package. If none % of EU1, EU2, and LGR is declared, load ``lgrenc.def``: % % Re-set the ``\LastDeclaredEncoding``: Because fontenc loads font % encoding definition files only once, it may happen that another font % encoding is defined afterwards --- for example fontspec_ leaves % ``\LastDeclaredEncoding`` at ``T3`` (tipa), because it inputs the xunicode_ % package which in turn loads ``t3enc.def``. :: \@ifl@aded{def}{eu1enc}{ \renewcommand{\LastDeclaredEncoding}{EU1} \input{greek-euenc.def} }{% else \@ifl@aded{def}{eu2enc}{ \renewcommand{\LastDeclaredEncoding}{EU2} \input{greek-euenc.def} }{% else \@ifl@aded{def}{lgrenc}{ % LGR already declared and set up }{ \input{lgrenc.def} } } } % .. [#EU] The two different (pseudo) font encodings allow different font setups for % XeTeX vs. LuaTeX using differently named ``*.fd`` files (see euenc_ for % details). % % % The package hyperref_ defines the PU font encoding which also supports % (monotonic) Greek. It currently misses polytonic greek and the % ``\greekscript`` and ``\ensuregreek`` TextCommands:: \@ifl@aded{def}{puenc} {\ProvideTextCommand{\greekscript}{PU}{} \ProvideTextCommand{\ensuregreek}{PU}[1]{#1}} {} % Default declarations % -------------------- % % The following definitions ensure that the Greek LICR macros can be used % anywhere in the document also with 8-bit TeX by declaring LGR as their % default font encoding. Abort here, if another Greek-supporting % font encoding is used instead of LGR:: \@ifl@aded{def}{lgrenc} {\renewcommand{\LastDeclaredEncoding}{LGR}} {\expandafter\endinput} % "return" % greekscript, ensuregreek % """""""""""""""""""""""" % % The ``\greekscript`` declaration ensures the current font encoding supports % the Greek script. ``greek-fontenc.def`` sets this to the empty declaration % for font encodings that do so. This is currently used by ``lgrenc.def`` % (LGR) and ``greek-euenc.def`` (Greek LICR macros for EU1 and EU2). % % % We define LGR as default encoding for Greek text. We use % ``\ProvideTextCommandDefault`` to enable the author or other packages to use % an alternative definition (see [fntguide_]):: \ProvideTextCommandDefault{\greekscript}{\fontencoding{LGR}\selectfont} % The ``\ensuregreek`` command can be used to ensure that its argument is set in % a font encoding with support for Greek. Again the default is LGR:: \ProvideTextCommandDefault{\ensuregreek}[1]{\leavevmode{\greekscript #1}} % .. The [fntguide_] writes % % Note that ``\DeclareTextAccentDefault`` can be used on any % one-argument encoding-specific command, not just those defined with % ``\DeclareTextAccent``. % % However, the simpler alternative % ``\DeclareTextAccentDefault{\ensuregreek}{LGR}`` fails with the table of % Unicode characters in the test document ``__: % % ``! You can't use a prefix with `end-group character }'.`` % % Eventually, all font encodings supporting Greek script (e.g. LGI, PU, EU1, % EU2) will declare ``\ensuregreek`` as text command that passes the argument % unchanged. This way, kerning and selection of precomposed glyphs would work % also for cases like ``\ensuregreek{\'A}U``. % % % Greek Alphabet % """""""""""""" % % Define the ``text*`` marcos as default for all font encodings:: \DeclareTextSymbolDefault{\textAlpha}{LGR} \DeclareTextSymbolDefault{\textBeta}{LGR} \DeclareTextSymbolDefault{\textGamma}{LGR} \DeclareTextSymbolDefault{\textDelta}{LGR} \DeclareTextSymbolDefault{\textEpsilon}{LGR} \DeclareTextSymbolDefault{\textZeta}{LGR} \DeclareTextSymbolDefault{\textEta}{LGR} \DeclareTextSymbolDefault{\textTheta}{LGR} \DeclareTextSymbolDefault{\textIota}{LGR} \DeclareTextSymbolDefault{\textKappa}{LGR} \DeclareTextSymbolDefault{\textLambda}{LGR} \DeclareTextSymbolDefault{\textMu}{LGR} \DeclareTextSymbolDefault{\textNu}{LGR} \DeclareTextSymbolDefault{\textXi}{LGR} \DeclareTextSymbolDefault{\textOmicron}{LGR} \DeclareTextSymbolDefault{\textPi}{LGR} \DeclareTextSymbolDefault{\textRho}{LGR} \DeclareTextSymbolDefault{\textSigma}{LGR} \DeclareTextSymbolDefault{\textTau}{LGR} \DeclareTextSymbolDefault{\textUpsilon}{LGR} \DeclareTextSymbolDefault{\textPhi}{LGR} \DeclareTextSymbolDefault{\textChi}{LGR} \DeclareTextSymbolDefault{\textPsi}{LGR} \DeclareTextSymbolDefault{\textOmega}{LGR} % \DeclareTextSymbolDefault{\textalpha}{LGR} \DeclareTextSymbolDefault{\textbeta}{LGR} \DeclareTextSymbolDefault{\textgamma}{LGR} \DeclareTextSymbolDefault{\textdelta}{LGR} \DeclareTextSymbolDefault{\textepsilon}{LGR} \DeclareTextSymbolDefault{\textzeta}{LGR} \DeclareTextSymbolDefault{\texteta}{LGR} \DeclareTextSymbolDefault{\texttheta}{LGR} \DeclareTextSymbolDefault{\textiota}{LGR} \DeclareTextSymbolDefault{\textkappa}{LGR} \DeclareTextSymbolDefault{\textlambda}{LGR} \DeclareTextSymbolDefault{\textmu}{LGR} \DeclareTextSymbolDefault{\textnu}{LGR} \DeclareTextSymbolDefault{\textxi}{LGR} \DeclareTextSymbolDefault{\textomicron}{LGR} \DeclareTextSymbolDefault{\textpi}{LGR} \DeclareTextSymbolDefault{\textrho}{LGR} \DeclareTextSymbolDefault{\textsigma}{LGR} \DeclareTextSymbolDefault{\textvarsigma}{LGR} \DeclareTextSymbolDefault{\textfinalsigma}{LGR} % alias for \textvarsigma \DeclareTextSymbolDefault{\textautosigma}{LGR} % char 115 in LGR \DeclareTextSymbolDefault{\texttau}{LGR} \DeclareTextSymbolDefault{\textupsilon}{LGR} \DeclareTextSymbolDefault{\textphi}{LGR} \DeclareTextSymbolDefault{\textchi}{LGR} \DeclareTextSymbolDefault{\textpsi}{LGR} \DeclareTextSymbolDefault{\textomega}{LGR} % Additional Greek symbols % '''''''''''''''''''''''' % % Including alias names for compatibility with hyperref's puenc.def. % % Ancient Greek Numbers (Athenian Numerals):: \DeclareTextSymbolDefault{\textpentedeka}{LGR} % GREEK ACROPHONIC ATTIC FIFTY \DeclareTextSymbolDefault{\textpentehekaton}{LGR} % GREEK ACROPHONIC ATTIC FIVE HUNDRED \DeclareTextSymbolDefault{\textpenteqilioi}{LGR} % GREEK ACROPHONIC ATTIC FIVE THOUSAND \DeclareTextSymbolDefault{\textpentemurioi}{LGR} % GREEK ACROPHONIC ATTIC FIFTY THOUSAND % Archaic letters:: \DeclareTextSymbolDefault{\textstigma}{LGR} % ϛ \DeclareTextSymbolDefault{\textstigmagreek}{LGR} % ϛ (puenc.def) \DeclareTextSymbolDefault{\textvarstigma}{LGR} % stigma variant \DeclareTextSymbolDefault{\textkoppa}{LGR} % ϟ (greek small letter koppa) \DeclareTextSymbolDefault{\textkoppagreek}{LGR} % ϟ (puenc.def) \DeclareTextSymbolDefault{\textqoppa}{LGR} % ϙ (archaic koppa) \DeclareTextSymbolDefault{\textQoppa}{LGR} % Ϙ (archaic Koppa) \DeclareTextSymbolDefault{\textStigma}{LGR} % Ϛ ϹΤ ligature in some fonts \DeclareTextSymbolDefault{\textStigmagreek}{LGR} % Ϛ (puenc.def) \DeclareTextSymbolDefault{\textSampi}{LGR} % Ϡ \DeclareTextSymbolDefault{\textSampigreek}{LGR} % Ϡ (puenc.def) \DeclareTextSymbolDefault{\textsampi}{LGR} % ϡ \DeclareTextSymbolDefault{\textsampigreek}{LGR} % ϡ (puenc.def) \DeclareTextSymbolDefault{\textanoteleia}{LGR} % · \DeclareTextSymbolDefault{\texterotimatiko}{LGR} % ; (003B is the preferred character) \DeclareTextSymbolDefault{\textdigamma}{LGR} % ϝ \DeclareTextSymbolDefault{\textDigamma}{LGR} % Ϝ \DeclareTextSymbolDefault{\textdigammagreek}{LGR} % ϝ (puenc.def) \DeclareTextSymbolDefault{\textDigammagreek}{LGR} % Ϝ (puenc.def) % numeral signs: http://en.wikipedia.org/wiki/Greek_numerals :: \DeclareTextSymbolDefault{\textnumeralsigngreek}{LGR} % (puenc.def) \DeclareTextSymbolDefault{\textnumeralsignlowergreek}{LGR} % (puenc.def) % Diacritics % """""""""" % % Greek diacritics via "named" macros:: \DeclareTextAccentDefault{\accdasia}{LGR} \DeclareTextAccentDefault{\accpsili}{LGR} \DeclareTextAccentDefault{\acctonos}{LGR} \DeclareTextAccentDefault{\accvaria}{LGR} \DeclareTextAccentDefault{\accperispomeni}{LGR} \DeclareTextAccentDefault{\accdialytika}{LGR} \DeclareTextAccentDefault{\<}{LGR} \DeclareTextAccentDefault{\>}{LGR} % \DeclareTextAccentDefault{\accdasiaoxia}{LGR} \DeclareTextAccentDefault{\accdasiavaria}{LGR} \DeclareTextAccentDefault{\accdasiaperispomeni}{LGR} \DeclareTextAccentDefault{\accpsilioxia}{LGR} \DeclareTextAccentDefault{\accpsilivaria}{LGR} \DeclareTextAccentDefault{\accpsiliperispomeni}{LGR} \DeclareTextAccentDefault{\accdialytikatonos}{LGR} \DeclareTextAccentDefault{\accdialytikavaria}{LGR} \DeclareTextAccentDefault{\accdialytikaperispomeni}{LGR} % Postfix accents:: \DeclareTextSymbolDefault{\ypogegrammeni}{LGR} % "small" sub-iota \DeclareTextSymbolDefault{\prosgegrammeni}{LGR} % "capital" sub-iota % Other accents in LGR:: \DeclareTextAccentDefault{\accinvertedbrevebelow}{LGR} % INVERTED BREVE BELOW \DeclareTextAccentDefault{\textsubarch}{LGR} % tipa, Teubner name: ut \DeclareTextAccentDefault{\accbrevebelow}{LGR} % BREVE BELOW % Auxiliary macros % """""""""""""""" % % ``\MakeUppercase`` requires two internal commands:: \DeclareTextAccentDefault{\LGR@hiatus}{LGR} \DeclareTextAccentDefault{\LGR@Dialytika}{LGR} % .. 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/pkg/babel % .. _euenc: http://www.ctan.org/pkg/euenc % .. _e-TeX: http://www.tex.ac.uk/cgi-bin/texfaq2html?label=etex % .. _fontenc: http://www.ctan.org/pkg/fontenc % .. _fontspec: http://www.ctan.org/pkg/fontspec % .. _fntguide: http://www.ctan.org/tex-archive/macros/latex/doc/fntguide.pdf % .. _greek-fontenc: http://www.ctan.org/pkg/greek-fontenc % .. _greek-inputenc: http://www.ctan.org/pkg/greek-inputenc % .. _hyperref: http://www.ctan.org/pkg/hyperref % .. _inputenc: http://www.ctan.org/pkg/inputenc % .. _polyglossia: http://www.ctan.org/pkg/polyglossia % .. _textgreek: http://www.ctan.org/pkg/textgreek % .. _xunicode: http://www.ctan.org/pkg/xunicode