diff options
Diffstat (limited to 'language/greek/greek-fontenc/greek-fontenc.def')
-rw-r--r-- | language/greek/greek-fontenc/greek-fontenc.def | 392 |
1 files changed, 392 insertions, 0 deletions
diff --git a/language/greek/greek-fontenc/greek-fontenc.def b/language/greek/greek-fontenc/greek-fontenc.def new file mode 100644 index 0000000000..5b8d801309 --- /dev/null +++ b/language/greek/greek-fontenc/greek-fontenc.def @@ -0,0 +1,392 @@ +% greek-fontenc.def +% ***************** +% +% Common Greek font encoding definitions +% ====================================== +% +% :Copyright: © 2013 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. +% :Identification: +% :: + +\ProvidesFile{greek-fontenc.def} +[2015/08/04 v0.13.4 Common Greek font encoding definitions] + +% :Abstract: This file provides definitions that are shared between +% font encodings providing Greek characters. +% +% Changelog: +% .. class:: borderless +% +% ====== ============ ========================================================= +% 0.9 2013-07-03 code "outsourced" from lgrxenc.def +% 0.9.1 2013-07-17 composite definitions starting with standard accent cmds +% 0.11 2013-11-28 ``\greekscript`` TextCommand +% 0.12 2014-12-12 Remove symbol macros for breathing accents. +% 0.13 2015-08-04 No @uclclist entry for ypogegrammeni/prosgegrammeni. +% 0.13.4 2019-07-10 ``@uclclist`` entry for ``\prosgegrammeni``. +% ====== ============ ========================================================= +% +% Usage +% ----- +% +% This file is input by the font encoding definition files lgrenc.def_. and +% greek-euenc.def_. +% +% Implementation +% -------------- +% +% ensuregreek, greekscript +% ~~~~~~~~~~~~~~~~~~~~~~~~ +% +% Provide "empty" encoding-specific definitions for ``\ensuregreek`` and +% ``\greekscript``. The definitions in this file make the font encoding fit +% for use with the Greek script. (See ``textalpha.sty`` for default +% definitions.) +% +% The ``\ensuregreek`` macro can be used to ensure that its argument is set +% in a font encoding with support for Greek. If the active font encoding +% supports it, kerning between adjacent command calls (e.g. +% ``\ensuregreek{A}\ensuregreek{\Upsilon}``) is preserved. This allows, e.g., +% wrapping of compound Unicode character definitions. :: + +\ProvideTextCommand{\ensuregreek}{\LastDeclaredEncoding}[1]{#1} + +% The ``\greekscript`` declaration switches to a font encoding supporting +% the Greek script, if required. The following definition announces the +% ``\LastDeclaredEncoding`` as Greek-supporting:: + +\ProvideTextCommand{\greekscript}{\LastDeclaredEncoding}{} + + +% Aliases +% ~~~~~~~ +% +% Aliases are defined via `DeclareTextCommand` so that up/downcasing works +% without the need for additional uclclist_ entries. +% +% Compatibility aliases for hyperref_'s puenc.def:: + +\DeclareTextCommand{\textstigmagreek}{\LastDeclaredEncoding}{\textstigma} +\DeclareTextCommand{\textkoppagreek}{\LastDeclaredEncoding}{\textkoppa} +\DeclareTextCommand{\textStigmagreek}{\LastDeclaredEncoding}{\textStigma} +\DeclareTextCommand{\textSampigreek}{\LastDeclaredEncoding}{\textSampi} +\DeclareTextCommand{\textsampigreek}{\LastDeclaredEncoding}{\textsampi} +\DeclareTextCommand{\textdigammagreek}{\LastDeclaredEncoding}{\textdigamma} +\DeclareTextCommand{\textDigammagreek}{\LastDeclaredEncoding}{\textDigamma} + +\DeclareTextCommand{\textnumeralsigngreek}{\LastDeclaredEncoding}{\textdexiakeraia} +\DeclareTextCommand{\textnumeralsignlowergreek}{\LastDeclaredEncoding}{\textaristerikeraia} + +% Names from babel_ and teubner_ (do we want to define them here as alias?) +% +% .. code:: latex +% +% \DeclareTextCommand{\anwtonos}{\LastDeclaredEncoding}{\textdexiakeraia} % ʹ +% \DeclareTextCommand{\katwtonos}{\LastDeclaredEncoding}{\textaristerikeraia} % ͵ +% +% Two Unicode code points and names for one character:: + +\DeclareTextCommand{\accoxia}{\LastDeclaredEncoding}{\acctonos} +\DeclareTextCommand{\acckoronis}{\LastDeclaredEncoding}{\accpsili} + +% Symbol macros for the breathings: +% +% Moved to ``textalpha.sty`` to avoid clashes with local definitions +% of ``\<`` and ``\>`` in documents using LGR or babel-greek. +% (Bugreport David Kastrup). If you want to use the short macros without +% loading `textalpha`, you can define them in the document preamble like +% +% .. code:: latex +% +% \DeclareTextCommand{\<}{LGR}{\accdasia} +% \DeclareTextCommand{\>}{LGR}{\accpsili} +% \DeclareTextCompositeCommand{\>}{LGR}{'}{\accpsilioxia} +% \DeclareTextCompositeCommand{\>}{LGR}{`}{\accpsilivaria} +% \DeclareTextCompositeCommand{\>}{LGR}{~}{\accpsiliperispomeni} +% \DeclareTextCompositeCommand{\<}{LGR}{'}{\accdasiaoxia} +% \DeclareTextCompositeCommand{\<}{LGR}{`}{\accdasiavaria} +% \DeclareTextCompositeCommand{\<}{LGR}{~}{\accdasiaperispomeni} +% +% Or use alternative symbols for the breathings (cf. X compose +% table, LCI encoding)? +% +% .. code:: latex +% +% \DeclareTextCommand{\(}{\LastDeclaredEncoding}{\accdasia} +% \DeclareTextCommand{\)}{\LastDeclaredEncoding}{\accpsili} +% +% Composite diacritics +% ~~~~~~~~~~~~~~~~~~~~ +% +% Composite accents can be input as sequence of simple diacritics (in +% arbitrary order) via named macro, symbol macro and "transcription +% characters", e.g. one of +% +% .. code:: latex +% +% \accdialytica\accvaria\textalpha, +% \"\'\textalpha, +% \"'\textalpha, or +% \'"\textalpha. +% +% Separate definitions for the supported variants of the second input token +% are required as composition is based on the non-expanded input +% +% The composition with simple "transcription characters" must also be defined +% for the symbol macros, otherwise it fails with ``\Makeuppercase``. +% +% For Unicode encodings (where they do not resolve to Greek named macros, +% composite definitions starting with standard macros are requried:: + +\DeclareTextCompositeCommand{\accdialytika}{\LastDeclaredEncoding}{\acctonos}{\accdialytikatonos} +\DeclareTextCompositeCommand{\accdialytika}{\LastDeclaredEncoding}{\'}{\accdialytikatonos} +\DeclareTextCompositeCommand{\accdialytika}{\LastDeclaredEncoding}{'}{\accdialytikatonos} +\DeclareTextCompositeCommand{\"}{\LastDeclaredEncoding}{\'}{\accdialytikatonos} +\DeclareTextCompositeCommand{\"}{\LastDeclaredEncoding}{'}{\accdialytikatonos} +\DeclareTextCompositeCommand{\accdialytika}{\LastDeclaredEncoding}{\accvaria}{\accdialytikavaria} +\DeclareTextCompositeCommand{\accdialytika}{\LastDeclaredEncoding}{\`}{\accdialytikavaria} +\DeclareTextCompositeCommand{\accdialytika}{\LastDeclaredEncoding}{`}{\accdialytikavaria} +\DeclareTextCompositeCommand{\"}{\LastDeclaredEncoding}{\`}{\accdialytikavaria} +\DeclareTextCompositeCommand{\"}{\LastDeclaredEncoding}{`}{\accdialytikavaria} +\DeclareTextCompositeCommand{\accdialytika}{\LastDeclaredEncoding}{\accperispomeni}{\accdialytikaperispomeni} +\DeclareTextCompositeCommand{\accdialytika}{\LastDeclaredEncoding}{\~}{\accdialytikaperispomeni} +\DeclareTextCompositeCommand{\accdialytika}{\LastDeclaredEncoding}{~}{\accdialytikaperispomeni} +\DeclareTextCompositeCommand{\"}{\LastDeclaredEncoding}{\~}{\accdialytikaperispomeni} +\DeclareTextCompositeCommand{\"}{\LastDeclaredEncoding}{~}{\accdialytikaperispomeni} + +\DeclareTextCompositeCommand{\acctonos}{\LastDeclaredEncoding}{\accdialytika}{\accdialytikatonos} +\DeclareTextCompositeCommand{\acctonos}{\LastDeclaredEncoding}{\"}{\accdialytikatonos} +\DeclareTextCompositeCommand{\acctonos}{\LastDeclaredEncoding}{"}{\accdialytikatonos} +\DeclareTextCompositeCommand{\'}{\LastDeclaredEncoding}{\"}{\accdialytikatonos} +\DeclareTextCompositeCommand{\'}{\LastDeclaredEncoding}{"}{\accdialytikatonos} +\DeclareTextCompositeCommand{\acctonos}{\LastDeclaredEncoding}{\accdasia}{\accdasiaoxia} +\DeclareTextCompositeCommand{\acctonos}{\LastDeclaredEncoding}{\<}{\accdasiaoxia} +\DeclareTextCompositeCommand{\acctonos}{\LastDeclaredEncoding}{<}{\accdasiaoxia} +\DeclareTextCompositeCommand{\'}{\LastDeclaredEncoding}{\<}{\accdasiaoxia} +\DeclareTextCompositeCommand{\'}{\LastDeclaredEncoding}{<}{\accdasiaoxia} +\DeclareTextCompositeCommand{\acctonos}{\LastDeclaredEncoding}{\accpsili}{\accpsilioxia} +\DeclareTextCompositeCommand{\acctonos}{\LastDeclaredEncoding}{\>}{\accpsilioxia} +\DeclareTextCompositeCommand{\acctonos}{\LastDeclaredEncoding}{>}{\accpsilioxia} +\DeclareTextCompositeCommand{\'}{\LastDeclaredEncoding}{\>}{\accpsilioxia} +\DeclareTextCompositeCommand{\'}{\LastDeclaredEncoding}{>}{\accpsilioxia} +\DeclareTextCompositeCommand{\'}{\LastDeclaredEncoding}{\'}{\textquoteright} +\DeclareTextCompositeCommand{\'}{\LastDeclaredEncoding}{'}{\textquoteright} + +\DeclareTextCompositeCommand{\accvaria}{\LastDeclaredEncoding}{\accdialytika}{\accdialytikavaria} +\DeclareTextCompositeCommand{\accvaria}{\LastDeclaredEncoding}{\"}{\accdialytikavaria} +\DeclareTextCompositeCommand{\accvaria}{\LastDeclaredEncoding}{"}{\accdialytikavaria} +\DeclareTextCompositeCommand{\`}{\LastDeclaredEncoding}{\"}{\accdialytikavaria} +\DeclareTextCompositeCommand{\`}{\LastDeclaredEncoding}{"}{\accdialytikavaria} +\DeclareTextCompositeCommand{\accvaria}{\LastDeclaredEncoding}{\accdasia}{\accdasiavaria} +\DeclareTextCompositeCommand{\accvaria}{\LastDeclaredEncoding}{\<}{\accdasiavaria} +\DeclareTextCompositeCommand{\accvaria}{\LastDeclaredEncoding}{<}{\accdasiavaria} +\DeclareTextCompositeCommand{\`}{\LastDeclaredEncoding}{\<}{\accdasiavaria} +\DeclareTextCompositeCommand{\`}{\LastDeclaredEncoding}{<}{\accdasiavaria} +\DeclareTextCompositeCommand{\accvaria}{\LastDeclaredEncoding}{\accpsili}{\accpsilivaria} +\DeclareTextCompositeCommand{\accvaria}{\LastDeclaredEncoding}{\>}{\accpsilivaria} +\DeclareTextCompositeCommand{\accvaria}{\LastDeclaredEncoding}{>}{\accpsilivaria} +\DeclareTextCompositeCommand{\`}{\LastDeclaredEncoding}{\>}{\accpsilivaria} +\DeclareTextCompositeCommand{\`}{\LastDeclaredEncoding}{>}{\accpsilivaria} +\DeclareTextCompositeCommand{\`}{\LastDeclaredEncoding}{\`}{\textquoteleft} +\DeclareTextCompositeCommand{\`}{\LastDeclaredEncoding}{`}{\textquoteleft} + +\DeclareTextCompositeCommand{\accperispomeni}{\LastDeclaredEncoding}{\accdialytika}{\accdialytikaperispomeni} +\DeclareTextCompositeCommand{\accperispomeni}{\LastDeclaredEncoding}{\"}{\accdialytikaperispomeni} +\DeclareTextCompositeCommand{\accperispomeni}{\LastDeclaredEncoding}{"}{\accdialytikaperispomeni} +\DeclareTextCompositeCommand{\~}{\LastDeclaredEncoding}{\"}{\accdialytikaperispomeni} +\DeclareTextCompositeCommand{\~}{\LastDeclaredEncoding}{"}{\accdialytikaperispomeni} +\DeclareTextCompositeCommand{\accperispomeni}{\LastDeclaredEncoding}{\accdasia}{\accdasiaperispomeni} +\DeclareTextCompositeCommand{\accperispomeni}{\LastDeclaredEncoding}{\<}{\accdasiaperispomeni} +\DeclareTextCompositeCommand{\accperispomeni}{\LastDeclaredEncoding}{<}{\accdasiaperispomeni} +\DeclareTextCompositeCommand{\~}{\LastDeclaredEncoding}{\<}{\accdasiaperispomeni} +\DeclareTextCompositeCommand{\~}{\LastDeclaredEncoding}{<}{\accdasiaperispomeni} +\DeclareTextCompositeCommand{\accperispomeni}{\LastDeclaredEncoding}{\accpsili}{\accpsiliperispomeni} +\DeclareTextCompositeCommand{\accperispomeni}{\LastDeclaredEncoding}{\>}{\accpsiliperispomeni} +\DeclareTextCompositeCommand{\accperispomeni}{\LastDeclaredEncoding}{>}{\accpsiliperispomeni} +\DeclareTextCompositeCommand{\~}{\LastDeclaredEncoding}{\>}{\accpsiliperispomeni} +\DeclareTextCompositeCommand{\~}{\LastDeclaredEncoding}{>}{\accpsiliperispomeni} + +\DeclareTextCompositeCommand{\accpsili}{\LastDeclaredEncoding}{\acctonos}{\accpsilioxia} +\DeclareTextCompositeCommand{\accpsili}{\LastDeclaredEncoding}{\'}{\accpsilioxia} +\DeclareTextCompositeCommand{\accpsili}{\LastDeclaredEncoding}{'}{\accpsilioxia} +\DeclareTextCompositeCommand{\accpsili}{\LastDeclaredEncoding}{\accvaria}{\accpsilivaria} +\DeclareTextCompositeCommand{\accpsili}{\LastDeclaredEncoding}{\`}{\accpsilivaria} +\DeclareTextCompositeCommand{\accpsili}{\LastDeclaredEncoding}{`}{\accpsilivaria} +\DeclareTextCompositeCommand{\accpsili}{\LastDeclaredEncoding}{\accperispomeni}{\accpsiliperispomeni} +\DeclareTextCompositeCommand{\accpsili}{\LastDeclaredEncoding}{\~}{\accpsiliperispomeni} +\DeclareTextCompositeCommand{\accpsili}{\LastDeclaredEncoding}{~}{\accpsiliperispomeni} + +\DeclareTextCompositeCommand{\accdasia}{\LastDeclaredEncoding}{\acctonos}{\accdasiaoxia} +\DeclareTextCompositeCommand{\accdasia}{\LastDeclaredEncoding}{\'}{\accdasiaoxia} +\DeclareTextCompositeCommand{\accdasia}{\LastDeclaredEncoding}{'}{\accdasiaoxia} +\DeclareTextCompositeCommand{\accdasia}{\LastDeclaredEncoding}{\accvaria}{\accdasiavaria} +\DeclareTextCompositeCommand{\accdasia}{\LastDeclaredEncoding}{\`}{\accdasiavaria} +\DeclareTextCompositeCommand{\accdasia}{\LastDeclaredEncoding}{`}{\accdasiavaria} +\DeclareTextCompositeCommand{\accdasia}{\LastDeclaredEncoding}{\accperispomeni}{\accdasiaperispomeni} +\DeclareTextCompositeCommand{\accdasia}{\LastDeclaredEncoding}{\~}{\accdasiaperispomeni} + +% .. _uclclist: +% +% UPPERCASE +% ~~~~~~~~~ +% +% If UPPERCASE (all-caps) is generated with ``\MakeUppercase``, macro +% substitutions in the ``\@uclclist`` apply. This can be used to drop the +% diacritics (except dialytika and `iota subscript`__). Different conventions +% exist for the `treatment of the iota subscript with uppercase letters`__. In +% the CB Fonts, a small capital adscript iota is used. +% +% __ https://en.wikipedia.org/wiki/Iota_subscript +% __ https://opoudjis.net/unicode/unicode_adscript.html +% +% @uclclist extension +% """"""""""""""""""" +% +% Based on the `babel patch`_ and ``fontenc.sty``. +% +% The definition of an auxiliary, self-restting macro makes this idempotent +% (only the first use of this function will expand the ``@uclclist``). +% The second and third lines are TeX' way of writing ``uclclist += …``:: + +\providecommand*\update@uclc@with@greek{% + \expandafter\def\expandafter\@uclclist\expandafter{% + \@uclclist + \accdasia\LGR@accdropped + \accdasiaoxia\LGR@hiatus + \accdasiavaria\LGR@accdropped + \accdasiaperispomeni\LGR@accdropped + \accpsili\LGR@hiatus + \accpsilioxia\LGR@hiatus + \accpsilivaria\LGR@hiatus + \accpsiliperispomeni\LGR@accdropped + \acctonos\LGR@hiatus + \accvaria\LGR@accdropped + \accdialytikatonos\LGR@accDialytika + \accdialytikavaria\LGR@accDialytika + \accdialytikaperispomeni\LGR@accDialytika + \accperispomeni\LGR@accdropped + \LGR@ypogegrammeni\prosgegrammeni + \textalpha \textAlpha + \textbeta \textBeta + \textgamma \textGamma + \textdelta \textDelta + \textepsilon\textEpsilon + \textzeta \textZeta + \texteta \textEta + \texttheta \textTheta + \textiota \textIota + \textkappa \textKappa + \textlambda \textLambda + \textmu \textMu + \textnu \textNu + \textxi \textXi + \textomicron\textOmicron + \textpi \textPi + \textrho \textRho + \textvarsigma \textSigma + \textsigma \textSigma + \textautosigma \textSigma + \texttau \textTau + \textupsilon\textUpsilon + \textphi \textPhi + \textchi \textChi + \textpsi \textPsi + \textomega \textOmega + \textqoppa \textQoppa + \textvarstigma \textStigma + \textstigma \textStigma + \textsampi \textSampi + \textdigamma \textDigamma + }% + \let\update@uclc@with@greek\relax +} + +% Expand the uclc list using the just defined macro:: + +\update@uclc@with@greek + + +% Substitution macros +% """"""""""""""""""" +% +% Drop diacritics (The argument passing ensures that kerning is preserved) :: + +\DeclareTextCommand{\LGR@accdropped}{\LastDeclaredEncoding}[1]{#1} + + +% Keep dialytika: Define a dummy alias so that downcasing with +% ``\MakeLowercase`` does not convert a simple dialytika to a composite +% accent:: + +\DeclareTextCommand{\LGR@accDialytika}{\LastDeclaredEncoding}{\accdialytika} +\DeclareTextCompositeCommand{\accdialytika}{\LastDeclaredEncoding}{\LGR@hiatus}{\accdialytika} + +% Convert ``\prosgegrammeni`` (adscript iota) to ``\ypogegrammeni`` +% (subscript iota) but not vice versa:: + +\DeclareTextCommand{\LGR@ypogegrammeni}{\LastDeclaredEncoding}{\ypogegrammeni} + + +% Mark hiatus +% """"""""""" +% +% Tonos and dasia mark a hiatus if placed on the +% first vowel of a diphthong (ΑΙ, ΑΥ, ΕΙ). A dialytika must be placed on the +% second vowel if they are dropped (άυλος → ΑΫΛΟΣ, μάινα → ΜΑΪΝΑ, κέικ → ΚΕΪΚ, +% ἀυπνία → ΑΫΠΝΙΑ):: + +\DeclareTextCommand{\LGR@hiatus}{\LastDeclaredEncoding}[1]{#1} +\DeclareTextCompositeCommand{\LGR@hiatus}{\LastDeclaredEncoding}{>}{\LGR@hiatus} +\DeclareTextCompositeCommand{\LGR@hiatus}{\LastDeclaredEncoding}{<}{\LGR@accdropped} +\DeclareTextCompositeCommand{\LGR@hiatus}{\LastDeclaredEncoding}{\textAlpha}{\LGR@A@hiatus} +\DeclareTextCompositeCommand{\LGR@hiatus}{\LastDeclaredEncoding}{\textEpsilon}{\LGR@E@hiatus} + +% The font encoding file must define the ``\LGR@hiatus`` TextCommand. See +% ``lgrenc.def`` for an example. +% +% The following macro can be used to test if the next character is an Alpha or +% Epsilon. As ``\@ifnextchar`` gobbles spaces the lookahead macro definition +% from ``amsgen.sty`` is used: +% +% This macro is a new version of LaTeX’s ``\@ifnextchar``, macro +% that does not skip over spaces. +% +% :: + +\providecommand*{\LGR@ifnextchar}[3]{% + \let\reserved@d= #1% + \def\reserved@a{#2}\def\reserved@b{#3}% + \futurelet\@let@token\LGR@ifnch +} +\providecommand*{\LGR@ifnch}{% + \ifx\@let@token\reserved@d \let\reserved@b\reserved@a \fi + \reserved@b +} + + + +% .. References +% ---------- +% +% .. _alphabeta: alphabeta.sty.html +% .. _athnum: http://www.ctan.org/pkg/athnum +% .. _Babel: http://www.ctan.org/pkg/babel +% .. _babel patch: http://www.eutypon.gr/eutypon/pdf/e2008-20/e20-a03.pdf +% .. _fntguide: http://mirror.ctan.org/macros/latex/doc/fntguide.pdf +% .. _fontenc: http://www.ctan.org/pkg/fontenc +% .. _hyperref: http://www.ctan.org/pkg/hyperref +% .. _ibycus: http://www.ctan.org/pkg/ibycus-babel +% .. _LaTeX Project Public License: http://www.latex-project.org/lppl.txt +% .. _lgrx: http://www.ctan.org/pkg/lgrx +% .. _ltxcmds: http://www.ctan.org/pkg/ltxcmds +% .. _teubner: http://www.ctan.org/pkg/teubner +% .. _teubner-doc: +% http://mirror.ctan.org/macros/latex/contrib/teubner/teubner-doc.pdf +% .. _textalpha: textalpha.sty.html +% .. _ucs: http://www.ctan.org/pkg/unicode +% +% .. _lgrenc.def: lgrenc.def.html +% .. _greek-euenc.def: greek-euenc.def.html |