%
%				GREEK.TEX
%				---------
%
%			      K J Dryllerakis
%
%				Dec 7, 1992	
%
%				VERSION: 3.1
%
%	This is the source file for building the greek format for the
%	kd fsmily of fonts.
%	Note that PLAIN.TEX must exist and bare a fmtversion 3.0 or
%	higher (to ensure existence of language definitions).
% 	Greek is defined to be language 1 or actually last_language+1.
%
%	Pleaaaaaaaaase don't modify this file
%
%		Note: Used in conjunction with KD Fonts
% Load the standard macro package
\input plain
%
\message{Greek Definitions:}
%
\message{general definitions,}
%
\catcode`\@=11			% We will access TeX private macros
\newwrite\@screen		% Define a screen ouput
\def\showstring#1{\immediate\write\@screen{#1}}
\def\sp@{ }\def\sp@s{\sp@\sp@\sp@\sp@\sp@\sp@\sp@\sp@\sp@}
\def\c@p{\showstring{}\showstring{\sp@s\sp@s\sp@s GreekTeX -- Version 3.1}%
\showstring{\sp@s\sp@s\sp@s  ---------------------------}
\showstring{\sp@s GreekTeX is a macro package for typesetting greek texts.}
\showstring{\sp@s It is maily compatible with the haralambous package,}
\showstring{\sp@s from which it inherits the top level macros.}
\showstring{\sp@s GreekTeX includes easy access to font families, a choise}
\showstring{\sp@s of delimiters, and makes typesetting scientific papers}
\showstring{\sp@s in greek as easy as in TeX itself.}
\showstring{\sp@s}
\showstring{\sp@s\sp@s\sp@s Copyright K J Dryllerakis 1991-1992}
\showstring{\sp@s\sp@s\sp@s ------------------------------}%
}
\c@p
%
%	A List of Reserved Keywords that should not be redefined
%	^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
%
%		a. accesible from the document
%
%	\|		The character |
%	\begingreek	Begin a group of greek text
%	\endgreek	End a group of greek text
%	\greek		A new language definition
%	\gr		switch to classical greek font
%	\gbf		switch to classical boldface font
%	\git		switch to classical italics font
%	\gsl		switch to classical slanted font
%	\gtt		switch to classical typewritter font
%	\gt		Greater than > symbol
%	\lt		Less than < symbol
%	\math		If we are using $ as del. it is equiv to $
%	\setgreek	Select greek mode to be the primary mode
%	\setlatin	Restore standard mode (at any stage)
%	\showstring	Log a string on the terminal
%
%		b. Internal Control Sequences
%
%	\gr@@kdelimsbar Use | as begin- and end-greek
%	\gr@@kdelimsdol Use $ as begin- and end-greek
%	\@ldend		A copy of plain TeX's \end
%	\@screen	Screen Output for messages
%	\t@f@nt		Remembers greek font used last
%	\t@f@m		Remembers greek family used last
%	\t@size		Remembers greek point size used last
%	\c@p		Product Copyright Notice
%	\grfam		Greek classic font family register
%	\grslfam	Greek slanted font family register
%	\grttfam	Greek typewriter font family register
%	\grbffam	Greek boldface font family register
%	\grifam		Greek italics font family register
%	\l@tinm@de	Definition to restore plain TeX's mode
%
%			Start Up Definitions
%			--------------------
%
\ifx\gr@@kformatloaded\relax\catcode`\@=\active
 \endinput\else\let\gr@@kformatloaded\relax\fi
