\documentclass{article}

% Test with various LGR-encoded fonts:
\usepackage%
{lmodern}  % uses CB Fonts for Greek
% {gfsartemisia}
% {gfsbaskerville}
% [default]{gfsbodoni}
% [default]{gfscomplutum}
% {gfsdidot}
% [default]{gfsneohellenic}
% {lmodern} \usepackage{gfsporson} \renewcommand*\rmdefault{porson}
% [default]{gfssolomos}
% {kerkis} % lacks some chars (\Stigma, \Sampi, double quotes)
% {teubner}
% \renewcommand{\ttdefault}{txtt}

\usepackage{parskip}
\usepackage{textcomp}
\usepackage[LGR,T1]{fontenc}

% With XeTeX/LuaTeX, use Unicode for Latin script:
\ifdefined\luatexversion \usepackage{fontspec}\else
  \ifdefined\XeTeXrevision \usepackage{fontspec}\else
    \usepackage[utf8]{inputenc}
  \fi
\fi
% This is experimental. The general advise is not to mix fontenc and fontspec.
% One problem is that xunicode makes \nobreakspace font encoding specific
% We provide a default:
\DeclareTextCommandDefault{\nobreakspace}{\leavevmode\nobreak\ }

% PDF hyperlinks:
\usepackage[pdfencoding=auto]{hyperref}
\usepackage{bookmark}
\hypersetup{colorlinks=true,linkcolor=blue,urlcolor=blue,pdfencoding=auto}

% font encoding switch declarations:
\newcommand{\LGR}{\fontencoding{LGR}\selectfont}
\newcommand{\Latin}{\fontencoding{\encodingdefault}\selectfont}


\begin{document}

\title{Test LGR font encoding definitions}
\author{Günter Milde}
% \date{}
\maketitle

The file lgrenc.def provides a comprehensive set of macros to typeset Greek
with LGR encoded fonts. It works for both, monotonic and polytonic Greek,
independent of the \emph{Babel} package.

The example from \texttt{usage.tex} in \emph{babel-greek} input
using the LICR macros:

\begin{quote}
  \LGR 
  \textTau\'\textiota{}
  \textphi\'\texteta\textiota\textfinalsigma\texterotimatiko{}
  \<\textIota\textdelta\`\textomega\textnu{}
  \>\textepsilon\textnu\texttheta\'\textepsilon\textdelta\textepsilon{}
  \textpi\textalpha\~\textiota\textdelta\'\'
  \>\textepsilon\textlambda\textepsilon\textupsilon\texttheta\'\textepsilon\textrho\textalpha\textnu\\
  \texttau\`\textalpha\textfinalsigma{}
  \textpi\textlambda\texteta\textautosigma\'\textiota\textomicron\textnu{}
  \textNu\'\textupsilon\textmu\textphi\textalpha\textfinalsigma{}
  \textautosigma\texttau\textepsilon\textphi\textalpha\textnu\textomicron\~\textupsilon\textautosigma\textalpha\textnu{},
  \textSigma\'\textomega\textautosigma\texttau\textrho\textalpha\texttau\textepsilon{},\\
  \>\textepsilon\textrho\~\textomega\textnu{}
  \'\textalpha\textpi\~\texteta\textlambda\texttheta\textepsilon\textfinalsigma{}
  \textepsilon\>\textupsilon\texttheta\'\textupsilon\textfinalsigma\texterotimatiko{}

\end{quote}

\section{Symbols}

See the source file \href{lgrenc-test.tex}{lgrenc-test.tex} for the macros
used to access the symbols.

\subsection{Generic text symbols}

Latin:
+ - = < > -- --- \textbraceleft{} [ () ] \textbraceright{}
%
\textbackslash{}
\textbar{}
\textperthousand{}
\textpertenthousand{}
\textvisiblespace{}

LGR:
\LGR
+ - = \textless{} \textgreater{} -- ---
\textbraceleft{} [ () ] \textbraceright{}
%
\textbackslash{} \textbar{}
\textperthousand{}
% \textpertenthousand{}
\textvisiblespace{}
\Latin (Per-mille symbol is missing in LGR.)

Quotes:
%
\Latin \guillemotleft{}a\guillemotright{}
\LGR \guillemotleft{}a\guillemotright{},
%
\Latin \textquoteleft{}a\textquoteright{}
\LGR \textquoteleft{}a\textquoteright{},
%
\Latin \textquotedblleft{}a\textquotedblright{}
\LGR \textquotedblleft{}a\textquotedblright{}
\Latin (double quotes wrong with Kerkis fonts),

\begin{quote}
  Single quotes need special attention to prevent conversion to accents.
  Test the input conventions:
  \LGR \textquoteleft{}a\textquoteright{} ``a'' \``a\'' \`\`a\'\'
  \Latin but not \LGR `a' 'e' "i"\Latin

  Single guillemots and base-quotes
  (\guilsinglleft{}a\guilsinglright{}
   \quotedblbase{}a\textquotedblright{}
   \quotesinglbase{}a\textquoteright{})
  are missing in LGR.
