summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/doc/latex/greek-fontenc/alphabeta-doc.tex
blob: 4a69d5a4644693a0d7bdbc61e648ad01b25392b9 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
% alphabeta-doc: Documentation and tests for alphabeta.sty
% ********************************************************
%
% :Copyright: © 2010, 2015 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.
%
% This LaTeX document can be compiled with 8-bit TeX (latex or pdflatex),
% XeTeX (xelatex), or LuaTeX (lualatex).
% As it contains tests for the different limitations, there will be warnings
% in the log, which can be safely ignored.

\documentclass{article}

\usepackage[unicode,colorlinks=true,linkcolor=blue]{hyperref}
\usepackage{bookmark}
\hypersetup{colorlinks=true,linkcolor=blue,urlcolor=blue,pdfencoding=auto}
% \usepackage{parskip}
\usepackage{amsmath}
\frenchspacing

\newcommand{\setupUnicodeFonts}{
  \usepackage[no-math,tuenc]{fontspec}
  \setmainfont{Linux Libertine O}
  \setsansfont{Linux Biolinum O}
  \setmonofont{Liberation Mono}[Scale=MatchLowercase]
  \usepackage[libertine,slantedGreek]{newtxmath}
  % \usepackage{unicode-math} % package conflict
  \newcommand{\fontset}{fontspec with Unicode fonts}
}
\newcommand{\setupTeXFonts}{
  \usepackage[LGR,T1]{fontenc}
  \usepackage{textcomp}
  \usepackage{lmodern}
  % \usepackage{libertine}
  % \usepackage{gfsdidot}
  % \usepackage{kerkis}
  % \usepackage{newtxtext,newtxmath}
  % \usepackage{substitutefont}
  % \substitutefont{LGR}{\rmdefault}{artemisia}
  \usepackage{isomath}
  \newcommand{\fontset}{fontenc with TeX fonts}
}
\ifdefined\XeTeXrevision
  \newcommand{\engine}{XeTeX}
  \setupUnicodeFonts
\else\ifdefined\luatexversion
  \newcommand{\engine}{LuaTeX}
  \setupUnicodeFonts
\else
  \newcommand{\engine}{8-bit TeX}
  \usepackage[utf8]{inputenc}
  \setupTeXFonts
\fi\fi

% load alphabeta after math setup and encoding setup!
% \usepackage{alphabeta}[2015/08/08]
\usepackage[normalize-symbols]{alphabeta}[2015/08/08]

% Fallback macros:

% varstigma only defined with 8-bit LGR fonts
\providecommand*{\varstigma}{$\oslash$}
% varkappa, only defined with newtxmath, other var... only with unicode-math
\providecommand*{\varkappa}{\oslash}
\providecommand*{\varbeta}{\oslash}
\providecommand*{\varTheta}{\oslash}

% print current font encoding:
\makeatletter
\newcommand{\currentEncoding}{\f@encoding}
\makeatother

\begin{document}

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

\begin{abstract}\noindent
The \emph{alphabeta} package makes the standard macros for Greek letters in
mathematical mode also available in text mode. This way, you can input Greek
letters ``by name'' everywhere in the document. The mode determines whether
the characters are taken from the text or math font.

