## This is a template to use in the creation of a plain TeX
## style file.

sub by100{
  sprintf("%3.1f", $_[0] / 100);
}

$f = "\\f";

$A = <<"EndA";
\%\% This is a plain TeX macro file for using $fontfam_ fonts
\%\% together with $_[0] math fonts.

\%\% Created by MathInst$mathinstver_ on $today at $now.

\\input pdcfsel % get Damian Cugley's macros

\\newfam\\bifam 

\%\% Special purpose fonts and templates...

EndA
  &Out($A);

$mysize = &by100($ssSF_);
($ssr, $ssri, $ssb, $ssbi) = &deduce_family_members_from_font($sansserif_);
if ($ssb) {} else { # in case bold fonts are not detected, use regular
    $ssb=$ssr;
    $ssbi=$ssri;
}

  $B = <<"EndB";
\\def\\sanstemplate{%
  \\\@\\m{rm}{$ssr}\\\@${f}{it}{$ssri}%
  \\\@${f}{bf}{$ssb}\\\@${f}{bi}{$ssbi}%
}
\\fontset{sans}\\sanstemplate{$mysize}{12pt}{}{}
\\newfam\\sffam 
\\def\\sf{\\fam\\sffam\\sansrm}\\textfont\\sffam=\\sansrm % for math

EndB
if ($sansserif_) {
  &Out($B);
}

$mysize = &by100($ttSF_);
$C = <<"EndC";
\\def\\tttemplate{%
  \\\@${f}{rm}{$tt_}%
}
\\fontset{tt}\\tttemplate{$mysize}{12pt}{}{}
\\def\\tt{\\fam\\ttfam\\ttrm}\\textfont\\ttfam = \\ttrm % for math

EndC
if (tt_) {
  &Out($C);
}

$mysize = &by100($caSF_);
$D = <<"EndD";
\\def\\caltemplate{
  \\\@${f}{rm}{$cal_}%
}
\\fontset{cal}\\caltemplate{$mysize}{12pt}{}{}
\\newfam\\calfam
\\def\\cal{\\fam\\calfam\\calrm}\\textfont\\calfam = \\calrm % for math

EndD
if ($cal_) {
  &Out($D);
}

$mysize = &by100($frSF_);
$E = <<"EndE";
\\def\\fraktemplate{
  \\\@${f}{rm}{$fraktur_}%
}
\\fontset{frak}\\fraktemplate{$mysize}{12pt}{}{}
\\newfam\\frakfam
\\def\\frak{\\fam\\frakfam\\frakrm}\\textfont\\frakfam = \\frakrm % for math

EndE
if ($fraktur_) {
  &Out($E);
} 

$mysize = &by100($bbSF_);
$F = <<"EndF";
\\def\\bbtemplate{
  \\\@${f}{rm}{$bbold_}%
}
\\fontset{bb}\\bbtemplate{$mysize}{12pt}{}{}
\\newfam\\bbfam
\\def\\bb{\\fam\\bbfam\\bbrm}\\textfont\\bbfam = \\bbrm % for math

EndF
if ($bbold_) {
  &Out($F);
}

local(@m) = ($nfssvar, $nfssvar, $nfssvar);	# default
@m = ("${mathid}7t", "${mathid}7t7", "${mathid}7t5")
  if &isvariable($greekbold_);
$G = <<"EndG";
%% Now for the usual stuff, math and roman.

\\font\\tenex=${fontfam_}${rreg}${mathid}7v at 10 pt
\\textfont3=\\tenex \\scriptfont3=\\tenex \\scriptscriptfont3=\\tenex

\\def\\texttemplate{%
  \\\@${f}{textrm}{${fontfam_}${rreg}${nfssvar}}% 
  \\\@\\M{rm}{${fontfam_}${rreg}${mathid}7t}\\\@\\M{mi}{${fontfam_}${rreg}${mathid}7m}%
  \\\@\\M{sy}{${fontfam_}${rreg}${mathid}7y}% math fonts
  \\\@\\M{it}{${fontfam_}${rreg}$rit${nfssvar}}\\\@\\m{bf}{${fontfam_}$rbold$m[0]}%
  \\\@${f}{bi}{${fontfam_}${rbold}$rit${nfssvar}}}%
\\def\\scripttemplate{%
  \\\@\\M{rm}{${fontfam_}${rreg}${mathid}7t7}\\\@\\M{mi}{${fontfam_}${rreg}${mathid}7m7}%
  \\\@\\M{sy}{${fontfam_}${rreg}${mathid}7y7}% math fonts
  \\\@\\M{it}{${fontfam_}${rreg}$rit${nfssvar}}\\\@\\m{bf}{${fontfam_}$rbold$m[1]}%
  \\\@${f}{bi}{${fontfam_}${rbold}$rit${nfssvar}}}%
\\def\\sscripttemplate{%
  \\\@\\M{rm}{${fontfam_}${rreg}${mathid}7t5}\\\@\\M{mi}{${fontfam_}${rreg}${mathid}7m5}%
  \\\@\\M{sy}{${fontfam_}${rreg}${mathid}7y5}% math fonts
  \\\@\\M{it}{${fontfam_}${rreg}$rit${nfssvar}}\\\@\\m{bf}{${fontfam_}$rbold$m[2]}%
  \\\@${f}{bi}{${fontfam_}${rbold}$rit${nfssvar}}}%
\\xfontset{scriptscript}\\sscripttemplate{5}
\\xfontset{script}\\scripttemplate{7}
\\fontset{body}\\texttemplate{10}{12pt}{script}{scriptscript}
\\fontset{heading}\\texttemplate{12}{14pt}{body}{script}
\\fontset{note}\\scripttemplate{8}{10pt}{scriptscript}{scriptscript}

%% Some miscellaneous hacks...

\\def\\l{\\char170\\relax}\\def\\L{\\char138\\relax}

\\catcode`\\\@=11 
  \\setbox0=\\hbox{\\tenex B}\\p\@renwd=\\wd0 % for \\bordermatrix
\\catcode`\\\@=12
EndG
&Out($G);
$H = <<"EndH";
\\mathchardef\\varkappa="0180
\\mathchardef\\comp="2181
\\def\\vec{\\mathaccent"717E }
\\mathchardef\\Relbar="3280
\\mathcode`\\;="6281
EndH
&Out($H) if $_[0] eq "mt";
&Out("\\def\\joinrel{\\mathrel{\\mkern-4mu}}") if $_[0] eq "lu";
&Out("\\bodyfonts");
&Out("%% Assigning skewchars...");
&Out("\\skewchar\\bodymi=127 \\skewchar\\scriptmi=127 \\skewchar\\scriptscriptmi=127");
&Out("\\skewchar\\bodysy=48  \\skewchar\\scriptsy=48  \\skewchar\\scriptscriptmi=48");
&Out("\n\\let\\tenrm=\\textrm \\textrm\n\n\\endinput");
1;