\end{quote}

Ligature break up: AY fi \LGR AU "i $\mapsto$
\Latin A\textcompwordmark{}Y f\textcompwordmark i
\LGR   A\textcompwordmark{}U "\textcompwordmark i


\Latin Spacing accent chars:
%
\Latin \textasciicircum a
\LGR \textasciicircum a \textasciicircum i % using textsym glyph
%
\Latin \textasciitilde a
\LGR \textasciitilde a \textasciitilde i
%
\Latin \textasciibreve a
\LGR \textasciibreve a \textasciibreve i
%
\Latin \textasciimacron a
\LGR \textasciimacron a \textasciimacron i
%
\Latin \textasciidieresis a
\LGR \textasciidieresis a \textasciidieresis i
%
\Latin \textasciiacute a
\LGR \textasciiacute a \textasciiacute i
%
\Latin \textasciigrave a
\LGR \textasciigrave a \textasciigrave i

\Latin Symbols for SI-units:
\Latin 5\,\textmu{}m, 5\,k\textohm{};
\LGR   5\,\textmu{}{\Latin m}, 5\,{\Latin k}\textohm{}

\Latin Letter schwa and Euro symbol: % \textschwa (needs e.g. T3)
\LGR \textschwa{}, \texteuro{}
\Latin

Some symbol definitions expect a Latin font.\emph{ babel-greek} redefines
them with \verb|\latintext|, however this macro is not guaranteed to be
defined, so it should not be used in a font encoding definition file. The
textcomp.sty package provides coyright, registered, and trademark symbols
for use with any font encodings. (Like any other Latin character, the
``sharp s'' (\ss) is not save to use when LGR is the active font encoding.)

Latin:
\textcopyright{}
\textregistered{}
\texttrademark{}
\SS{} (uppercase of \ss).

LGR (with textcomp):
\LGR
\textcopyright{}
\textregistered{}
\texttrademark{}
\SS{} (\Latin uppercase of \LGR \ss).
\Latin

\subsection{Greek alphabet}

Greek letters via Latin transcription and LICR macros:

\LGR
\MakeUppercase{a b g d e z h j i k l m n x o p r s t u f q y w}

a b g d e z h j i k l m n x o p r sv t u f q y w

\textAlpha{} \textBeta{} \textGamma{} \textDelta{} \textEpsilon{}
\textZeta{} \textEta{} \textTheta{} \textIota{} \textKappa{}
\textLambda{} \textMu{} \textNu{} \textXi{} \textOmicron{} \textPi{}
\textRho{} \textSigma{} \textTau{} \textUpsilon{} \textPhi{}
\textChi{} \textPsi{} \textOmega{}

\textalpha{} \textbeta{} \textgamma{} \textdelta{} \textepsilon{}
\textzeta{} \texteta{} \texttheta{} \textiota{} \textkappa{}
\textlambda{} \textmu{} \textnu{} \textxi{} \textomicron{} \textpi{}
\textrho{} \textsigma{} \texttau{} \textupsilon{}
\textphi{} \textchi{} \textpsi{} \textomega{}

\Latin The small sigma is set with a different
glyph if it ends a word:

\LGR \textsigma{}      \Latin textsigma        \\
\LGR \textfinalsigma{} \Latin textfinalsigma or textvarsigma