With 8-bit TeX and
\emph{\href{http://www.ctan.org/pkg/greek-inputenc}{greek-inputenc}},
literal Unicode charactes can also be used in mathematical mode.
\end{abstract}

% \tableofcontents

\section{Requirements}

The \emph{alphabeta} package depends on
\emph{\href{textalpha-doc.pdf}{textalpha}} (both are part of
\emph{\href{http://www.ctan.org/pkg/greek-fontenc}{greek-fontenc}}). It can
be used under 8-bit TeX as well as XeTeX/LuaTeX (this document is typeset
with \engine{} and \fontset). Depending on the converter and fonts, different
\hyperref[sec:limitations]{limitations} apply.

The package conflicts with
\href{http://www.ctan.org/pkg/unicode-math}{\emph{unicode-math}}.

It also fails, if the \texttt{utf8x} input encoding is selected (interface
to the \href{http://www.ctan.org/pkg/ucs}{\emph{ucs}} package using a
non-compatible definition of \verb+\DeclareUnicodeCharacter+).

\section{Usage}

Load this package in the preamble of your document (after font and math
setup) with
\begin{verbatim}
      \usepackage{alphabeta}
\end{verbatim}
%
Now you can write a single Greek symbol (like \Psi{} or \mu{}) or
a \lambda\omicron\gamma\omicron\varsigma{} in non-Greek text as well as
ISO-conforming formulas with upright symbols for constants
like $A = \text{\pi} r^2$ (instead of $A = \pi r^2$).%
\footnote{The
  \href{http://mirrors.ctan.org/macros/latex/contrib/isomath/isomath.html}%
  {\emph{isomath} documentation} describes more alternatives for upright
  Greek symbols in math mode.}

Just like Latin letters, the Greek counterparts are by default italic in
math mode%
\footnote{Capital Greek letters are upright in TeX unless a package selects
the ``ISO'' math-style. See the
\href{http://mirrors.ctan.org/macros/latex/contrib/isomath/isomath.html}%
{\emph{isomath} documentation} for a detailled discussion of math-styles.}
and upright in text:

\begin{quote}
  Text: L \Gamma{} l \gamma,
  mathematics: $ L \ \Gamma \ l \ \gamma $
\end{quote}
%
See the source of this document \url{alphabeta-doc.tex} for a setup and
usage example.


\subsection{options}

Package options are passed to the \href{alphabeta-doc.pdf}{\emph{alphabeta}}
package. Example call with options:

\begin{verbatim}
      \usepackage[normalize-symbols,keep-semicolon]{alphabeta}
\end{verbatim}

\texttt{normalize-symbols} merges ``letters'' and ``symbol`` variants of
some Greek letters to the ``letter'' character:
\footnote{The normalize-symbols option was added in version 0.13 (2015-08-03).
  Unicode input of the symbol variants requires at least version~1.6
  (2015-08-05) of
  \emph{\href{http://www.ctan.org/pkg/greek-inputenc}{greek-inputenc}}.}
Without this option, the symbol variant characters cannot be used in text,
because they are not supported by 8-bit Greek fonts (LGR encoding).
The \texttt{normalize-symbols} option is ignored, if you compile the
document with XeTeX or LuaTeX using Unicode fonts.
\textbf{Attention}: Be careful in cases where the distinction between the
symbol variants may be important (e.g. in a mathematical or scientific
context). Use XeTeX/LuaTeX with Unicode fonts or the respective characters
in mathematical mode (e.g. $\pi$ vs. $\varpi$).

The option \texttt{keep-semicolon} prevents conversion of the semicolon to
an \emph{ano teleia} (see \emph{\href{textalpha-doc.pdf}{textalpha-doc}}).

\subsection{symbol variants}

Mathematical notation uses variant shapes of some Greek letters as
additional symbols. The variations have no syntactic meaning in Greek text
and text fonts may use the variant shapes in place of the “regular” ones as
a stylistic choice.

Unicode defines separate code points for the symbol variants. TeX supports
some of the variant shape symbols in mathematical mode, but its concept of
“standard” vs. “variant” symbols differs from the distinction between
“GREEK LETTER ...” vs. “GREEK ... SYMBOL” in the Unicode standard.
See \href{tuenc-greek-doc.pdf}{tuenc-greek-doc}.

The \emph{alphabeta} package defines generic macros for these variants that
are short forms of the set defined in \texttt{tuenc-greek.def}:
\begin{quote}
  \verb|\<name>| selects the Unicode GREEK LETTER ... variant,

  \verb|\<name>symbol| selects the Unicode
     GREEK ... SYMBOL variant,

  \verb|\var<name>| selects the variant
    shape according to TeX' mathematical mode
\end{quote}
See Table \ref{tab:symbol-variant-macros} for the full list.

\section{Limitations \label{sec:limitations}}

With 8-bit TeX, the limitations described in the
\href{textalpha-doc.pdf}{textalpha documentation} apply. See also the tests
in section \hyperref[sec:8-bit-limitations]{8 bit limitations}.

With XeTeX/LuaTeX and Unicode fonts, literal Unicode characters cannot be
used in formulas (the log file reports missing characters) This is a generic
TeX limitation which \emph{alphabeta} overcomes if used under 8-bit TeX.
Under XeTeX/LuaTeX it may be lifted using the
\href{http://www.ctan.org/pkg/unicode-math}{\emph{unicode-math}} package.
However, \emph{unicode-math} conflicts with \emph{alphabeta}.


\section{Tests and examples}

\subsection{Greek alphabet}

Greek letters via generic ``name'' macros without language/font-encoding
switch:

\begin{quote}
  \Alpha{} \Beta{} \Gamma{} \Delta{} \Epsilon{} \Zeta{} \Eta{} \Theta{}
  \Iota{} \Kappa{} \Lambda{} \Mu{} \Nu{} \Xi{} \Omicron{} \Pi{} \Rho{}
  \Sigma{} \Tau{} \Upsilon{} \Phi{} \Chi{} \Psi{} \Omega{}
  \\
  \alpha{} \beta{} \gamma{} \delta{} \epsilon{} \zeta{} \eta{} \theta{}
  \iota{} \kappa{} \lambda{} \mu{} \nu{} \xi{} \omicron{} \pi{} \rho{}
  \sigma{} \varsigma{} \tau{} \upsilon{} \phi{} \chi{} \psi{} \omega{}
  \\
  \digamma{} \Digamma{} \stigma{} \varstigma{}%
     \footnote{There is no separate Unicode code point for a stigma variant
       symbol, \texttt{\textbackslash varstigma} is not defined with
       Xe/LuaTeX and similar to \texttt{\textbackslash stigma} in some fonts.}
  \koppa{} \qoppa{} \Qoppa{}
  \Stigma{} \Sampi{} \sampi{}
\end{quote}
%
Greek letters via Unicode input without language/font-encoding switch:

\begin{quote}
  Α Β Γ Δ Ε Ζ Η Θ Ι Κ Λ Μ Ν Ξ Ο Π Ρ Σ Τ Υ Φ Χ Ψ Ω\\
  α β γ δ ε ζ η θ ι κ λ μ ν ξ ο π ρ σ ς τ υ φ χ ψ ω\\
  ϝ Ϝ ϛ ϟ ϙ Ϙ Ϛ Ϡ ϡ
\end{quote}

\subsection{Diacritics}

Accent macros are set up for use with the generic macros by definition of
``TextComposite'' commands.

Diacritics (except the dialytika) should placed
before capital letters and dropped with MakeUppercase:

\begin{quote}
\ensuregreek{
\<{\alpha} \>{\epsilon} \"'{\iota} \>`{\eta}
\'<{\omicron} \~<{\upsilon} \~>{\omega}
\\
\<{\Alpha} \>{\Epsilon} \'{\Iota} \>`{\Eta}
\'<{\Omicron} \~<{\Upsilon} \~>{\Omega}
\\
\MakeUppercase{%
 \<{\alpha} \>{\epsilon} \"'{\iota} \>`\eta{}
 \'<{\omicron} \~<{\upsilon} \~>{\omega}
}}
\end{quote}


\subsection{normalize-symbols}

The \texttt{normalize-symbols} option merges ``letters'' and ``symbol``
variants of some Greek letters to the ``letter'' character. It is ignored,
if the document uses Unicode fonts and is compiled with XeTeX or LuaTeX.
(This document is compiled using \engine.)
\begin{quote}
  This quote uses both variants for beta (β|ϐ), theta (θ|ϑ), phi (φ|ϕ), pi
  (π|ϖ), kappa (κ|ϰ), rho (ρ|ϱ), Theta (Θ|ϴ), and epsilon (ε|ϵ) in the LaTeX
  source.%
\end{quote}


\subsection{\ensuregreek{%
    Ἑλληνικά (\<\Epsilon\lambda\lambda\eta\nu\iota\kappa\'\alpha{})}
  in PDF strings}

With the alphabeta package, you get Greek letters in both, the document body
and PDF metadata generated by hyperref if the input uses Unicode literals or
macros. Wrapping in \verb+\ensuregreek+ ensures the right placement of the
accents and breathings (before, not above capital letters). With LICR input
(accent macros + symbol macros), non-standard diacritics are missing in the
PDF data, as hyperref's PU encoding currently does not support polytonic
Greek. (Here, the dasia is dropped at the start of the word in parentheses in
the PDF toc. The warning ``\texttt{Glyph not defined in PU encoding,
removing `\textbackslash<' on input line 145.}'' is written to the log.)


\subsection{Greek in math $\Gamma = \sin\alpha / \cos{\beta}$}

In the main document, Greek in math mode should work as usual:

\[\Gamma = \frac{\sin\alpha}{\cos{\beta}}.
\]

Greek letters and symbols in math input as macro (there are no math macros
for Greek letters wich exist with similar shape in the Latin alphabet):
\begin{align*}
  &
  % \Alpha{} \Beta{}
  \Gamma{} \Delta{}
  % \Epsilon{} \Zeta{} \Eta{}
  \Theta{}
  % \Iota{} \Kappa{}
  \Lambda{}
  % \Mu{} \Nu{}
  \Xi{}
  % \Omicron{}
  \Pi{}
  % \Rho{}
  \Sigma{}
  % \Tau{}
  \Upsilon{} \Phi{}
  % \Chi{}
  \Psi{} \Omega{}
\\&
  \alpha{} \beta{} \gamma{} \delta{} \epsilon{} \zeta{} \eta{} \theta{}
  \iota{} \kappa{} \lambda{} \mu{} \nu{} \xi{}
  % \omicron{}
  \pi{} \rho{}
  \sigma{} \varsigma{} \tau{} \upsilon{} \phi{} \chi{} \psi{} \omega{}
\\&
  \vartheta \varphi \varpi \digamma{} \varrho \varepsilon
\end{align*}

PDF strings do not know math mode. The content of a formula or equation is
evaluated in text mode with non-valid commands discarded (and warnings
written to the log). This works resonably well for simple formulas (but not,
e.g., for super-/subscripts). With the \emph{alphabeta} package, it works
also for Greek letters.

\subsection{Greek Unicode characters in math (only under 8-bit TeX)}

With the \texttt{utf8} option of \emph{inputenc} and
\href{http://www.ctan.org/pkg/greek-inputenc}{\emph{greek-inputenc}},
literal Greek Unicode characters are supported also in
mathematical mode:

\ifdefined\DeclareUnicodeCharacter
  \[
       Γ = \frac{\sin α}{\cos β}.
  \]
  Greek letters and symbols in math input as Unicode literals:
  \begin{align*}
  	       & Γ ΔΘΛΞΠΣΥ ΦΨ Ω \\
                 & αβγδεζηθικλμνξπρσςτυφχψω \\
  	       & ϑϕϖϝϱϵ
  \end{align*}
\fi

This does not work with XeTeX/LuaTeX (unless in 8-bit emulation mode).
  

The ``normal'' vs. ``variant'' shape of phi and epsilon is inverted when using
traditional makros or Unicode letter vs. symbol characters respectively.
This is to keep backwards compatibility of the math macros as well
as consistent input-output mapping for Unicode in text and math.
It corresponds to the behaviour of
\href{http://www.ctan.org/pkg/unicode-math}{\emph{unicode-math}}
with the default option \texttt{vargreek-shape=TeX}.

\subsection{8-bit limitations \label{sec:8-bit-limitations}}

These limitations are lifted, if the document is compiled with XeTeX/LuaTeX.

\begin{itemize}

\item Composition of diacritics (like \verb+\>\'+) fails:
      \<{\alpha} \>{\epsilon} \"'{\iota} \>`\eta{}
      \'<{\omicron} \~<{\upsilon} \~>{\omega}

      Simple diacritics and long names (like \verb+\accdasiaoxia+) work in
      any font encoding, however they do not select precomposed characters
      (the difference becomes obvious if you drag-and-drop text from the PDF
      version of this document):
      %
      \ensuregreek{\<'\alpha{} \accdasia\acctonos\alpha{} \accdasiaoxia\alpha{}
      (\currentEncoding)} vs. \accdasiaoxia\alpha{} (\currentEncoding)

\item MakeUppercase fails with composite diacritics in other font encodings.
      % \MakeUppercase{%
      %  \<\alpha{} \>\epsilon{} \'\iota{} \`\eta{} \~\upsilon{}
      % }

\item There is no kerning between Greek letters, if the font encoding does not
      support Greek: compare \ensuregreek{\Alpha\Upsilon\Alpha{}
      (\currentEncoding)} to \Alpha\Upsilon\Alpha{} (\currentEncoding).
      Because of this (and for proper hyphenation), use of the Babel package
      and correct language setting is recommended for Greek quotes.

\end{itemize}

The \verb+\ensuregreek+ macro ensures that the argument is typeset with a
font encoding supporting Greek. This keeps kerning (if the kerning pair is
inside the argument, \ensuregreek{\Alpha\"\Upsilon\Alpha}), and allows
combining of accent macros where pre-composed characters are selected
(\ensuregreek{\<'\alpha}).

\begin{table}[bp]
  \centering
  \begin{tabular}{lcc}
  \hline
  macro & text & math \\
  \hline
  \verb$\pi$            & \pi            & $\pi$         \\
  \verb$\varpi$         & \varpi         & $\varpi$      \\
  \verb$\pisymbol$      & \pisymbol      & $\pisymbol$   \\
  \hline
  \verb$\rho$           & \rho           & $\rho$        \\
  \verb$\varrho$        & \varrho        & $\varrho$     \\
  \verb$\rhosymbol$     & \rhosymbol     & $\rhosymbol$  \\
  \hline
  \verb$\theta$         & \theta         & $\theta$      \\
  \verb$\vartheta$      & \vartheta      & $\vartheta$   \\
  \verb$\thetasymbol$   & \thetasymbol   & $\thetasymbol$ \\
  \hline
  \verb$\epsilon$       & \epsilon       & $\epsilon$    \\
  \verb$\varepsilon$    & \varepsilon    & $\varepsilon$ \\
  \verb$\epsilonsymbol$ & \epsilonsymbol & $\epsilonsymbol$ \\
  \hline
  \verb$\phi$           & \phi           & $\phi$        \\
  \verb$\varphi$        & \varphi        & $\varphi$     \\
  \verb$\phisymbol$     & \phisymbol     & $\phisymbol$  \\
  \hline
  \verb$\beta$          & \beta          & $\beta$       \\
  \verb$\varbeta$       & \varbeta       & $\varbeta$    \\
  \verb$\betasymbol$    & \betasymbol    & $\betasymbol$ \\
  \hline
  \verb$\kappa$         & \kappa         & $\kappa$      \\
  \verb$\varkappa$      & \varkappa      & $\varkappa$   \\
  \verb$\kappasymbol$   & \kappasymbol   & $\kappasymbol$\\
  \hline
  \verb$\Theta$         & \Theta         & $\Theta$      \\
  \verb$\varTheta$      & 		 & $\varTheta$   \\
  \verb$\Thetasymbol$   & \Thetasymbol   & \\
  \hline
  \end{tabular}
  \caption{Macros for Greek symbol variants ($\oslash$ = symbol missing).
  With 8-bit TeX and the \texttt{normalize-symbols} option, the output for
  both variants in text mode is the same (8-bit Greek text fonts contain
  only one symbol variant). \label{tab:symbol-variant-macros}}
\end{table}

\end{document}