\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}} \IfFormatAtLeastTF{2022/06/01} {\newcommand{\IsNewMakeUppercase}{}} {} \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} \tableofcontents \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} Direct input: Latin: + - = < > -- --- [ () ] LGR: \LGR + - = < > -- --- [ () ] \Latin Less than and greater than characters are mapped to breathing marks, use LICRs. Character macros: \newcommand{\sample}{% \begin{quote} \raggedright \cssample{textless} \\ \cssample{textgreater} \\ \cssample{textbraceleft} \\ \cssample{textbraceright} \\ % \cssample{textbackslash} \\ \cssample{textbar} \\ \cssample{textperthousand} \\ \cssample{textpertenthousand} \\ \cssample{textvisiblespace} \end{quote} } Latin: \sample LGR: (per-tenthousand sign is missing in LGR, LaTeX selects the global default) \LGR \sample \Latin % 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. Suppress ligatures and kerning 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 " \# \& ' ; < > ? @ 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. Up-to-date LaTeX installations load \emph{textcomp} by default. The legacy composite fallback definitions showed Greek letters if used in LGR: \LGR \cssample{textcopyright}, \cssample{textregistered}, \cssample{texttrademark}. \Latin \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 semantic significance 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'', monotonic \ensuregreek{Ή}), 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). Since 2022, LaTeX's \cs{MakeUppercase} uses the Greek upcasing rules only if the text language (locale) is set to ``greek'' with Babel (i.e.\ not in this document). See \href{char-list.pdf}{char-list.pdf} for a comprehensive example using the Greek language. 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) does not work 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 \cs{MakeUppercase}:\footnote{ With the 2022 \cs{MakeUppercase} implementation, there are issues like wrongly placed diacritics or \texttt{~} leading to a NBSP with letters/diacritics that are never used in an initial position because this document does not set the text language to ``greek''. However, there should not be any compiling errors.} \begin{quote} \LGR \~>a \>\~a \~\>{a}, \~\~{h} \~>h \>~h \>\~h \~>h \~>h|, \~\~i \~>i, \~a \>\~a \~\>{a}, \~\~{h} \~>h \>~h \>\~h \~>h \~>h|, \~\~i \~>i, \~\~u \~>u, \~w, \\~w \~>w, \~\~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 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 Comprehensive error message for missing symbol variants: % \LGR \textbeta\textbetasymbol % \texttheta\textthetasymbol \end{document}