summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/tex/latex/greek-fontenc/textalpha.sty
diff options
context:
space:
mode:
authorKarl Berry <karl@freefriends.org>2013-11-29 22:11:02 +0000
committerKarl Berry <karl@freefriends.org>2013-11-29 22:11:02 +0000
commit83583b57e8624e227242b9bc763bbe6e389280ed (patch)
treeb8127d0edc5a14846b306b3dd4c03e866f415562 /Master/texmf-dist/tex/latex/greek-fontenc/textalpha.sty
parent48b730145866842f961daf4af297ecd5d11447f6 (diff)
greek-fontenc (29nov13)
git-svn-id: svn://tug.org/texlive/trunk@32276 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master/texmf-dist/tex/latex/greek-fontenc/textalpha.sty')
-rw-r--r--Master/texmf-dist/tex/latex/greek-fontenc/textalpha.sty288
1 files changed, 153 insertions, 135 deletions
diff --git a/Master/texmf-dist/tex/latex/greek-fontenc/textalpha.sty b/Master/texmf-dist/tex/latex/greek-fontenc/textalpha.sty
index dcac9f746b6..876e837f5e2 100644
--- a/Master/texmf-dist/tex/latex/greek-fontenc/textalpha.sty
+++ b/Master/texmf-dist/tex/latex/greek-fontenc/textalpha.sty
@@ -1,30 +1,30 @@
% textalpha: 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 letters
-% outside math.
-%
+%
+% :Abstract: Provide a set of ``\text*`` macros for Greek characters
+% in text mode.
+%
% :Identification:
% ::
\NeedsTeXFormat{LaTeX2e}
\ProvidesPackage{textalpha}
-[2013/09/11 v0.5 macros for Greek letters in text]
+[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
@@ -32,177 +32,193 @@
% 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 does a simple test (based on the
-% ``\ifdefined`` command provided by the e-TeX_ extension) and does "the right
-% thing" to set up Greek text font support for the detected engine.
-%
-% For 8-bit TeX, this package also declares the LGR font encoding as default
-% for Greek LICR macros (cf. fntguide_ section 5.3):
-%
+% 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 test-euenc.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.
-%
-% * In combination with ``\usepackage[utf8]{inputenc}`` and ``lgrenc.dfu``
-% from greek-inputenc_, Unicode input of Greek characters is supported in
-% any font encoding.
-%
-% .. 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.
-%
+% 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-test.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 test-euenc.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 proper hyphenation.
-%
-%
+% to ensure correct hyphenation of Greek text.
+%
+%
% Usage
% =====
-%
+%
% .. code:: latex
-%
+%
% \usepackage{textalpha}
-%
+%
% For details see `<textalpha-test.tex>`_ and `<textalpha-test.pdf>`_ (8-bit
-% TeX) as well as `<test-euenc.tex>`_ and `<test-euenc.pdf>`_ (XeTeX/LuaTeX).
-%
-%
+% TeX and XeTeX/LuaTeX in 8-bit compatibility mode) as well as
+% `<test-euenc.tex>`_ and `<test-euenc.pdf>`_ (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 should generally not be used. 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-fontenc_.
-%
-% XeTeX
-% """""
-%
-% Use the EU1 font encoding. This is the only font encoding used with XeTeX,
-% so loading it with fontenc_ cannot mix up the default font encoding::
-
-\ifdefined\XeTeXrevision
- \usepackage[EU1]{fontenc}
-
-% Load the Greek LICR definitions for XeTeX/LuaTeX. In an ideal world, this
-% should be done in the eu1enc.def file of the euenc_ package.
-%
-% Before that, we must ensure EU1 is the ``\LastDeclaredEncoding``: Beacause
-% fontenc loads font encoding definition files only once, it may happen that
-% another font encoding is defined after EU1 --- for example fontspec_
-% declares EU1 but leaves ``\LastDeclaredEncoding`` at ``T3`` (tipa), because
-% it later inputs the xunicode_ package which in turn loads ``t3enc.def``. ::
-
+% 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 <greek-euenc.def.html>`_ which in turn
+% includes `greek-fontenc.def <greek-fontenc.def.html>`_.
+%
+% 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}
-
-% No other action is required with Unicode-aware TeX engines::
-
- \expandafter\endinput % "return"
-\fi
-
-
-% LuaTeX
-% """"""
-%
-% Similar actions to XeTeX, but use the font encoding EU2: [#EU]_ ::
-
-\ifdefined\luatexversion
- \usepackage[EU2]{fontenc}
- \renewcommand{\LastDeclaredEncoding}{EU2}
- \input{greek-euenc.def}
- \expandafter\endinput % "return"
-\fi
+}{% 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).
-%
-%
-% 8-bit TeX
-% """""""""
-%
-% With 8-bit TeX, you usually pass the font encoding name(s) as option to
-% fontenc_ which then loads the corresponding ``*.def`` file(s). The last
-% option indicates the document's default font encoding. (See [fntguide]_ for
-% details and `<lgrenc-test.tex>`_ for an example.) Therefore, we do not know
-% the documents main font encoding and hence cannot use
-% ``\usepackage[LGR]{inputenc}``. We load ``lgrenc.def`` directly, if it is
-% not already done and re-set ``\LastDeclaredEncoding`` else.
-%
-% .. note:: The use of ``\@ifundefined`` has the side-effect that the tested
-% macro becomes defined and set to ``\relax`` (polluting the namespace and
-% interfering with tests via eTeX's ``\ifdefined``). However, in this case
-% no harm is done as the macro is defined by ``lgrenc.def`` anyway.
-%
-% ::
-
-\@ifundefined{ver@lgrenc.def}
- {\input{lgrenc.def}}
- {\renewcommand{\LastDeclaredEncoding}{EU1}}
+%
+%
+% 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.
-%
-% ensuregreek
-% """""""""""
-%
+% 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. We define LGR as default encoding for
-% Greek text::
+% a font encoding with support for Greek. Again the default is LGR::
-\DeclareTextCommandDefault{\ensuregreek}[1]{{\fontencoding{LGR}\selectfont #1}}
+\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 `<textalpha-test.tex>`__:
-%
+%
% ``! 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``.
-%
-% .. Do this for PU here? ``\DeclareTextCommand{\ensuregreek}{PU}[1]{#1}``
-%
-% Can lead to infinite recursion (``TeX capacity exeeded``) without the
-% ``unicode=true`` hyperref option.
-% (How about a test whether the PU font encoding is defined?).
-%
-%
+%
+%
% Greek Alphabet
% """"""""""""""
-%
+%
% Define the ``text*`` marcos as default for all font encodings::
\DeclareTextSymbolDefault{\textAlpha}{LGR}
@@ -260,9 +276,9 @@
% 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
@@ -299,7 +315,7 @@
% Diacritics
% """"""""""
-%
+%
% Greek diacritics via "named" macros::
\DeclareTextAccentDefault{\accdasia}{LGR}
@@ -335,7 +351,7 @@
% Auxiliary macros
% """"""""""""""""
-%
+%
% ``\MakeUppercase`` requires two internal commands::
\DeclareTextAccentDefault{\LGR@hiatus}{LGR}
@@ -354,6 +370,8 @@
% .. _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