% textalpha.sty
% +++++++++++++
% Greek symbols in text
% *********************
%
% :Version:   2.5 (changelog_)
%
% :Copyright: �� 2010, 2023 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 LICR macros for Greek characters in text mode.
%
%
% .. contents::
%
% Motivation
% ==========
%
% By default, TeX macros for Greek letters are only valid in mathematical
% mode. This package sets up a suitable `font encoding`_ and `LaTeX internal
% character representations` (LICR) definitions for Greek (``\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 an Unicode font encoding is declared by ``fontspec``, add Greek LICR
%   definitions.
%
% * Otherwise, the `LGR font encoding`_ is set as `default font encoding`
%   (cf. [fntguide]_ section 5.3) for Greek.
%
% 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.
%
%     If 8-bit font encodings like LGR are used alongside Unicode fonts, text
%     input can be done via the Latin transliteration or LICR but *not via
%     literal Unicode characters* (see test-tuenc-greek.tex_).
%
% .. _limitations:
%
% .. 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 and upcasing of Greek text.
%
%
% Usage
% =====
%
% Ensure support for Greek characters in text mode with
%
% .. code:: latex
%
%      \usepackage{textalpha}
%
% eventually with the options to `normalize symbols variants`_
%
% .. code:: latex
%
%      \usepackage[normalize-symbols]{textalpha}
%
% and/or to `use the semicolon as erotimatiko`_ also in 8-bit TeX
%
% .. code:: latex
%
%      \usepackage[normalize-symbols,keep-semicolon]{textalpha}
%
%
% To give ``textalpha.sty`` a chance of finding out which `font encodings`_
% are used, load it after fontspec_ and/or fontenc_.
%
% Documentation
% =============
%
% A HTML rendering of the literal source is available as
% `<textalpha.sty.html>`_ (you may be reading it just now).
%
% For detailed examples see `<textalpha-doc.tex>`_ and `<textalpha-doc.pdf>`_
% (8-bit TeX and XeTeX/LuaTeX in 8-bit compatibility mode) as well as
% `<test-tuenc-greek.tex>`_ and `<test-tuenc-greek.pdf>`_ (XeTeX/LuaTeX with
% Unicode fonts).
%
% With XeTeX or LuaTex, Unicode fonts and LGR encoded 8-bit fonts can be used
% in the same document (see test-tuenc-greek.tex_).
%
%
% Implementation
% ==============
%
% Identification
% --------------
% ::

\NeedsTeXFormat{LaTeX2e}
\ProvidesPackage{textalpha}[2023-09-12 2.5 macros for Greek letters in text]


% Options
% -------
%
% .. _normalize symbols variants:
%
% normalize-symbols
% """""""""""""""""
%
% The "variant shape" symbol characters like ``03D1 GREEK THETA SYMBOL`` are
% mathematical charcters for mathematical use
% (similar to ``1D440 MATHEMATICAL ITALIC CAPITAL M``).
% Unfortunately, some Greek texts sources in Unicode encoding mix letter and
% symbol characters .
%
% The "normalize-symbols" option controls the handling of `variant shape
% symbols`_ under 8-bit TeX:
%
% * The option activates a simple "folding" mechanism that merges �� and �� to
%   \textkappa etc. for text copied from external sources which may use the
%   GREEK SYMBOL characters in place of GREEK LETTERS,
%
% * Without this option, variant shape symbols in the input are reported as
%   errors to prevent information loss in cases where the distinction between
%   �� and �� is intended (e.g. in mathematical or scientific context).
%
% With XeTeX/LuaTeX and Unicode fonts, this option is ignored.
% ::

\newif\iftextalpha@normalizeSymbols
\DeclareOption{normalize-symbols}{\textalpha@normalizeSymbolstrue}


% .. _use the semicolon as erotimatiko:
%
% keep-semicolon
% """"""""""""""
%
% The erotimatiko_ looks like a semicolon but is a
% **Greek question mark**:
%
% * The `LGR font encoding`_ uses the Latin question mark as input for the
%   `erotimatiko` and maps the semicolon to a middle dot (`ano teleia`).
% * The Unicode standard provides the code point ``037E GREEK QUESTION MARK``
%   but says: "character ``003B SEMICOLON`` (and not 037E) is the preferred
%   character for Greek question mark".
%
% The ``keep-semicolon`` option allows to use the `semicolon as erotimatiko`_
% in both, Xe/LuaTeX and 8-bit TeX. (The `ano teleia` can be input as
% ``\textanoteleia`` or using character ``00B7 MIDDLE DOT``.)
% With XeTeX/LuaTeX and Unicode fonts, this option is ignored.
% ::

\newif\iftextalpha@keepSemicolon
\DeclareOption{keep-semicolon}{\textalpha@keepSemicolontrue}

\ProcessOptions\relax


% Symbol macros for breathings
% ----------------------------
%
% In the Latin transliteration provided by LGR, breathing accents (Dasia and
% Psili) are input as < and >. Provide the corresponding NFSS macro accents.
% (Used below for LGR, TU, and PU, if these font encodings are defined)::

\providecommand*{\IfFormatAtLeastTF}[3]{#3} % new in 2020

\newcommand{\textalpha@define@breathings}[1]{
  \DeclareTextCommand{\<}{#1}{\accdasia}
  \DeclareTextCommand{\>}{#1}{\accpsili}
  % Composite accents starting with the new-defined shortcuts:
  \DeclareTextCompositeCommand{\>}{#1}{'}{\accpsilioxia}
  \DeclareTextCompositeCommand{\>}{#1}{`}{\accpsilivaria}
  \DeclareTextCompositeCommand{\>}{#1}{~}{\accpsiliperispomeni}
  \DeclareTextCompositeCommand{\<}{#1}{'}{\accdasiaoxia}
  \DeclareTextCompositeCommand{\<}{#1}{`}{\accdasiavaria}
  \DeclareTextCompositeCommand{\<}{#1}{~}{\accdasiaperispomeni}

  \IfFormatAtLeastTF{2022/06/01}{}{% else
    \DeclareTextCompositeCommand{\<}{#1}{^^9f}{\LGR@hiatus}
    \DeclareTextCompositeCommand{\>}{#1}{^^9f}{\LGR@hiatus}
  }

% Also define "mixed" composites (required due to the fix for
% ``\MakeUppercase`` below::

  % \MakeUppercse: \>~a, \<~a
  % \DeclareTextCompositeCommand{\accpsili}{#1}{~}{\accpsiliperispomeni}
  % \DeclareTextCompositeCommand{\accdasia}{#1}{~}{\accdasiaperispomeni}
}

% Fix 2022 \MakeUppercase::

\ifdefined\DeclareCaseChangeEquivalent % new in 2023
  \DeclareCaseChangeEquivalent{\<}{\CaseSwitch{\<}{\LGR@accdropped}{\<}{\<}}
  \DeclareCaseChangeEquivalent{\>}{\CaseSwitch{\>}{\LGR@hiatus}{\>}{\>}}
\fi


% .. _font encoding:
%
% Font encodings
% --------------
%
% With 8-bit LaTeX, the `LGR font encoding`_ is used for Greek characters. If
% no Greek-supporting font encoding (TU or LGR) is declared, LGR is
% loaded and set up as default Greek font encoding by this package.
%
% 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, fontspec_ defines the TU font encoding. However
% `fontspec` does not define Greek LICR macros. We therefore explicitely
% load Greek LICR definitions for XeTeX/LuaTeX from `tuenc-greek.def
% <tuenc-greek.def.html>`_ which in turn includes `greek-fontenc.def
% <greek-fontenc.def.html>`_.
%
% .. _LGR font encoding: README.html#lgr
%
% Ensure a Greek-supporting font encoding exists and supports Greek LICR
% macros::

\ifdefined \UnicodeEncodingName % set by LaTeX for Unicode-aware engines
  \input{tuenc-greek.def}
  \textalpha@define@breathings{\UnicodeEncodingName}
\else
  \@ifl@aded{def}{lgrenc}
    {}
    {\input{lgrenc.def}
  }
\fi

% LGR may also be used in a document compiled with Xe/LuaTeX
% (enables use of 8-bit TeX fonts and input via the Latin transliteration).
% Add setup for breathings::

\@ifl@aded{def}{lgrenc}
  {\textalpha@define@breathings{LGR}}
  {}

% The package hyperref_ defines the PU font encoding and adds some
% LICR commands for monotonic Greek (in punenc-greekbasick.def).
% Add support for polytonic Greek, archaic symbols,
% and the ``\greekscript`` and ``\ensuregreek`` TextCommands::

\AtBeginDocument{
  \@ifl@aded{def}{puenc}
    {\@ifl@aded{def}{puenc-greek}
      {}% already loaded (e.g. by babel-greek)
      {\edef\RestoreAtCatcode{\catcode`@=\the\catcode`@\relax}%
       \makeatletter
       \input{puenc-greek.def}
       \RestoreAtCatcode
      }%
     \textalpha@define@breathings{PU}
     \pdfstringdefDisableCommands{\let\TextOrMath\@firstoftwo}
    }
    {}
}

% The TS1 font encoding (available by default since 2022) provides a
% MICRO SIGN under the name ``\textmu`` but we use this name for the
% GREEK SMALL LETTER MU.
% The new macro ``\textmicro`` selects the character from TS1 fonts
% and is not capitalised with ``\MakeUppercase``::

\DeclareTextSymbol{\textmicro}{TS1}{181} % micro sign
\DeclareTextSymbolDefault{\textmicro}{TS1}

% Use it for the MICRO SIGN character::

\ifdefined\DeclareUnicodeCharacter
  \DeclareUnicodeCharacter{00B5}{\textmicro} % micro sign
\fi


% 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 the LGR font encoding is not defined::

\@ifl@aded{def}{lgrenc}{}{ % else return:
  \expandafter\endinput
}


% 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 ``tuenc-greek.def`` (Greek LICR macros for TU, EU1, or 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
      \def\encodingdefault{LGR}}


% 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 `<textalpha-doc.tex>`__:
%
%      ``! You can't use a prefix with `end-group character }'.``
%
% Eventually, all font encodings supporting Greek script (e.g. LGI, PU, TU)
% 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{\textmugreek}{LGR}    % (puenc.def)
\DeclareTextSymbolDefault{\textnu}{LGR}
\DeclareTextSymbolDefault{\textxi}{LGR}
\DeclareTextSymbolDefault{\textomicron}{LGR}
\DeclareTextSymbolDefault{\textpi}{LGR}
\DeclareTextSymbolDefault{\textrho}{LGR}
\DeclareTextSymbolDefault{\textsigma}{LGR}
\DeclareTextSymbolDefault{\textfinalsigma}{LGR}
\DeclareTextSymbolDefault{\textvarsigma}{LGR}   % alias for \textfinalsigma
\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 (no separate Unicode character)
\DeclareTextSymbolDefault{\textkoppa}{LGR}       % �� Greek small letter koppa
\DeclareTextSymbolDefault{\textkoppagreek}{LGR}  % �� (puenc.def)
\DeclareTextSymbolDefault{\textKoppa}{LGR}       % �� Greek letter koppa (numeral 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{\textdexiakeraia}{LGR}      % �� (Dexia keraia)
\DeclareTextSymbolDefault{\textnumeralsigngreek}{LGR} % (puenc.def)
\DeclareTextSymbolDefault{\textaristerikeraia}{LGR}   % �� (Aristeri keraia)
\DeclareTextSymbolDefault{\textnumeralsignlowergreek}{LGR} % (puenc.def)


% variant shape symbols
% '''''''''''''''''''''
%
% Mathematical notation uses variant shapes of some Greek letters as
% additional symbols.  There are separate code points for the symbol variants
% in Unicode but not in the LGR font encoding used for Greek in 8-bit TeX.
% The variations have no syntactic meaning in Greek text. ::

\DeclareTextSymbolDefault{\textbetasymbol}{LGR}    % �� GREEK BETA SYMBOL
\DeclareTextSymbolDefault{\textthetasymbol}{LGR}   % �� $\vartheta$ GREEK THETA SYMBOL
\DeclareTextSymbolDefault{\textphisymbol}{LGR}     % �� $\phi$ GREEK PHI SYMBOL
\DeclareTextSymbolDefault{\textpisymbol}{LGR}      % �� $\varpi$ GREEK PI SYMBOL
\DeclareTextSymbolDefault{\textkappasymbol}{LGR}   % �� GREEK KAPPA SYMBOL
\DeclareTextSymbolDefault{\textrhosymbol}{LGR}     % �� $\varrho$ GREEK RHO SYMBOL
\DeclareTextSymbolDefault{\textThetasymbol}{LGR}   % �� GREEK CAPITAL THETA SYMBOL
\DeclareTextSymbolDefault{\textepsilonsymbol}{LGR} % �� $\epsilon$ GREEK LUNATE EPSILON SYMBOL

% Define compatibility mappings if the normalize-symbols_ option is set::

\iftextalpha@normalizeSymbols
  \DeclareTextCommand{\textbetasymbol}   {LGR}{\textbeta}
  \DeclareTextCommand{\textthetasymbol}  {LGR}{\texttheta}
  \DeclareTextCommand{\textphisymbol}    {LGR}{\textphi}
  \DeclareTextCommand{\textpisymbol}     {LGR}{\textpi}
  \DeclareTextCommand{\textkappasymbol}  {LGR}{\textkappa}
  \DeclareTextCommand{\textrhosymbol}    {LGR}{\textrho}
  \DeclareTextCommand{\textThetasymbol}  {LGR}{\textTheta}
  \DeclareTextCommand{\textepsilonsymbol}{LGR}{\textepsilon}
\fi


% Diacritics
% """"""""""
%
% Greek diacritics via "named" macros::

\DeclareTextAccentDefault{\accdasia}{LGR}
\DeclareTextAccentDefault{\accpsili}{LGR}
\DeclareTextAccentDefault{\acctonos}{LGR}
\DeclareTextAccentDefault{\accoxia}{LGR}
\DeclareTextAccentDefault{\accvaria}{LGR}
\DeclareTextAccentDefault{\accperispomeni}{LGR}
\DeclareTextAccentDefault{\accdialytika}{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}

% Symbol macros for the breathings::

\DeclareTextAccentDefault{\<}{LGR}
\DeclareTextAccentDefault{\>}{LGR}

% Postfix accents::

\DeclareTextSymbolDefault{\ypogegrammeni}{LGR} % subscript mute iota (combining)
\DeclareTextSymbolDefault{\prosgegrammeni}{LGR}  % adscript mute iota (spacing)

% 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 four internal commands::

\DeclareTextAccentDefault{\LGR@accdropped}{LGR}
\DeclareTextAccentDefault{\LGR@accDialytika}{LGR}
\DeclareTextAccentDefault{\LGR@hiatus}{LGR}
\DeclareTextSymbolDefault{\LGR@ypogegrammeni}{LGR}


% semicolon as erotimatiko
% """"""""""""""""""""""""
%
% The text command ``\textsemicolon`` inserts ``\texterotimatiko``
% in LGR font encoding and a "normal" semicolon else.
% In math mode, it inserts the "normal" semicolon also if the text font
% encoding is LGR::

\ProvideTextCommandDefault{\textsemicolon}{;}
\ProvideTextCommand{\textsemicolon}{LGR}{\texterotimatiko}

% The LGR font encoding maps ";" to a middle dot (ano teleia). With the
% keep-semicolon_ option, the semicolon is made an active character and calls
% ``\textsemicolon``::

\iftextalpha@keepSemicolon
  \catcode`;=\active
  \newcommand{;}{\TextOrMath{\textsemicolon}{\char59}}
\fi


% TODO
% ====
%
% * Load ``lgrenc.def`` rsp. ``tuenc-greek.def`` after the common definitions
%   and after ``puenc-greek.def``?
%
%    If an encoding-specific command is defined for more than one encoding,
%    then it will execute fastest in the encoding in which it was defined
%    last since its top-level definition will be set up to execute in that
%    encoding without any overhead.
%
%    ...
%
%    For the same reason default declarations should never come last since
%    they are implemented as a special encoding themselves (with the name "?").
%    Specifying them last would simply mean to make those encoding-specific
%    commands equally inefficient in all encodings.
%
%    -- source2e.pdf, chapter "ltoutenc.dtx",
%       subsection "The order of declarations".
%
%
% Changelog
% =========
%
% .. class:: borderless
%
% ====== =========== ========================================================
% 0.1    2010-06-16  initial version
% 0.2    2012-06-27  support for compound Unicode definitions outside LGR
% 0.3    2013-05-03  new accent macro names with ``lgrxenc.def`` 0.7
% 0.4    2013-05-28  use ``lgrenc.def`` from greek-fontenc.
% 0.5    2013-09-11  move to greek-fontenc_,
% ..                 support XeTeX/LuaTeX, add breve below accents.
% 0.11   2013-11-28  compatibility with Xe/LuaTeX in 8-bit mode.
% 0.12   2014-12-12  fix auxiliary macro names,
%                    define symbol macros for breathing accents.
% 0.13   2015-09-04  Option normalize-symbols_: support for symbol variants.
% ..                 Option keep-semicolon_: use semicolon as erotimatiko
%                    in LGR.
% 0.13.2 2016-02-05  Support for standard Unicode text font encoding "TU"
%                    (new in fontspec v2.5a).
% 0.13.4 2019-07-11  Auxiliary command for subscript iota.
% 0.14   2020-02-28  Update test for Unicode fonts.
%                    Rename ``greek-euenc`` to ``tuenc-greek``.
%                    Don't use ``\LastDeclaredEncoding``.
% 1.0    2020-09-25  Also set ``\encodingdefault`` with ``\greekscript``.
% 2.0    2020-10-30  Load ``tuenc-greek.def`` with Xe/LuaTeX by default.
% ..                 Load ``puenc-greek.def`` if used with `hyperref`_.
% 2.2    2023-02-28  Don't use ``\makeatother`` in ``\AtBeginDocument``.
% 2.2.1  2023-03-08  Documentation update.
% 2.2.2  2023-03-17  Don't map active `;` to ``\textsemicolon`` in math mode.
% 2.4    2023-08-16  Map character 00B5 MICRO SIGN to ``\textmicro``.
% ..                 Fix upcasing of Greek letters with ``\<`` and ``\>``.
% 2.5    2023-09-12  Support the ``\accoxia`` alias.
% ====== =========== ========================================================
%
%
% .. References
%    ----------
% .. _LaTeX Project Public License: http://www.latex-project.org/lppl.txt
% .. _CB fonts: https://ctan.org/pkg/cbgreek-complete
% .. _babel: https://ctan.org/pkg/babel
% .. _e-TeX: http://www.tex.ac.uk/cgi-bin/texfaq2html?label=etex
% .. _fontenc: https://ctan.org/pkg/fontenc
% .. _fontspec: https://ctan.org/pkg/fontspec
% .. _fntguide: https://mirrors.ctan.org/macros/latex/base/fntguide.pdf
% .. _greek-fontenc: https://ctan.org/pkg/greek-fontenc
% .. _greek-inputenc: https://ctan.org/pkg/greek-inputenc
% .. _hyperref: https://ctan.org/pkg/hyperref
% .. _inputenc: https://ctan.org/pkg/inputenc
% .. _polyglossia: https://ctan.org/pkg/polyglossia
% .. _textgreek: https://ctan.org/pkg/textgreek
% .. _xunicode: https://ctan.org/pkg/xunicode
%
% .. _erotimatiko: https://en.wikipedia.org/wiki/Question_mark#Erotimatiko