\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{amssymb} \usepackage[LGR,T1]{fontenc} % Shortcut accent macros \< and \>: % % The Symbol macros for the breathings were % moved to ``textalpha.sty`` to avoid clashes with possible local % definitions of these macros. % % Local definition and setup: \DeclareTextCommand{\<}{LGR}{\accdasia} \DeclareTextCommand{\>}{LGR}{\accpsili} \DeclareTextCompositeCommand{\>}{LGR}{'}{\accpsilioxia} \DeclareTextCompositeCommand{\>}{LGR}{`}{\accpsilivaria} \DeclareTextCompositeCommand{\>}{LGR}{~}{\accpsiliperispomeni} \DeclareTextCompositeCommand{\<}{LGR}{'}{\accdasiaoxia} \DeclareTextCompositeCommand{\<}{LGR}{`}{\accdasiavaria} \DeclareTextCompositeCommand{\<}{LGR}{~}{\accdasiaperispomeni} % With XeTeX/LuaTeX, use Unicode for Latin script: % This is experimental. The general advise is not to mix fontenc and fontspec. % Problems: % * Letter µ missing in Latin Modern % * xunicode makes \nobreakspace font encoding specific -> provide default: \ifdefined \UnicodeEncodingName % set by LaTeX for Unicode-aware engines \usepackage{fontspec} \else \usepackage[utf8]{inputenc} \fi \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{T1}\selectfont} \ProvideTextCommandDefault{\ensuregreek}[1]{\leavevmode{\LGR #1}} % Auxiliary macros: \newcommand*{\missing}{\ensuremath{\oslash}} % varkappa, only defined with amssymb and similar \providecommand*{\varkappa}{\missing} % varbeta and varTheta only defined with unicode-math \providecommand*{\varbeta}{\missing} \newcommand{\cs}[1]{\texttt{\textbackslash#1}} \newcommand{\cssample}[1]{\LGR\csname#1\endcsname{} \Latin \cs{#1}} \begin{document} \title{Test LGR font encoding definitions} \author{Günter Milde} \date{2020/10/30} \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 + - = -- --- [ () ] \Latin \begin{quote} \raggedright \cssample{textless} \\ \cssample{textgreater} \\ \cssample{textbraceleft} \\ \cssample{textbraceright} \\ % \cssample{textbackslash} \\ \cssample{textbar} \\ \cssample{textperthousand} (Per-mille symbol is missing in LGR.) \\ % \textpertenthousand{} \cssample{textvisiblespace} \\ \end{quote} % Quotes:\footnote{% 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 } % \Latin \guillemetleft{}a\guillemetright{} \LGR \guillemetleft{}a\guillemetright{}, % \Latin \textquoteleft{}a\textquoteright{} \LGR \textquoteleft{}a\textquoteright{}, % \Latin \textquotedblleft{}a\textquotedblright{} \LGR \textquotedblleft{}a\textquotedblright{} \Latin (double quotes wrong with Kerkis fonts) Single guillemets and base-quotes (\guilsinglleft{}a\guilsinglright{} \quotedblbase{}a\textquotedblright{} \quotesinglbase{}a\textquoteright{}) are missing in LGR. Ligature break up with \verb|\textcompwordmark|: 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 Letter schwa and Euro symbol: % \textschwa (needs e.g. T3) \cssample{textschwa}, \cssample{texteuro} Some ASCII symbols are replaced by different symbols in LGR encoding other symbols are composed from Latin letters and show Greek letters in LGR. \emph{babel-greek} redefines some affected macros to use a standard font encoding, however this cannot be done in a font encoding definition file. Beware that \texttt{" \# \& ' ; < > ? @} becomes \LGR " \# \& ' ; < > ? @ \Latin The \emph{textcomp} package\footnote{loaded by default in not too old LaTeX} provides pre-composed coyright \textcopyright{}, registered \textregistered{} and trademark \texttrademark{} symbols that work in all font encodings. In LGR they come out as: \cssample{textcopyright}, \cssample{textregistered}, \cssample{texttrademark}. \emph{textcomp} also provides the upright MICRO SIGN and OHM SIGN for SI units: R = 5\,\textmu\textohm In LGR, \cs{textmicro} and \cs{textohm} are aliases to \cs{textmu} and \cs{textOmega} that do not change case: \LGR Αντίσταση = 5\,\textmu\textohm{}, \MakeUppercase{αντίσταση = 5\,\textmicro \textohm{}}, \MakeLowercase{αντίσταση = 5\,\textmicro \textohm{}}. \Latin \subsection{Greek alphabet} Greek letters via Latin transliteration and LICR macros: \begin{quote} \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 s 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{} \textfinalsigma{} \texttau{} \textupsilon{} \textphi{} \textchi{} \textpsi{} \textomega{} \end{quote} The small sigma is set with a different glyph if it ends a word: \begin{quote} \cssample{textsigma} \\ \cssample{textfinalsigma} \end{quote} In the Latin transliteration, the letter `s' stands for \verb|\textautosigma| which automatically chooses the glyph according to the position. \subsection{additional Greek symbols} \begin{quote} \raggedright \cssample{textkoppa} (numeral koppa = 90) \\ % ϟ \cssample{textKoppa} (numeral Koppa = 90)% % Ϟ \footnote{In LGR, there is no separate code point for uppercase koppa.} \\ \cssample{textqoppa} (archaic koppa) \\ % ϙ \cssample{textQoppa} (archaic Koppa) \\ % Ϙ \cssample{textstigma} \\ % ϛ \cssample{textvarstigma} \\ % no separate Unicode character \cssample{textStigma} (Sigma-Tau-Ligature in CB-fonts)% \footnote{the name ``stigma'' originally applied to a medieval sigma-tau ligature, whose shape was confusingly similar to the cursive digamma} \\ % Ϛ \cssample{textsampi} \\ % ϡ \cssample{textSampi} \\ % Ϡ \cssample{textdigamma} \\ % ϝ (\digamma used by amsmath!) \cssample{textDigamma} \\ % Ϝ % numeral signs: http://en.wikipedia.org/wiki/Greek_numerals \cssample{textdexiakeraia} (dexia keraia) \\ % ʹ \cssample{textaristerikeraia} (aristeri keraia)\\ % ͵ \end{quote} Up/Downcasing of the additional Symbols from the Greek And Coptic Unicode block: % see test-tuenc-greek.tex \newcommand{\greekandcoptic}{ \textnumeralsigngreek{} \textnumeralsignlowergreek{} { }\ypogegrammeni{} \texterotimatiko{} \acctonos{ }{} \"'{ }{} \'\textAlpha{} \textanoteleia{} \'\textEpsilon{} \'\textEta{} \'\textIota{} \'\textOmicron{} \'\textUpsilon{} \'\textOmega{} \'"\textiota{} \"\textIota{} \"\textUpsilon{} \'\textalpha{} \'\textepsilon{} \'\texteta{} \'\textiota{} \"'\textupsilon{} \"\textiota{} \"\textupsilon{} \'\textomicron{} \'\textupsilon{} \'\textomega{} \textQoppa{} \textqoppa{} \textStigma{} \textstigma{} \textDigamma{} \textdigamma{} \textKoppa{} \textkoppa{} \textSampi{} \textsampi{} } \LGR \greekandcoptic \Latin MakeUppercase: \\ \LGR \MakeUppercase{\greekandcoptic} \Latin MakeLowercase: \\ \LGR \MakeLowercase{\greekandcoptic} \Latin \subsection{aliases} Aliases are defined in the included file \href{greek-fontenc.def.html}{greek-fontenc.def}. Names matching mathematical variant symbols: \begin{quote} \raggedright \cssample{textvarepsilon} = \cssample{textepsilon} \\ % ε \cssample{textvarphi} = \cssample{textphi} \\ % φ \cssample{textvarsigma} = \cssample{textfinalsigma} \\ % ς \end{quote} Compatibility aliases for hyperref’s puenc.def: \begin{quote} \raggedright \cssample{textmugreek} = \cssample{textmu} \\ \cssample{textkoppagreek} = \cssample{textkoppa} \\ \cssample{textKoppagreek} = \cssample{textKoppa} \\ \cssample{textStigmagreek} = \cssample{textStigma} \\ \cssample{textstigmagreek} = \cssample{textstigma} \\ \cssample{textSampigreek} = \cssample{textSampi} \\ \cssample{textsampigreek} = \cssample{textsampi} \\ \cssample{textdigammagreek} = \cssample{textdigamma} \\ \cssample{textDigammagreek} = \cssample{textDigamma} \\ \cssample{textnumeralsigngreek} = \cssample{textdexiakeraia} \\ \cssample{textnumeralsignlowergreek} = \cssample{textaristerikeraia} \end{quote} Two Unicode code points and names for one character: \begin{quote} \cssample{accoxia} = \cssample{acctonos} \\ \cssample{acckoronis} = \cssample{accpsili} \end{quote} \subsection{symbol variants} Mathematical notation distinguishes variant shapes for pi ($\pi|\varpi$), rho ($\rho|\varrho$), theta ($\theta|\vartheta$), beta ($\beta|\varbeta$), and kappa ($\kappa|\varkappa$) (characters for the last two variant symbols are not included in TeX's standard math fonts). These variations have no syntactic meaning in Greek text and are not given code-points in the LGR encoding. Greek text fonts use the shape variants interchangeably. \section{Diacritics} Capital Greek letters have breathings and accents (except dialytika) to the left (instead of above) and drop them if text is set in UPPERCASE.% \footnote{The word \ensuregreek{Ἢ} (or), is an exception to this rule because of the need to distinguish it from the nominative feminine article \ensuregreek{Η}.} This is implemented for all combinations that are used in Greek texts (i.e. for which pre-composed Unicode character exist), but not for, e.g., \LGR\~W\Latin). Different conventions exist for the treatment of the sub-iota with uppercase letters. The CB-Fonts use a capital Iota ``index'' (\LGR A|, H|, W|\Latin). LaTeX standard accents% \footnote{The ogonek (\emph{little hook}) accent \k{ } (\textbackslash k) is not defined in LGR.} (Latin, Greek, Greek Capitals $\mapsto$ UPPERCASE) \begin{quote} \`{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} } \end{quote} Additional Greek diacritics (Greek, Greek Capitals% \footnote{The dialytika is not used on Initial letters.} % (\LGR \"'I \"`I \~"I) $\mapsto$ UPPERCASE) \begin{quote} \LGR \<{a} \>{e} \<\`{i} \'"i \`"i \~"i \`\>{h} \'<{o} \'>{o} \~\<{u} \~\>{w} a| $\mapsto$ \MakeUppercase{% \<{a} \>{e} \<\`{i} \'"i \`"i \~"i \`\>{h} \'<{o} \'>{o} \~\<{u} \~\>{w} a| } \<{A} \>{E} \<\`{I} \`\>{H} \'<{O} \'>{O} \~\<{U} \~\>{W} A| $\mapsto$ \MakeUppercase{% \<{A} \>{E} \<\`{I} \`\>{H} \'<{O} \'>{O} \~\<{U} \~\>{W} A| } \end{quote} \Latin Input variants and their conversion with MakeUppercase:% \begin{quote} \LGR \~>a \>\~a \~\>{a}, \~\~{h} \~>h \>~h \>\~h \~>h \~>h|, \~\~i \~>i, \~\~u \~>u, \~w, \\~w \~>w, \~a \>\~a \~\>{a}, \~\~{h} \~>h \>~h \>\~h \~>h \~>h|, \~\~i \~>i, \~\~u \~>u, \~w, \\~w \~>w, \~{\textepsilon} \"'{\textiota} \`>\texteta{} \accvaria\accpsili\texteta{} \'<{\textomicron} \~<{\textupsilon} \~>{\textomega} \<{\textAlpha} \>{\textEpsilon} \"{\textIota} \`>\textEta{} \'<{\textOmicron} \~<{\textUpsilon} \~>{\textOmega}, \textalpha| \textalpha\ypogegrammeni{} \\ \MakeUppercase{% \<{\textalpha} \>{\textepsilon} \"'{\textiota} \`\>\texteta{} \accvaria\accpsili\texteta{} \'<{\textomicron} \~<{\textupsilon} \~>{\textomega} \<{\textAlpha} \>{\textEpsilon} \"{\textIota} \`>\textEta{} \'<{\textOmicron} \~<{\textUpsilon} \~>{\textOmega}, \textalpha| \textalpha\ypogegrammeni{} } \<'A \<\'A \'A \>\~A \~\>{A}, \~\~{H} \~>H \>\~H \~>H \~>H|, \~\~I \~>I, \~A \>\~A \~\>{A}, \~\~{H} \~>H \>\~H \~>H \~>H|, \~\~I \~>I, \~W, \\~W \~>W, \~W, \\~W \~>W, \~{\textepsilon} \"'{\textiota} \`>\texteta{} \'<{\textomicron} \~<{\textupsilon} \~>{\textomega} \<{\textAlpha} \>{\textEpsilon} \"{\textIota} \`>\textEta{} \'<{\textOmicron} \~<{\textUpsilon} \~>{\textOmega} \textAlpha| \textAlpha\ypogegrammeni{} \textAlpha\prosgegrammeni{} \\ \MakeLowercase{% \<{\textalpha} \>{\textepsilon} \"'{\textiota} \`\>\texteta{} \'<{\textomicron} \~<{\textupsilon} \~>{\textomega} \<{\textAlpha} \>{\textEpsilon} \"{\textIota} \`>\textEta{} \'<{\textOmicron} \~<{\textUpsilon} \~>{\textOmega} \textAlpha| \textAlpha\ypogegrammeni{} \textAlpha\prosgegrammeni{} } \<'A \<\'A \'u $\mapsto$ \LGR \MakeUppercase{\"~i \<~i \"~u \<~u \`>u}\\ \LGR \"~I \<~I \"~U \<~U \`>U $\mapsto$ \LGR \MakeLowercase{\"~I \<~I \"~U \<~U \`>U} \Latin combined accent with tilde-accent macro:\\ \LGR \"\~i \~"u $\mapsto$ \MakeUppercase{\"\~i \~"u}\\ \LGR \"\~I \~"U $\mapsto$ \MakeLowercase{\"\~I \~"U} \end{quote} \Latin Accents input via the Latin transliteration are not dropped with MakeUppercase, unless Babel is loaded and the current language is Greek (because the required local re-definitions of the \texttt{uccode} are done in \texttt{greek.ldf} from the \emph{babel-greek} package). \begin{quote} \LGR 'a "i `a >a a |: \begin{quote} \begin{tabbing} COL1\quad \= COL2\quad \= COL3\quad \= COL4\quad \\ COL1 \> \> COL3 \\ Viele \> Gr\a"u\ss e \> \LGR \a<\textalpha{} \> \LGR \a>\textomega \end{tabbing} \end{quote} \Latin Combinations with named accents: \LGR \accdasia'a \accdasia`a \accdasia\~a. \Latin The dialytika must be kept in UPPERCASE, e.\,g. \begin{quote} % 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}. \end{quote} This is implemented for all input variants of diacritics with dialytika: \begin{quote} \LGR \"i \"'i \"`i \"\~i \"u \"'u \"`u \"\~u $\mapsto$ \MakeUppercase{\"i \"'i \"`i \"\~i \"u \"'u \"`u \"\~u}, \end{quote} 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}). \begin{quote} % 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}, % from http://multilingualtypesetting.co.uk/blog/greek-typesetting-tips/ % ρωμέικα rwm\'eika $\mapsto$ \MakeUppercase{rwm\'eika} \end{quote} \newpage \Latin Test the auto-hiatus feature for side-effects: \LGR \MakeUppercase{\'a b} (\Latin must keep space after A). Kerning (see the input): \LGR \newcommand\md{\textcompwordmark} \newcommand\MU{\MakeUppercase} \begin{quote} \raggedright \md \MU{ AO AY AI AU RA OA UA DU} [ \\ \<\md \MU{ \\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{ \~