\documentclass{article}
\usepackage{parskip}
\usepackage{booktabs}

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

% UTF8 input encoding for pdfTeX or Xe/LuaTeX in 8-bit compatibility mode:
\ifdefined \XeTeXrevision
  \XeTeXinputencoding "bytes"
\fi
\ifdefined \luatexversion
  \usepackage[utf8]{luainputenc}
\else
  \usepackage[utf8]{inputenc}
\fi

\usepackage[pdfencoding=auto,colorlinks=true]{hyperref}
\usepackage{bookmark}
% hyperrefs PU encoding supports Greek LICR macros
\DeclareTextCommand{\ensuregreek}{PU}[1]{#1}

\usepackage{textalpha}

\begin{document}

\title{The \emph{textalpha} package}
\author{Günter Milde}
\maketitle

With the \emph{textalpha} package, you can easily write a single Greek
symbol (like \textPsi{} or \textmu{}) or a
\textlambda\textomicron\textgamma\textomicron\textvarsigma{} in non-Greek
text as well as ISO-conforming formulas with upright constants (like
\textpi): $A = \mbox{\textpi} r^2$ vs. $A = \pi r^2$. Input is possible via
LICR macros (\verb|\textalpha| \ldots \verb|\textOmega|) or (with
\emph{\href{http://www.ctan.org/pkg/greek-inputenc}{greek-inputenc}} and the
utf8 option or XeTeX/LuaTeX) Unicode literals.

See the source of this document \url{textalpha-doc.tex} for a setup and
usage example and the literate source of the package
\href{textalpha.sty.html}{textalpha.sty} for the implementation.

\section{Greek alphabet}

Greek letters via Latin transcription in LGR font encoding:

\begin{quote}
  \ensuregreek{A B G D E Z H J I K L M N X O P R S T U F Q Y W}\\
  \ensuregreek{a b g d e z h j i k l m n x o p r sv c t u f q y w}
\end{quote}

Greek letters via default macros in other font encoding (here T1):

\begin{quote}
  \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{} \textvarsigma{} \texttau{} \textupsilon{}
  \textphi{} \textchi{} \textpsi{} \textomega{}
\end{quote}

Archaic Greek letters and Greek punctuation

\begin{quote}
  \textDigamma
  \textanoteleia
  \textQoppa
  \textSampi
  \textStigma
  \textnumeralsigngreek
  \texterotimatiko
  \\
  \textdigamma
  \textkoppa
  \textqoppa
  \textsampi
  \textstigma
  \textnumeralsignlowergreek
  \textvarstigma
\end{quote}


Diacritics

\begin{quote}
  Symbol macros:%
  \footnote{Composite diacritics require wrapping in
  \texttt{\textbackslash ensuregreek}.}
  \"{} \'{} \`{} \~{} \<{} \>{} \u{} \={}
  \ensuregreek{\"~{} \"'{} \"`{} \<~{} \<`{} \<'{} \>~{} \>'{} \>`{}}

  Named macros:
  \accdialytika{}
  \acctonos{}
  \accvaria{}
  \accperispomeni{}
  \accdasia{}
  \accpsili{}
  \ypogegrammeni{}
  \prosgegrammeni{}
  %
  \accdialytikaperispomeni{}
  \accdialytikatonos{}
  \accdialytikavaria{}
  \accdasiaperispomeni{}
  \accdasiavaria{}
  \accdasiaoxia{}
  \accpsiliperispomeni{}
  \accpsilioxia{}
  \accpsilivaria{}
  %
  \accinvertedbrevebelow{} % == \textsubarch{}
  \accbrevebelow{}


\end{quote}

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:
\begin{quote}
  \begin{tabbing}
       COL1\quad \= COL2\quad \= COL3\quad \= COL4\quad \\
       COL1 \>          \> COL3 \\
       Viele    \> Gr\a"u\ss e 
       \> \greekscript \a<\textalpha{}
       \> \greekscript \a>\textomega
  \end{tabbing}
\end{quote}



% \pagebreak{}

\section{Greek Unicode characters in non-Greek text}

With the \emph{textalpha} package and input encoding \texttt{utf8}, Greek
Unicode characters can be used in text with any font encoding. See Tables
\ref{tab:greek-and-coptic} and \ref{tab:greek-extended}.

Kerning is preserved if the font encoding is LGR. This holds also for
pre-composed accented characters: \ensuregreek{AΫA}.

\begin{table}[tbp]
  \centering
\begin{tabular}{rrrrrrrrrrrrrrrrr}
\toprule
    & 0 & 1 & 2 & 3 & 4 & 5 & 6 & 7 & 8 & 9 & A & B & C & D & E & F\\
\midrule
370 & * & * & * & * & ʹ & ͵ & * & * &   &   & ͺ & * & * & * & ; &  \\
380 &   &   &   &   & ΄ & ΅ & Ά & · & Έ & Ή & Ί &   & Ό &   & Ύ & Ώ\\
390 & ΐ & Α & Β & Γ & Δ & Ε & Ζ & Η & Θ & Ι & Κ & Λ & Μ & Ν & Ξ & Ο\\
3A0 & Π & Ρ &   & Σ & Τ & Υ & Φ & Χ & Ψ & Ω & Ϊ & Ϋ & ά & έ & ή & ί\\
3B0 & ΰ & α & β & γ & δ & ε & ζ & η & θ & ι & κ & λ & μ & ν & ξ & ο\\
3C0 & π & ρ & ς & σ & τ & υ & φ & χ & ψ & ω & ϊ & ϋ & ό & ύ & ώ &  \\
3D0 & * & * & * & * & * & * & * & * & Ϙ & ϙ & Ϛ & ϛ & Ϝ & ϝ & * & ϟ\\
3E0 & Ϡ & ϡ & * & * & * & * & * & * & * & * & * & * & * & * & * & *\\
3F0 & * & * & * & * & * & * & * & * & * & * & * & * & * & * & * & *\\
\bottomrule
\end{tabular}
\caption{Greek and Coptic Unicode Block, input as literal Unicode
   characters in T1 font encoding (legend: * glyph missing in LGR).} 
\label{tab:greek-and-coptic}
\end{table}


\begin{table}[tbp]
  \centering
\begin{tabular}{rrrrrrrrrrrrrrrrr}
\toprule
     & 0 & 1 & 2 & 3 & 4 & 5 & 6 & 7 & 8 & 9 & A & B & C & D & E & F\\
\midrule
1F00 & ἀ & ἁ & ἂ & ἃ & ἄ & ἅ & ἆ & ἇ & Ἀ & Ἁ & Ἂ & Ἃ & Ἄ & Ἅ & Ἆ & Ἇ\\
1F10 & ἐ & ἑ & ἒ & ἓ & ἔ & ἕ &   &   & Ἐ & Ἑ & Ἒ & Ἓ & Ἔ & Ἕ &   &  \\
1F20 & ἠ & ἡ & ἢ & ἣ & ἤ & ἥ & ἦ & ἧ & Ἠ & Ἡ & Ἢ & Ἣ & Ἤ & Ἥ & Ἦ & Ἧ\\
1F30 & ἰ & ἱ & ἲ & ἳ & ἴ & ἵ & ἶ & ἷ & Ἰ & Ἱ & Ἲ & Ἳ & Ἴ & Ἵ & Ἶ & Ἷ\\
1F40 & ὀ & ὁ & ὂ & ὃ & ὄ & ὅ &   &   & Ὀ & Ὁ & Ὂ & Ὃ & Ὄ & Ὅ &   &  \\
1F50 & ὐ & ὑ & ὒ & ὓ & ὔ & ὕ & ὖ & ὗ &   & Ὑ &   & Ὓ &   & Ὕ &   & Ὗ\\
1F60 & ὠ & ὡ & ὢ & ὣ & ὤ & ὥ & ὦ & ὧ & Ὠ & Ὡ & Ὢ & Ὣ & Ὤ & Ὥ & Ὦ & Ὧ\\
1F70 & ὰ & ά & ὲ & έ & ὴ & ή & ὶ & ί & ὸ & ό & ὺ & ύ & ὼ & ώ &   &  \\
1F80 & ᾀ & ᾁ & ᾂ & ᾃ & ᾄ & ᾅ & ᾆ & ᾇ & ᾈ & ᾉ & ᾊ & ᾋ & ᾌ & ᾍ & ᾎ & ᾏ\\
1F90 & ᾐ & ᾑ & ᾒ & ᾓ & ᾔ & ᾕ & ᾖ & ᾗ & ᾘ & ᾙ & ᾚ & ᾛ & ᾜ & ᾝ & ᾞ & ᾟ\\
1FA0 & ᾠ & ᾡ & ᾢ & ᾣ & ᾤ & ᾥ & ᾦ & ᾧ & ᾨ & ᾩ & ᾪ & ᾫ & ᾬ & ᾭ & ᾮ & ᾯ\\
1FB0 & ᾰ & ᾱ & ᾲ & ᾳ & ᾴ &   & ᾶ & ᾷ & Ᾰ & Ᾱ & Ὰ & Ά & ᾼ & ᾽ & ι & ᾿\\
1FC0 & ῀ & ῁ & ῂ & ῃ & ῄ &   & ῆ & ῇ & Ὲ & Έ & Ὴ & Ή & ῌ & ῍ & ῎ & ῏\\
1FD0 & ῐ & ῑ & ῒ & ΐ &   &   & ῖ & ῗ & Ῐ & Ῑ & Ὶ & Ί &   & ῝ & ῞ & ῟\\
1FE0 & ῠ & ῡ & ῢ & ΰ & ῤ & ῥ & ῦ & ῧ & Ῠ & Ῡ & Ὺ & Ύ & Ῥ & ῭ & ΅ & `\\
1FF0 &   &   & ῲ & ῳ & ῴ &   & ῶ & ῷ & Ὸ & Ό & Ὼ & Ώ & ῼ & ´ & ῾ &  \\
\bottomrule
\end{tabular}
\caption{Greek Extended Unicode Block, input as literal Unicode
characters in T1 font encoding.}
\label{tab:greek-extended}
\end{table}

Combined Diacritics work ᾅ, diacritics (except diaeresis) are dropped with
MakeUppercase (μαΐστρος $\mapsto$ \MakeUppercase{μαΐστρος}).



\section{PDF strings}

With \emph{textalpha} and
\emph{\href{http://www.ctan.org/pkg/greek-inputenc}{greek-inputenc}}, there
are two options to get Greek letters in PDF strings: LICR macros and literal
Unicode input.

\subsection{\textlambda\textomicron\textgamma\textomicron\textvarsigma{},
         λογος and \ensuregreek{logos}}

The subsection title above uses: LICR macros, Unicode input and the LGR
transcription for the Greek word \ensuregreek{logos}. Check the table of
contents in the PDF viewer: LICR macros and Unicode literals work fine, the
Latin transcription remains Latin in the PDF metadata.


\section{Limitations}

Because the internal font encoding switch interferes with other work behind
the scenes, kerning, diacritics and up/down-casing show problems if Greek
letters are used without explicit change of the font encoding. These
problems can be avoided by use of \emph{babel} and the correct language
setting (greek) or an explicit font encoding switch (e.g.
wrapping the Greek text in \verb|\ensuregreek|%
\footnote{The \texttt{\textbackslash ensuregreek} macro ensures the argument
is set in a font encoding supporting Greek. This can be used to fix these
problems without adverse side-effects if the active font encoding is already
LGR.}).

\subsection{Diacritics}

Composition of diacritics (like \verb|\accdasia\acctonos|) fails in other
font encodings. Long names (like \verb|\accdasiaoxia|) work, however they do
not select pre-composed characters. With LGR, pre-composed glyphs are chosen
if available (the difference becomes obvious if you drag-and-drop text from
the PDF version of this document):
%
\ensuregreek{\<'a \accdasia\acctonos a \accdasiaoxia a
\accdasiaoxia\textalpha} (LGR) vs. \accdasiaoxia\textalpha{} (T1).

According to Greek typographical tradition, diacritics (except the
dialytika) are placed before capital letters in titlecase and dropped in
all-caps:
%
\begin{quote}
  \ensuregreek{%
    \<{\textalpha} \>{\textepsilon} \"'{\textiota} \`>\texteta{}
    \'<{\textomicron} \~<{\textupsilon} \~>{\textomega}
    \\
    \<{\textAlpha} \>{\textEpsilon} \"{\textIota} \`>\textEta{}
    \'<{\textOmicron} \~<{\textUpsilon} \~>{\textOmega}
    \\
    \MakeUppercase{%
      \<{\textalpha} \>{\textepsilon} \"'{\textiota} \`\>\texteta{}
      \'<{\textomicron} \~<{\textupsilon} \~>{\textomega}.
    }
  }
\end{quote}
%
This fails if the active font encoding is not LGR:
\ensuregreek{\'\textAlpha} (LGR) vs. \'\textAlpha (T1).
Therefore, named accent macros are used in composite Unicode
character definitions: \ensuregreek{Ά} (LGR) = Ά (T1).

The dialytika marks a \emph{hiatus} (break-up of a diphthong). It must be
present in UPPERCASE even where it is redundant in lowercase (the hiatus can
also be marked by an accent on the first character of a diphthong). The
auto-hiatus feature works in LGR font encoding only:
\acctonos\textalpha\textupsilon{}, \acctonos\textepsilon\textiota{} $\mapsto$
\MakeUppercase{\ensuregreek{
  \acctonos\textalpha\textupsilon{}, \acctonos\textepsilon\textiota{}
}} vs.
\MakeUppercase{
  \acctonos\textalpha\textupsilon{}, \acctonos\textepsilon\textiota{}%
}.

Currently, the second vowel of the diphthong must be given as macro, not
Unicode literal if the auto-hiatus feature should work:
\ensuregreek{ἀ\textupsilon{}πνία} $\mapsto$
\ensuregreek{\MakeUppercase{\ensuregreek{ἀ\textupsilon{}πνία}}} vs.
\ensuregreek{\MakeUppercase{\ensuregreek{ἀυπνία}}}.

\subsection{Kerning}

No kerning occurs between Greek characters in non-Greek text due to the
internal font encoding switch: compare
\ensuregreek{\textAlpha\textUpsilon\textAlpha} (LGR) to
\textAlpha\textUpsilon\textAlpha (T1).

Compiling with LuaTeX provides kerning also over font encoding boundaries.

\end{document}