In the Latin transcription, the letter `s' stands for \verb|\textautosigma|
which automatically chooses the glyph according to the position.

\subsection{Additional Greek symbols}

\LGR \textkoppa{}     \Latin textkoppa                 \\ % ϟ
\LGR \textqoppa{}     \Latin textqoppa (archaic koppa) \\ % ϙ
\LGR \textQoppa{}     \Latin textQoppa (archaic Koppa) \\ % Ϙ
\LGR \textstigma{}    \Latin textstigma                \\ % ϛ
\LGR \textvarstigma{} \Latin textvarstigma \\ % no separate Unicode character
\LGR \textStigma{}    \Latin textStigma (Sigma-Tau-Ligature in CB-fonts)%
\footnote{the name ``stigma'' originally applied to a medieval sigma-tau
          ligature, whose shape was confusably similar to the cursive
          digamma}                      \\ % Ϛ
\LGR \textsampi{}     \Latin textsampi  \\ % ϡ
\LGR \textSampi{}     \Latin textSampi  \\ % Ϡ
\LGR \textdigamma{} \Latin textdigamma  \\ % ϝ (\digamma used by amsmath!)
\LGR \textDigamma{} \Latin textDigamma  \\ % Ϝ
% numeral signs: http://en.wikipedia.org/wiki/Greek_numerals
\LGR \textnumeralsigngreek{}  \Latin textnumeralsigngreek (Dexia keraia) \\ % ʹ
\LGR \textnumeralsignlowergreek{} \Latin textnumeralsignlowergreek
                                         (Aristeri keraia)\\ % ͵

\Latin Mathematical notation sometimes uses variant shapes for pi ($\varpi$),
kappa (\emph{no TeX symbol available}), rho ($\varrho$), and theta
($\vartheta$). These variations have no syntactic meaning in Greek text and
are not given code-points in the LGR encoding. Some Greek text fonts use
variant shapes in place of the ``regular'' ones.

\section{Diacritics}

Capital Greek letters have Greek diacritics (except the dialytika) to the
left (instead of above) and drop them in UPPERCASE. This is implemented for
all combinations for which a pre-composed Unicode character exists (but not,
e.g., \LGR \~A\Latin).

% When a word is written entirely in capital letters, diacritics are
% never used; the word Ἢ (or), is an exception to this rule because of
% the need to distinguish it from the nominative feminine article Η.

Different conventions exist for the treatment of the sub-iota with uppercase
letters. The CB-Fonts use a capital Iota ``index''.

LaTeX standard accents (Latin, Greek, Greek Capitals)
$\mapsto$ UPPERCASE

\`{a} \'{a} \~{a} \"{a} \^{a} \={a} \H{a} \.{a} \r{a} \u{a} \v{a}
\b{a} \c{a} \d{a} \k{a}
$\mapsto$ \MakeUppercase{%
\`{a} \'{a} \~{a} \"{a} \^{a} \={a} \H{a} \.{a} \r{a} \u{a} \v{a}
\b{a} \c{a} \d{a} \k{a}
}

\LGR
\`{a} \'{a} \~{a} \"{a} \^{a} \={a} \H{a} \.{a} \r{a} \u{a} \v{a}
\b{a} \c{a} \d{a}
$\mapsto$ \MakeUppercase{%
\`{a} \'{a} \~{a} \"{a} \^{a} \={a} \H{a} \.{a} \r{a} \u{a} \v{a}
\b{a} \c{a} \d{a}
}

\`{A} \'{A} \~{A} \"{A} \^{A} \={A} \H{A} \.{A} \r{A} \u{A} \v{A}
\b{A} \c{A} \d{A}
$\mapsto$ \MakeUppercase{%
\`{A} \'{A} \~{A} \"{A} \^{A} \={A} \H{A} \.{A} \r{A} \u{A} \v{A}
\b{A} \c{A} \d{A}
}

\Latin
The comma-below (\verb|\k|) is not defined in LGR.

Additional Greek diacritics

\LGR
\<{a} \>{e} \<\`{i} \'"i \`"i \~"i \`\>{h} \'<{o}  \'>{o} \~\<{u} \~\>{w}
$\mapsto$ \MakeUppercase{%
\<{a} \>{e} \<\`{i} \'"i \`"i \~"i \`\>{h} \'<{o}  \'>{o} \~\<{u} \~\>{w}
}

% The dialytika is not used on Initial letters ("'I \"`I \~"I)
\<{A} \>{E} \<\`{I} \'"I \"`I \~"I \`\>{H} \'<{O}  \'>{O} \~\<{U} \~\>{W}
$\mapsto$ \MakeUppercase{%
\<{A} \>{E} \<\`{I} \'"I \"`I \~"I \`\>{H} \'<{O}  \'>{O} \~\<{U} \~\>{W}
}

