diff options
Diffstat (limited to 'Master/texmf-dist/tex/latex/greek-fontenc/textalpha.sty')
-rw-r--r-- | Master/texmf-dist/tex/latex/greek-fontenc/textalpha.sty | 302 |
1 files changed, 216 insertions, 86 deletions
diff --git a/Master/texmf-dist/tex/latex/greek-fontenc/textalpha.sty b/Master/texmf-dist/tex/latex/greek-fontenc/textalpha.sty index 61932d7d5fc..2f122f25d9e 100644 --- a/Master/texmf-dist/tex/latex/greek-fontenc/textalpha.sty +++ b/Master/texmf-dist/tex/latex/greek-fontenc/textalpha.sty @@ -2,31 +2,31 @@ % +++++++++++++ % 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} -[2014/12/12 v0.12 macros for Greek letters in text] +[2015/09/04 v0.13 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 @@ -37,76 +37,160 @@ % 2013-11-28 0.11 compatibility with Xe/LuaTeX in 8-bit mode. % 2014-12-12 0.12 fix auxiliary macro names, % define symbol macros for breathing accents. +% 2015-09-04 0.13 Option normalize-symbols_: support for symbol variants. +% .. Option keep-semicolon_: use semicolon as erotimatiko +% in LGR. % ========== ===== ========================================================= -% +% +% .. contents:: +% % 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``). -% +% 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 the Unicode font encodings EU1 (XeTeX) or EU2 (LuaTeX) are declared, -% before loading this package (e.g. vie ``fontspec``) the package provides +% before loading this package (e.g. via ``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_). -% +% +% * 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. 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 % ===== -% +% +% Ensure support for Greek characters in text mode with +% % .. code:: latex -% -% \usepackage{textalpha} -% +% +% \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_. +% +% +% % For detailled examples see `<textalpha-doc.tex>`_ and `<textalpha-doc.pdf>`_ % (8-bit TeX and XeTeX/LuaTeX in 8-bit compatibility mode) as well as % `<greek-euenc-doc.tex>`_ and `<greek-euenc-doc.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 greek-euenc-doc.tex_). +% +% % Implementation % ============== -% -% Requirements -% ------------ -% +% +% Options +% ------- +% +% 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} + +% 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 + +% .. _font encoding: +% +% Font encodings +% -------------- +% +% 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. +% % 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 @@ -115,30 +199,19 @@ % 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 -% """""""""""""" -% +% +% .. _LGR font encoding: README.html#lgr +% % 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``. :: +% +% * 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.) +% * Re-set ``\LastDeclaredEncoding`` (used in some included font-encoding files). +% * If none of EU1, EU2, or LGR is declared, load ``lgrenc.def``. +% +% :: \@ifl@aded{def}{eu1enc}{ \renewcommand{\LastDeclaredEncoding}{EU1} @@ -150,16 +223,13 @@ }{% else \@ifl@aded{def}{lgrenc}{ % LGR already declared and set up + \renewcommand{\LastDeclaredEncoding}{LGR} }{ \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:: @@ -169,13 +239,18 @@ \ProvideTextCommand{\ensuregreek}{PU}[1]{#1}} {} +% .. [#EU] The two different (pseudo) font encodings allow different font +% setups for XeTeX vs. LuaTeX using differently named ``*.fd`` files (see +% euenc_ for details). +% +% % Symbol macros for breathings -% """""""""""""""""""""""""""" -% +% ---------------------------- +% % In the Latin transcription provided by LGR, breathing accents (Dasia and % Psili) are input as < and >. We provide the corresponding NFSS macro accents % (moved here from `greek-fontenc.def`_). -% +% % As Xe/LuaTeX may use LGR in combination with EU1 or EU2, we define the % macros for both, LGR and Unicode font encodings (if they are defined):: @@ -205,7 +280,7 @@ % 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:: @@ -215,15 +290,16 @@ % 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 ``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_]):: @@ -236,26 +312,26 @@ \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, 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} @@ -312,10 +388,10 @@ \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 @@ -350,9 +426,40 @@ \DeclareTextSymbolDefault{\textnumeralsigngreek}{LGR} % (puenc.def) \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} @@ -391,13 +498,34 @@ % Auxiliary macros % """""""""""""""" -% +% % ``\MakeUppercase`` requires three internal commands:: \DeclareTextAccentDefault{\LGR@accdropped}{LGR} \DeclareTextAccentDefault{\LGR@accDialytika}{LGR} \DeclareTextAccentDefault{\LGR@hiatus}{LGR} + +% semicolon as erotimatiko +% """""""""""""""""""""""" +% +% The text command ``\textsemicolon`` inserts ``\texterotimatiko`` +% in LGR font encoding and a "normal" semicolon else:: + +\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{;}{\textsemicolon} +\fi + + + % .. References % ---------- % .. _LaTeX Project Public License: http://www.latex-project.org/lppl.txt @@ -407,7 +535,7 @@ % .. _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 +% .. _fntguide: http://mirror.ctan.org/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 @@ -415,3 +543,5 @@ % .. _polyglossia: http://www.ctan.org/pkg/polyglossia % .. _textgreek: http://www.ctan.org/pkg/textgreek % .. _xunicode: http://www.ctan.org/pkg/xunicode +% +% .. _erotimatiko: https://en.wikipedia.org/wiki/Question_mark#Erotimatiko |