\newif\ifdelimsbar\delimsbarfalse	% Check for | as delimiter
\chardef\|=`\|				% A way to access |
\gdef\t@f@nt{\tengr}			% Remember font used last
\gdef\t@size{\grtenpoint}		% Remember size used last
\gdef\t@f@m{\fam\grfam}			% Remember family used last
% ^ THESE ARE INITIAL VALUES. DO NOT ALTER!
\newlanguage\greek			% Define Greek as a new language
\def\lt{<}				% Remember Less than
\def\gt{>}				% and greater than signs
\language0				% Switch to default language
%
\message{fonts,}
%
%		   		Greek Font Bits
%				_______________
%
%	First we load the greek fonts and declare the families
%	Then we define point sizes for typesetting greek texts
%
%		Classic Greek Family
%		^^^^^^^^^^^^^^^^^^^^
\newfam\grfam
\font\tengr=kdgr10		% 10 point Classic Greek Font
\font\ninegr=kdgr9		%  9 point Classic Greek Font
\font\eightgr=kdgr8		%  8 point Classic Greek Font
\font\sixgr=kdgr8 at 6truept	%  6 point simulated Classic Greek (x.75)
\def\gr{\tengr\fam\grfam}
%
%		Slanted Greek Family
%		^^^^^^^^^^^^^^^^^^^^
\newfam\grslfam
\font\tengrsl=kdsl10		% 10 Point Slanted Greek Font
\font\ninegrsl=kdsl10 at 9truept% 9 point (sim.) Slanted Greek
\font\eightgrsl=kdsl10 at 8truept%8 point (sim.) Slanted Greek
\def\gsl{\tengrsl\fam\grslfam}
%
%		Boldface Greek Family
%		^^^^^^^^^^^^^^^^^^^^^
\newfam\grbffam
\font\tengrbf=kdbf10		% 10 Point Boldface Greek Font
\font\ninegrbf=kdbf9		%  9 Point Boldface Greek
\font\eightgrbf=kdbf8		%  8 Point (sim.) Boldface Greek
\def\gbf{\tengrbf\fam\grbffam}
%
%		Italic Greek Family
%		^^^^^^^^^^^^^^^^^^^
\newfam\grifam
\font\tengri=kdti10		% 10 Point Italic Greek Font
\font\ninegri=kdti10 at 9truept	%  9 Point (sim.) Italic Greek
\font\eightgri=kdti10 at 8truept%  8 Point (sim.) Italic Greek
\def\git{\tengri\fam\grifam}
%
%		Typerwriter Greek Family
%		^^^^^^^^^^^^^^^^^^^^^^^^
\newfam\grttfam
\font\tengrtt=kdtt10		% 10 Point Typewritter Greek Font
\font\ninegrtt=kdtt10 at 9truept%  9 Point (sim.) Typewritter Greek 
\font\eightgrtt=kdtt10 at 8truept% 8 Point (sim.) Typewritter Greek 
\hyphenchar\eightgrtt=-1 \hyphenchar\tengrtt=-1
\hyphenchar\ninegrtt=-1		% Supress Hyphenation
\def\gtt{\tengrtt\fam\grttfam}
%
% 		Greek Point Size Conventions
%		^^^^^^^^^^^^^^^^^^^^^^^^^^^^
%
\def\grtenpoint{%		GREEK TENPOINT
\gdef\t@size{\grtenpoint}% Make a note of the font size
\textfont\grfam=\tengr\scriptfont\grfam=\eightgr\scriptscriptfont\grfam=\sixgr%
\textfont\grbffam=\tengrbf\scriptfont\grbffam=\ninegrbf%
\textfont\grifam=\tengri\scriptfont\grbffam=\ninegri%
\textfont\grttfam=\tengrtt%
\textfont\grslfam=\tengrsl%
\def\gr{\fam\grfam\tengr}%		Switch for classic greek
\let\rg\gr%				Also rg for compatibility
\def\it{\fam\grifam\tengri}%		Switch for Greek Italics
\def\sl{\fam\grslfam\tengrsl}%		Switch for Greek Slanted
\def\tt{\fam\grttfam\tengrtt}%		Switch for Greek Typerwriter
\def\bf{\fam\grbffam\tengrbf}%		Switch for Greek Boldface
\let\git\it\let\gsl\sl%
\let\gbf\bf\let\gtt\tt%			Retain LaTeX compatibility
\def\rm{\fam0\tenrm}%			Switch For latin roman
\def\lit{\fam\itfam\tenit}%		Switch for latin italics
\def\lsl{\fam\slfam\tensl}%		Switch for latin slanted
\def\ltt{\fam\ttfam\tentt}%		Switch for latin typewriter
\def\lbf{\fam\bffam\tenbf}%		Switch for latin boldface
\normalbaselineskip=.6cm%		Normal Base Line distance
\setbox\strutbox=\hbox{\vrule height8.5pt width0pt depth4.5pt}%
\normalbaselines\gr%
}
\def\grninepoint{%		GREEK NINEPOINT
\gdef\t@size{\grninepoint}% Make a note of the font size
\textfont\grfam=\ninegr\scriptfont\grfam=\eightgr\scriptscriptfont\grfam=\sixgr%
\textfont\grbffam=\ninegrbf\scriptfont\grbffam=\eightgrbf%
\textfont\grifam=\ninegri\scriptfont\grbffam=\eightgri%
\textfont\grttfam=\ninegrtt%
\textfont\grslfam=\ninegrsl%
\def\gr{\fam\grfam\ninegr}%		Switch for classic greek
\let\rg\gr%				Also rg for compatibility
\def\it{\fam\grifam\ninegri}%		Switch for Greek Italics
\def\sl{\fam\grslfam\ninegrsl}%		Switch for Greek Slanted
\def\tt{\fam\grttfam\ninegrtt}%		Switch for Greek Typerwriter
\def\bf{\fam\grbffam\ninegrbf}%		Switch for Greek Boldface
\let\git\it\let\gsl\sl%
\let\gbf\bf\let\gtt\tt%			Retain LaTeX compatibility
\def\rm{\fam0\tenrm}%			Switch For latin roman
\def\lit{\fam\itfam\nineit}%		Switch for latin italics
\def\lsl{\fam\slfam\ninesl}%		Switch for latin slanted
\def\ltt{\fam\ttfam\ninett}%		Switch for latin typewriter
\def\lbf{\fam\bffam\ninebf}%		Switch for latin boldface
\normalbaselineskip=.52cm%		Normal Base Line distance
\setbox\strutbox=\hbox{\vrule height8pt width0pt depth3pt}%
\normalbaselines\gr%
}
\def\greightpoint{%		GREEK EIGHTPOINT
\gdef\t@size{\greightpoint}% Make a note of the font size
\textfont\grfam=\eightgr\scriptfont\grfam=\sixgr\scriptscriptfont\grfam=\sixgr%
\textfont\grbffam=\eightgrbf\scriptfont\grbffam=\eightgrbf%
\textfont\grifam=\eightgri\scriptfont\grbffam=\eightgri%
\textfont\grttfam=\eightgrtt%
\textfont\grslfam=\eightgrsl%
\def\gr{\fam\grfam\eightgr}%		Switch for classic greek
\let\rg\gr%				Also rg for compatibility
\def\it{\fam\grifam\eightgri}%		Switch for Greek Italics
\def\sl{\fam\grslfam\eightgrsl}%	Switch for Greek Slanted
\def\tt{\fam\grttfam\eightgrtt}%	Switch for Greek Typerwriter
\def\bf{\fam\grbffam\eightgrbf}%	Switch for Greek Boldface
\let\git\it\let\gsl\sl%
\let\gbf\bf\let\gtt\tt%			Retain LaTeX compatibility
\def\rm{\fam0\eightrm}%			Switch For latin roman
\def\lit{\fam\itfam\eightit}%		Switch for latin italics
\def\lsl{\fam\slfam\eightsl}%		Switch for latin slanted
\def\ltt{\fam\ttfam\eighttt}%		Switch for latin typewriter
\def\lbf{\fam\bffam\eightbf}%		Switch for latin boldface
\normalbaselineskip=.35cm%		Normal Base Line distance
\setbox\strutbox=\hbox{\vrule height7pt width0pt depth2pt}%
\normalbaselines\gr%
}
%
%			Hyphenation Patterns
%			^^^^^^^^^^^^^^^^^^^^
\message{hyphenation,}
%
{\language\greek
\lefthyphenmin=2 \righthyphenmin=2 % disallow x- or -x breaks
\def\lt{<}%
\def\gt{>}%
\catcode`\|=11%
\catcode`\<=11%
\catcode`\>=11%
\catcode`\'=11%
\catcode`\~=11%
\catcode`\"=11%
\lccode`\<=`\<%
\lccode`\>=`\>%
\lccode`\'=`\'%
\lccode`\~=`\~%
\lccode`\"=`\"%
\lccode`\|=`\|%
%
\input grkhyphen%
\catcode`\~=13%
}
%
\def\showgreekhyphens#1{{\setbox0\vbox{\parfillskip\z@skip\hsize\maxdimen%
\language\greek\tengr\pretolerance\m@ne\hbadness0\showboxdepth0\ #1}}}
%
%
\message{miscellaneous macros}
%
%		Macros For entering greek mode,
%		and delimiter preferences.
%		-------------------------------
%
%	\begingreek : Begin a group of Greek Text.
%	^^^^^^^^^^^^  Everything is enclosed in a group to keep
%	              changes local. Then we switch to greek hyphenation
%		      and iniciate the greekmode. This assigns the correct
%	              \catcode values to punctuation and accentuation marks.
%	              We then reload the information of the point
%	              size used last and switch to the family needed.
%	              The \t@f@nt and \t@f@m macro is used to ensure that 
%	              or fonts and families are remembered.
%
%	\endgreek :   Ends a group of Greek Text.
%	^^^^^^^^^^    Before ending the group we save information
%	              about the current font, to be used when we re-enter 
%	              greek mode.
%
%	\gr@@km@de :  Switches to greek interpretation of ascii characters
%	^^^^^^^^^^^   Normally changes are kept local but can be used
%	              as a general macro to obtain a global greek mode.
%	              Note the different use of | if this is chosen
%	              to be a delimiter.
%
\def\begingreek{\bgroup\language\greek\gr@@km@de%
\t@size\t@f@m\t@f@nt\ignorespaces}
%
\def\endgreek{\xdef\t@f@nt{\the\font}\xdef\t@f@m{\noexpand\fam\the\fam}\egroup}
%
\def\gr@@km@de{%
\ifdelimsbar\else\catcode`\|=11\fi%
\catcode`\<=11% 	Turn Everything to letters!
\catcode`\>=11% 	All accents are done through ligatures
\catcode`\'=11%
\catcode`\`=11%
\catcode`\~=11%
\catcode`\"=11%
\lccode`\<=`\<%
\lccode`\>=`\>%
\lccode`\'=`\'%
\lccode`\~=`\~%
\lccode`\"=`\"%
}
%
\def\l@tinm@de{%
\catcode`\|=12%
\catcode`\<=12% 	Turn Everything to what plain tex has
\catcode`\>=12%
\catcode`\'=12%
\catcode`\`=12%
\catcode`\~=13%
\catcode`\"=12%
\catcode`\$=3%	% Restore the math symbol!
}
%
% Switch Permenantly do greek mode
%
\def\setgreek{\delimsbarfalse\gr@@km@de\language\greek}
%
% and to latin as well
%
\def\setlatin{\l@tinm@de\language0}
%
%	It is very frequent that the user will ask to \end the document
%	before a greek group was closed. In order to prevent this we 
%	redefine the \end command after saving the old one in \@ldend.
%	The new \end checks for un-ended greek groups and if it is found
%	a warning message is issued and the group is automatically closed.
%
\let\@ldend=\end
\gdef\end{\ifnum\language=\greek\endgreek%
\showstring{GreekTeX Warning: A group of greek text was automatically closed}%
\fi\@ldend}
%
%	Since it is possible that switching from one language to
%	the other is very frequent, a special way to avoid \begingreek
%	and \endgreek is defined. This is done through the definition of
%	delimiters; available delims are | and $. If \greekdelims{bar}
%	is chosen then a greek block is marked as | ..greek text.. |
%	In order to access |, use \|.
%	If $ is used, use \math for math mode and \math\math for
%	display mode.
%
\gdef\greekdelims#1{\edef\c@mp@re{#1}\def\t@st@a{bar}\def\t@st@b{dollar}%
\ifx\c@mp@re\t@st@a\gr@@kdelimsbar\else%
\ifx\c@mp@re\t@st@b\gr@@kdelimsdol\fi\fi}
%
% 	Bar as delimeter
%
{\catcode`\|=13\gdef\gr@@kdelimsbar{\catcode`\|=13\delimsbartrue%
\def|{\ifnum\language=\greek\endgreek\else\begingreek\fi}}
}
%
%	Dollar as delimiter
%
\let\m@thm@de=$
{\catcode`\$=13%
\gdef\gr@@kdelimsdol{\catcode`\$=13%
\def${\ifnum\language=\greek\endgreek\else\begingreek\fi}%
\global\let\math=\m@thm@de%
\gdef\display{\math\math}\gdef\enddisplay{\math\math}}%
}
%
\catcode`\@=12 % at signs are no longer letters
%
\def\fmtname{greek}\def\fmtversion{3.1} % identifies the current format

\message{version \fmtversion .)}