\Latin Input variants and their conversion with MakeUppercase:%

\begin{quote}
\LGR

\~>a \>\~a \~\>{a}, \~<a \<\~a \<~a \~\<a \~<a,
\>\~{h} \~>h \>~h \>\~h \~>h \~>h|, \~<h \<\~h,
\>\~i \~>i, \~<i \<\~i, \~"i \"\~i \"~i,\\
\>\~u \~>u, \~<u \<\~u, \~"u \"\~u,
\>w, \<w, \>\~w \~>w, \~<w \<\~w.

\MakeUppercase{
\~>a \>\~a \~\>{a}, \~<a \<\~a \<~a \~\<a \~<a,
\>\~{h} \~>h \>~h \>\~h \~>h \~>h|, \~<h \<\~h,
\>\~i \~>i, \~<i \<\~i, \~"i \"\~i \"~i,\\
\>\~u \~>u, \~<u \<\~u, \~"u \"\~u,
\>w, \<w, \>\~w \~>w, \~<w \<\~w.
}

\<{\textalpha} \>{\textepsilon} \"'{\textiota} \`>\texteta{}
\'<{\textomicron} \~<{\textupsilon} \~>{\textomega}
\<{\textAlpha} \>{\textEpsilon} \"{\textIota} \`>\textEta{}
\'<{\textOmicron} \~<{\textUpsilon} \~>{\textOmega}
\\
\MakeUppercase{%
  \<{\textalpha} \>{\textepsilon} \"'{\textiota} \`\>\texteta{}
  \'<{\textomicron} \~<{\textupsilon} \~>{\textomega}.
  \<{\textAlpha} \>{\textEpsilon} \"{\textIota} \`>\textEta{}
  \'<{\textOmicron} \~<{\textUpsilon} \~>{\textOmega}
}

 \<'A \<\'A \'<A \'\<A $\mapsto$ \MakeUppercase{\<'A \<\'A \'<A \'\<A}.

\end{quote}

\Latin The tilde character can be used in combined accents.
However, in documents not defining the Babel language \emph{greek} or
\emph{polutonikogreek}, it will produce a
no-break space if converted with \verb|\MakeUppercase|:

