summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/source
diff options
context:
space:
mode:
authorKarl Berry <karl@freefriends.org>2015-01-28 22:28:31 +0000
committerKarl Berry <karl@freefriends.org>2015-01-28 22:28:31 +0000
commit368e39ec4ee1a290bca0bb81c09847bfb1d33a6e (patch)
treee8f735753b25626b6e00d1174610155aed1a2368 /Master/texmf-dist/source
parent801a929a29f38ec92e3a8cea4c6a4bfa7d1653f5 (diff)
begingreek (27jan15)
git-svn-id: svn://tug.org/texlive/trunk@36158 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master/texmf-dist/source')
-rw-r--r--Master/texmf-dist/source/latex/begingreek/begingreek.dtx439
1 files changed, 439 insertions, 0 deletions
diff --git a/Master/texmf-dist/source/latex/begingreek/begingreek.dtx b/Master/texmf-dist/source/latex/begingreek/begingreek.dtx
new file mode 100644
index 00000000000..6c5e75b4844
--- /dev/null
+++ b/Master/texmf-dist/source/latex/begingreek/begingreek.dtx
@@ -0,0 +1,439 @@
+% \iffalse meta comment
+% !TEX encoding = UTF-8 Unicode
+%<*internal>
+\begingroup
+\input docstrip.tex
+\keepsilent
+\preamble
+Copyright 2015 Claudio Beccari All rights reserved.
+
+ This system is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+
+This file is distributed under the LPPL licence, version 1.3c
+dated 2008-05-04 or later as it appears in
+CTAN/macros/latex/base/lppl.tex.
+
+IMPORTANT NOTICE:
+
+You are not allowed to change this file.
+
+You are allowed to distribute this file under the condition that it is
+specified in the source file begingreek.dtx.
+
+If you receive only some of these files from someone, complain!
+
+You are NOT ALLOWED to distribute this file alone. You are NOT
+ALLOWED to take money for the distribution or use of either this
+file or a changed version, except for a nominal charge for copying
+etc.
+\endpreamble
+\askforoverwritefalse
+
+\generateFile{begingreek.sty}{f}{\from{begingreek.dtx}{package}}
+\def\tmpa{plain}
+\ifx\tmpa\fmtname\endgroup\expandafter\bye\fi
+\endgroup
+%</internal>
+%\fi
+% \iffalse
+%<*dtx>
+\ProvidesFile{begingreek.dtx}[2015/01/26 v.1.4 describes environment greek (CB)]
+%</dtx>
+%<package>\NeedsTeXFormat{LaTeX2e}[2011/06/27]
+%<package>\ProvidesPackage{begingreek}[2015/01/26 v.1.4 defines environment greek (CB)]
+%
+%<*driver>
+\documentclass{ltxdoc}
+\GetFileInfo{begingreek.dtx}
+ \title{The \textsf{begingreek} package%
+% \thanks{This file
+% has version number \fileversion, last
+% revised on \filedate.}%
+}
+ \author{Claudio Beccari -- \texttt{claudio dot beccari at gmail dot com}}
+ \date{Version \fileversion\ of \filedate}
+ \providecommand\babel{\textsf{babel}}
+ \newcommand\pack[1]{\textsf{#1}}
+ \renewcommand\meta[1]{{\normalfont$\langle$\textit{#1}$\rangle$}}
+ \renewcommand\oarg[1]{{\normalfont\texttt{[}\meta{#1}\texttt{]}}}
+ \renewcommand\marg[1]{{\normalfont\texttt{\{}\meta{#1}\texttt{\}}}}
+ \newcommand\Arg[1]{{\normalfont\texttt{\{#1\}}}}
+ \renewcommand\cs[1]{{\normalfont\texttt{\char92#1}}}
+ \newcommand\lbr{\char123\relax}\newcommand\rbr{\char125\relax}
+ \newenvironment{sintassi}{%
+ \begin{quote}\parskip0pt\hfuzz10pt\obeylines
+ }{%
+ \end{quote}\ignorespaces
+ }
+ \newcommand*\acro[1]{\expandafter\textsc\expandafter{\MakeLowercase{#1}}}
+ \usepackage[greek.polutoniko,english]{babel}
+ \usepackage[utf8]{inputenc}
+ \usepackage[T1]{fontenc}
+ \usepackage{lmodern,textalpha}
+ \usepackage{multicol,booktabs}\renewcommand\columnseprule{0.4pt}
+ \usepackage{begingreek}
+ \def\alfabeto{abgdezhjiklmnxoprsctufqyw}
+
+
+\begin{document}
+ \maketitle
+ \DocInput{begingreek.dtx}
+\end{document}
+%</driver>
+% \fi
+% \CheckSum{82}
+%\begin{multicols}{2}\tableofcontents\end{multicols}
+%
+% \begin{abstract}
+% This small extension module defines the environment |greek| to be used with
+% |pdfLaTeX| so as to imitate the similar environment defined in |polyglossia|.
+% A corresponding command, |\greektxt|, is also defined.
+% Of course there are some differences, but it has been used extensively and
+% it is useful.
+% \end{abstract}
+
+% \section{Introduction}
+% When using |pdfLaTeX| and |babel|, language changes are done with |babel|'s
+% language switching commands |\selectlanguage|, |\foreignlanguage| or with the
+% environments |otherlanguage| and |otherlanguage*|. They work fine, but
+% sometimes it is better to have a more ``agile'' command or environment
+% that can be used at least in place of the last three commands or
+% environments. Some more extra functionalities may be desirable, such
+% as the possibility of specifying a different default font family or to
+% switch font family for a particular stretch of Greek text.
+%
+% This small module does exactly what is described above; it has been created
+% only to be used with |pdfLaTeX|, therefore if it gets loaded with a package that
+% will be run with |XeLaTeX| or |LuaLaTex| it will complain loudly and its
+% loading will be aborted; no, not simply that: the only way to exit from
+% this wrong situation is to quit compilation. The strong error message is
+% such that the user is forced to quit and either change compiler or comment
+% out the call to this module.
+%
+% \section{Usage}
+% This module is loaded in the preamble in the usual way:
+%\begin{sintassi}
+%|\usepackage|\oarg{greek font family}\Arg{begingreek}
+%\end{sintassi}
+%
+% The \meta{greek font family} must be specified with the exact name that
+% appears in the \emph{font definition file} with file extension |.fd|; for
+% example, if the Didot fonts produced by the Greek Font Society (GFS) are
+% desired, it must be specified as |udidot| because the |.fd| file is named
+% |lgrudidot.fd|; we recall that the names of the |.fd| files result from
+% the agglutination of the encoding code and the family name, everything in
+% lower case: |lgr| is the lower case code of the LGR encoding, and |udidot|
+% is the family name. As another example, if the Greek
+% Baskerville font, also distributed by the same GFS, is required, the font family
+% name is |gfsbaskerville| as it can be deduced from the name of the |.fd| file.
+% The same similar attention must be paid for the other available Greek
+% fonts. Table~\ref{tab:greek-fonts} gives an overview of the correspondence
+% between font names, font families, and their appearance.
+%
+% If no optional \meta{greek font family} is specified, the default Latin
+% Modern compatible LGR encoded Greek fonts are selected.
+%
+% Please notice that among the LGR encoded Greek fonts there are many
+% collections, not only those distributed by the Greek Font Society;
+% table~\ref{tab:greek-fonts} displays some families already available at
+% the time of writing this documentation. This table shows only the normal
+% upright shape of each listed family, but each collection may contain also
+% other families, other shapes and the matching Latin fonts in encodings
+% T1 and/or~OT1.
+%
+%\begin{table}
+%\centering
+%\begin{tabular}{*3l}
+%\toprule
+%Font & Family name & Sample text \\
+%\midrule
+%Artemisia & |artemisia| &\begin{greek}[artemisia]\alfabeto\end{greek}\\
+%Baskerville & |gfsbaskerville|&\begin{greek}[gfsbaskerville]\alfabeto\end{greek}\\
+%Bodoni & |bodoni| &\begin{greek}[bodoni]\alfabeto\end{greek}\\
+%Complutum & |complutum| &\begin{greek}[complutum]\alfabeto\end{greek}\\
+%Didot & |udidot| &\begin{greek}[udidot]\alfabeto\end{greek}\\
+%Neohellenic & |neohellenic| &\begin{greek}[neohellenic]\alfabeto\end{greek}\\
+%Porson & |porson| &\begin{greek}[porson]\alfabeto\end{greek}\\
+%Solomos & |solomos| &\begin{greek}[solomos]\alfabeto\end{greek}\\
+%\midrule
+%Greek Times & |txr| & \begin{greek}[txr]\alfabeto\end{greek}\\
+%Kerkis & |mak| & \begin{greek}[mak]\alfabeto\end{greek}\\
+%LX & |llcmss| & \begin{greek}[llcmss]\alfabeto\end{greek}\\
+%\midrule
+%Default & |lmr| &\begin{greek}\alfabeto\end{greek}\\
+%\bottomrule
+%\end{tabular}
+%
+%\caption{Some greek font families available with \TeX\ Live 2014; the first font group is made available by the Greek Font Society; the second group is made available by different authors. The last font is just the default.}
+%\label{tab:greek-fonts}
+%\end{table}
+%
+% Another point should be stressed; the fonts distributed by the Greek Font
+% Society are pretty good but, please, do not expect that they are complete as the
+% Latin Modern compatible ones; the latter were built in order to satisfy
+% the most stringent requirements of the Hellenists; while the former were
+% designed to satisfy the every day needs of Greek typesetting.
+% I don't claim that the default fonts are better than the ones
+% provided by other groups; it is just a caveat that with some fonts certain
+% glyphs are available which are not available with other fonts.
+%
+% \section{Incomplete fonts and different encoding}
+% I would like to stress even more the necessity of reading the documentation
+% relative to each Greek font collection you want to use in your document. Some
+% fonts, such as Epigrafica, have been designed just for the monotonic
+% Greek spelling (unfortunately the Epigrafica documentation is not so clear
+% about this point); but these fonts have their |.fd| files with the family
+% name |epigrafica|; everything appears normal, but as soon you typeset
+% even the shortest text with the polytonic spelling, you
+% find out that most diacritics are missing; the |.log| file reports missing
+% glyphs, but the warning is not so easy to decipher; this is due to the way
+% \LaTeX\ writes out messages to the |.log| file.
+%
+% Other non LGR encoded fonts may be used to typeset Greek text,
+% for example Ibycus, Yannis Harambous' Greek fonts, Sylvio Levi's
+% fonts; they may be used with Plain \TeX\ and therefore don't use |.fd| files;
+% or they have their own package, for example |ibycus.sty|, to make the fonts
+% accessible to \LaTeX\ users. Therefore don't use this extension module
+% |begingreek| with these fonts; if you do and specify the names of these fonts
+% as if they were their font family names, you get a warning message and the
+% Greek text gets typeset with the default fonts (see the next paragraph).
+%
+% \section{Default font control}
+% It may happen to misspell the Greek font family name to be specified as
+% an option to the module loading statement. This specified
+% name is used to create the corresponding |.fd| file name and it is checked
+% if this |.fd| actually exists. If it does not exist, a warning message
+% is output and the default Greek font is used in its place.
+%
+% The |.fd| might be missing also if a basic incomplete \TeX\ system
+% distribution is installed; in this case the user should provide to
+% complete the installation or refrain from using a Greek font family
+% that is not available or that misses the companion |.fd| file.
+%
+% \section{The new \texttt{greek} environment}
+% With this package loaded, the user has a new environment available; this
+% environment has the following syntax:
+%\begin{sintassi}
+%|\begin|\Arg{greek}\oarg{other Greek font family}
+%\meta{Greek text}
+%|\end|\Arg{greek}
+%\end{sintassi}
+% where the \meta{Greek text} may be as short as a single word or as long
+% as several paragraphs.
+%
+% This Greek text may be input in three different ways: in order to get
+% \greektxt{αὐτῇ}, it is possible to write the source file as \verb+a>ut~h|+,
+% or \verb+a\>t\~h|+, or |αὐτῇ|. The third way looks much better to a
+% Hellenist, but it may be difficult to type-in without a suitable
+% keyboard and/or operating system; it also requires loading the
+% \pack{textalpha} package. Notice that the first form, characteristic
+% of the LGR encoded Greek fonts, relies on the font ligature functionality,
+% but in certain cases it lets some kerning failures become visible;
+% the second form relies on the internal LICR definitions (LICR:
+% LaTeX Internal Character Representation) and no kerning failures
+% take place; the direct Greek input relies on a special extended LICR
+% when used with |pdfLaTeX|. The LICR definitions have been part of any
+% modern \TeX\ Live distribution since December~2013.
+%
+% The optional argument \meta{other Greek font family} is just another
+% family; the less you have to type, the less error-prone is your source code.
+% Nevertheless the family name that is being specified is tested for
+% the existence of its corresponding font |.fd| file, and if this file
+% does not exist or the family name is misspelt, the default Greek font is used.
+%
+% \section{The command \texttt{\char92greektxt}}
+% For very short Greek texts an even simpler approach may be defined.
+% With a single command |\greektxt| it is possible to typeset a Greek
+% text as short as one word or containing a short phrase, with a font
+% of an optionally specified family. The syntax is the following one:
+%\begin{sintassi}
+%|\greektxt|\oarg{other Greek font family}\marg{Greek short text}
+%\end{sintassi}
+% where \meta{other Greek font family} behaves as described for the |greek|
+% environment, while \meta{Greek short text} stresses the fact that the
+% Greek text must be short, a fraction of a paragraph; should it contain
+% a paragraph terminator (command |\par| or a blank line) an error flag is
+% raised.
+%
+%
+% \section{Font shapes and series}
+% For both the environment |greek| and the command |\greektxt| the font
+% shape and/or series are specified with the usual shape and/or font
+% declarations such as |\bfseries|, |\itshape|, and so on. Some families
+% have non standard shapes; the default Latin Modern
+% compatible Greek fonts extra shapes are already defined in their
+% specific |.fd| font file; the same is true with other families; in
+% general the medium and bold extended series and the upright and
+% italic/slanted shapes are always available; although
+% table~\ref{tab:greek-fonts} displays some families where the \emph{normal}
+% shape is already oblique, those families miss another italic or slanted
+% shape.
+%
+% The user therefore should control the documentation of the extension module
+% relative to each family; should this documentation be missing, the user
+% should fetch the font |.fd| file, open it with a text editor, and read
+% inside the file which shapes are available; this does not necessarily
+% imply that the specific font extension module has a special command to choose
+% that shape, but the user can define himself one. This is not unusual:
+% even the standard Computer Modern (CM) Latin fonts have available the
+% {\fontshape{ui}\selectfont upright italic shape,} but the \LaTeX\ kernel
+% and all standard classes miss the |\uishape| declaration and the |\textui|
+% command, in spite that the |ui| internal shape code is defined and the
+% font is available.
+%
+%
+% \section{Examples}
+% The following examples are carried on with the |\greektxt| command, but
+% of course they produce the same results if the Greek text is enclosed
+% in a corresponding environment. Here we assume that the command
+% |\alphabet| contains the lowercase Greek alphabet and |\lishape| has
+% been defined as |\fontshape{li}\selectfont|.
+% Table~\ref{tab:examples} displays some results in order to show some
+% family, series and shape selection.
+%
+% \begin{table}\tabcolsep=2pt\relax
+%\makebox[\textwidth]{\begin{tabular}{ll}
+%^^A\toprule
+%\multicolumn2c{Latin Modern}\\\midrule
+% \multicolumn1c{Command} & \multicolumn1c{Result} \\
+% \cs{greektxt}\Arg{\cs{alphabet}} & \greektxt{\alfabeto} \\
+% \cs{greektxt}\Arg{\cs{bfseries}\cs{alphabet}} & \greektxt{\bfseries\alfabeto}\\
+% \cs{greektxt}\Arg{\cs{lishape}\cs{alphabet}}& \greektxt{\fontshape{li}\selectfont\alfabeto}\\[2ex]
+%\multicolumn2c{Bodoni}\\\midrule
+% \multicolumn1c{Command} & \multicolumn1c{Result} \\
+% \cs{greektxt[bodoni]}\Arg{\cs{alphabet}} &\greektxt[bodoni]{\alfabeto}\\
+% \cs{greektxt[bodoni]}\Arg{\cs{bfseries}\cs{alphabet}}&\greektxt[bodoni]{\bfseries\alfabeto}\\
+% \cs{greektxt[bodoni]}\Arg{\cs{itshape}\cs{alphabet}}&\greektxt[bodoni]{\itshape\alfabeto}\\
+%\bottomrule
+%\end{tabular}}
+% \caption{Some examples of family, series and shape selection}
+% \label{tab:examples}
+% \end{table}
+%
+% \section{Acknowledgements}
+% I should acknowledge the collaboration of a person, whose name I can't
+% remember, whom a couple of years ago I developed the first embryo of
+% this module with; the project was abandoned, I don't remember why. I must
+% thank also Mauro Sacchetto whose questions posted in the forum of the
+% Italian TUG forced me to resume the project; he also tested the
+% environment and the command, and gave me a very important feedback.
+%
+%\StopEventually{}
+%
+%\section{The code}
+% The identification lines have already been written to the |.sty| file;
+% here we describe the real code.
+%
+% First we load the module \pack{iftex} in order to test if the typesetting
+% engine is |pdfTeX|; if it is not, we provide an error message and force the
+% user to quit the job.
+%\iffalse
+%<package*>
+%\fi
+% \begin{macrocode}
+\usepackage{iftex}
+\unless\ifPDFTeX
+\PackageError{begingreek}{\MessageBreak
+Package `begingreek' works only with `pdfLaTeX'\MessageBreak
+Nothing done\MessageBreak
+\MessageBreak
+Type X to quit}{\@ehd}
+\expandafter\endinput
+\fi
+% \end{macrocode}
+% At this point we know we are typesetting with the |pdfTeX| engine; now
+% we test if the |greek| language has been specified to \babel. It does
+% not matter which attributes or modifiers of the language have been specified,
+% but any Greek variant is valid. We use the $\varepsilon$-\TeX\ command
+% |\ifcsname| so that we do not produce any trace in memory and in particular
+% we do not need to test the macro with |\ifx| against |\relax|.
+% If the language |greek| has not been specified to \babel\ or if this
+% module has been loaded before \babel\ itself, an error flag is raised and the
+% user is forced to quit the job.
+% \begin{macrocode}
+\unless\ifcsname captionsgreek\endcsname
+\PackageError{begingreek}{\MessageBreak
+Package `begingreek' may be used only\MessageBreak
+if language `greek' is already defined\MessageBreak
+Check that `begingreek' is loaded after\MessageBreak
+`babel' and that the language `greek'\MessageBreak
+has been specified\MessageBreak\MessageBreak
+Type X to quit}{\@ehd}
+\expandafter\endinput
+\fi
+% \end{macrocode}
+% Now we can define the package option with the standard facilities
+% provided by the \LaTeX\ kernel. First we set some the default Greek
+% font family to the |lmr| one (Latin Modern compliant ``serifed''
+% Greek fonts). Then we define a generic option that uses the
+% |\CurrentOption| macro for setting another default Greek font family.
+% Of course it is necessary to test if the generic option passed as an
+% optional argument to the \pack{begingreek} package is a valid one;
+% to be a valid one there must exist a file named |lgr\CurrentOption.fd|;
+% if this file does exist, the proper (expanded) definition is made,
+% otherwise a warning message is issued and the default greek font family
+% is used. Eventually the |\ProcessOptions| command is given so that
+% the generic option becomes the new default Greek font family; within
+% the document body it is possible to change the current Greek font family,
+% so that the whole process can work to fit the user needs.
+% \begin{macrocode}
+\def\greekfontfamily{lmr}
+
+\DeclareOption*{\IfFileExists{lgr\CurrentOption.fd}{%
+\edef\greekfontfamily{\CurrentOption}}{%
+\PackageWarning{begingreek}{%
+The file lgr\CurrentOption.fd does not exist\MessageBreak
+Either provide such a file, or specify a\MessageBreak
+valid Greek font family to the\MessageBreak
+\string\begin\string{greek\string} package\MessageBreak
+I continue with the default font family\MessageBreak}}}
+\ProcessOptions\relax
+
+% \end{macrocode}
+%
+% Now we can define the new environment |greek|. Notice that we use
+% the default Greek font family to specify the environment optional argument,
+% but we have to test the validity of the font family name; we cannot
+% use the same name |\greekfontfamily| in the internal definitions
+% otherwise we'd produce an infinite loop; so we have to change the name
+% of the macro that holds the specified family name; if it is an
+% invalid name, either misspelt or inexistent, we reset it to the default,
+% either the overall default or the package defined default (saved
+% in |\greekfontfamily|) so we can proceed without further problems.
+% \begin{macrocode}
+\newenvironment{greek}[1][\greekfontfamily]{\begin{otherlanguage}{greek}%
+\edef\Greekfontfamily{#1}%
+\IfFileExists{lgr\Greekfontfamily.fd}{}%
+{\PackageWarning{begingreek}{%
+Font family lgr\Greekfontfamily.fd does not exist\MessageBreak
+Default fonts used}\def\Greekfontfamily{\greekfontfamily}}%
+\fontfamily{\Greekfontfamily}\selectfont
+}{\end{otherlanguage}}
+
+% \end{macrocode}
+% The corresponding command definition is almost equal. The optional
+% Greek font family name is subject to the same tests as for the
+% corresponding optional argument of the |greek| environment.
+% \begin{macrocode}
+\newcommand*\greektxt[2][\greekfontfamily]{%
+\edef\Greekfontfamily{#1}
+\foreignlanguage{greek}{%
+\IfFileExists{lgr\Greekfontfamily.fd}{}%
+{\PackageWarning{begingreek}{%
+Font family lgr\Greekfontfamily.fd does not exist\MessageBreak
+Default fonts used}\def\Greekfontfamily{\greekfontfamily}}%
+\fontfamily{\Greekfontfamily}\selectfont#2}}
+
+% \end{macrocode}
+%
+% And this definition ends this small package.
+%
+%\iffalse
+%<package/>
+%\fi
+% \Finale
+%
+%\endinput
+