\LGR \"~i \<~i \"~u \<~u \`>u $\mapsto$
\LGR \MakeUppercase{\"~i \<~i \"~u \<~u \`>u}
\\
\Latin Use the tilde-accent macro:
\LGR "\~i \~"u $\mapsto$ \MakeUppercase{\"\~i \~"u}.

\Latin Accent macros can start with \verb|\a| instead of \verb|\| when the
short form is redefined, e.\,g. inside a \emph{tabbing} environment.
This also works for the new-defined Dasia and Psili shortcuts:
\LGR \a<\textalpha{} \a>\textomega.

\Latin Combinations with named accents:
\LGR \accdasia'a \accdasia`a \accdasia\~a.

\Latin The dialytika must be kept in UPPERCASE, e.\,g.
% from http://diacritics.typo.cz/index.php?id=70 μαΐστρος -> ΜΑΪΣΤΡΟΣ.
\LGR ma\"'istros $\mapsto$ \MakeUppercase{ma\"'istros}
\Latin or % from teubner  εὐζωΐα -> ΕΥΖΩΪΑ.
\LGR e\>uzw\'"ia $\mapsto$ \MakeUppercase{e\>uzw\'"ia}.

\Latin This is implemented for all input variants of diacritics with
dialytika:

\LGR \"i \"'i \"`i \"\~i \"u \"'u \"`u \"\~u $\mapsto$
\MakeUppercase{\"i \"'i \"`i \"\~i \"u \"'u \"`u \"\~u},

\Latin
Tonos and dasia mark a \emph{hiatus} (break-up of a diphthong) if
placed on the first vowel of a diphthong ({\LGR \'ai, \'au, \'ei}). A
dialytika must be placed on the second vowel if they are dropped: \LGR
(\MakeUppercase{\'ai, \'au, \'ei}).

% from teubner: άυλος/ΑΫΛΟΣ
\'aulos $\mapsto$ \MakeUppercase{\'aulos},
\>'aulos $\mapsto$ \MakeUppercase{\>'aulos},
% from http://diacritics.typo.cz/index.php?id=69  μάινα -> ΜΑΪΝΑ
m\'aina $\mapsto$ \MakeUppercase{m\'aina},
% from  http://de.wikipedia.org/wiki/Neugriechische_Orthographie#Das_Trema
% κέικ, ἀυπνία/αϋπνία
k\'eik, $\mapsto$ \MakeUppercase{k\'eik}
\>aupn\'ia $\mapsto$ \MakeUppercase{\>aupn\'ia}

\Latin Test the auto-hiatus feature for side-effects:

\LGR \MakeUppercase{\'a b}: \Latin keep space after A.

\LGR
\newcommand\md{\textcompwordmark}
\newcommand\MU{\MakeUppercase}

  \md \MU{ AO    AY    AI    AU    RA    OA    UA    DU}    [ \\
\<\md \MU{ \<AO  \<AY  \<AI  \<AU  \<RA  \<OA  U\<A  D\<U}  [ \\
\>\md \MU{ \>AO  \>AY  \>AI  \>AU  \>RA  \>OA  U\>A  D\>U}  [ \\
\>'\md\MU{ \>'AO \>'AY \>'AI \>'AU \>'RA \>'OA U\>'A D\>'U} [ \\
\'\md \MU{ \'AO  \'AY  \'AI  \'AU  \'RA  \'OA  U\'A  D\'U}  [ \\
\>`\md\MU{ \>`AO \>`AY \>`AI \>`AU \>`RA \>`OA U\>`A D\>`U} [ \\
\<'\md\MU{ \<'AO \<'AY \<'AI \<'AU \<'RA \<'OA U\<'A D\<'U} [ \\
\`\md \MU{ \`AO  \`AY  \`AI  \`AU  \`RA  \`OA  U\`A  D\`U}  [ \\
\<`\md\MU{ \<`AO \<`AY \<`AI \<`AU \<`RA \<`OA U\<`A D\<`U} [ \\
\~\md \MU{ \~AO  \~AY  \~AI  \~AU  \~RA  \~OA  U\~A  D\~U}  [ \\
\~>\md\MU{ \~>AO \~>AY \~>AI \~>AU \~>RA \~>OA U\~>A D\~>U} [ \\
\~<\md\MU{ \~<AO \~<AY \~<AI \~<AU \~<RA \~<OA U\~<A D\~<U} [ \\
\~<\md\MU{ \~<ao \~<ay \~<ai \~<au \~<ra \~<oa u\~<a d\~<u} [ \\
\"\md \MU{ AO    AY    A\"I  A\"U  RA    OA    \"UA  DU}    [ \\
\"\md \MU{ \"AO  \"AY  \"AI  \"AU  \"RA  \"OA  U\"A  D\"U}  [ \\
\"~\md\MU{ \~"AO \~"AY \~"AI \~"AU \~"RA \~"OA U\~"A D\~"U} [ \\


\Latin
Rows 3 \ldots 7: Look-ahead (to check for a hiatus) breaks kerning before A
with Tonos or Psili.

% \'AA \'AB \'AG \'AD \'AE \'AZ \'AH \'AJ \'AI \'AK \'AL \'AM \'AN \'AX
% \'AO \'AP \'AR \'AS \'AC \'AT \'AU \'AF \'AQ \'AY \'AW

Rows 15 and 16: Like in any font encoding, there is no kerning for
non-defined accent-letter-combinations (dialytica on \LGR A O D\Latin).

\Latin

Downcasing should keep diacritics (of course, it cannot regenerate
``manually" dropped ones):
\LGR 'A \"I \"U \~<A $\mapsto$ \MakeLowercase{\'A \"I \"U \~<A}

\end{document}
