13e12c5d1SDavid du Colombier #include "e.h"
23e12c5d1SDavid du Colombier
33e12c5d1SDavid du Colombier /*
43e12c5d1SDavid du Colombier
53e12c5d1SDavid du Colombier This file contains parameter values for many of the
63e12c5d1SDavid du Colombier tuning parameters in eqn. Names are defined words.
73e12c5d1SDavid du Colombier
83e12c5d1SDavid du Colombier Strings are plugged in verbatim.
93e12c5d1SDavid du Colombier Floats are usually in ems.
103e12c5d1SDavid du Colombier
113e12c5d1SDavid du Colombier */
123e12c5d1SDavid du Colombier
133e12c5d1SDavid du Colombier /* In main.c: */
143e12c5d1SDavid du Colombier
153e12c5d1SDavid du Colombier double BeforeSub = 1.2; /* line space before a subscript */
163e12c5d1SDavid du Colombier double AfterSub = 0.2; /* line space after a subscript */
173e12c5d1SDavid du Colombier
183e12c5d1SDavid du Colombier /* diacrit.c: */
193e12c5d1SDavid du Colombier
203e12c5d1SDavid du Colombier double Dvshift = 0.25; /* vertical shift for diacriticals on tall letters */
213e12c5d1SDavid du Colombier double Dhshift = 0.025; /* horizontal shift for tall letters */
223e12c5d1SDavid du Colombier double Dh2shift = 0.05; /* horizontal shift for small letters */
233e12c5d1SDavid du Colombier double Dheight = 0.25; /* increment to height for diacriticals */
243e12c5d1SDavid du Colombier double Barv = 0.68; /* vertical shift for bar */
253e12c5d1SDavid du Colombier double Barh = 0.05; /* 1/2 horizontal shrink for bar */
263e12c5d1SDavid du Colombier double Ubarv = 0.1; /* shift underbar up this much ems */
273e12c5d1SDavid du Colombier double Ubarh = 0.05; /* 1/2 horizontal shrink for underbar */
283e12c5d1SDavid du Colombier
293e12c5d1SDavid du Colombier /* Also:
303e12c5d1SDavid du Colombier Vec, Dyad, Hat, Tilde, Dot, Dotdot, Utilde */
313e12c5d1SDavid du Colombier
323e12c5d1SDavid du Colombier /* eqnbox.c: */
333e12c5d1SDavid du Colombier
343e12c5d1SDavid du Colombier char *IRspace = "\\^"; /* space between italic & roman boxes */
353e12c5d1SDavid du Colombier
363e12c5d1SDavid du Colombier /* fat.c: */
373e12c5d1SDavid du Colombier
383e12c5d1SDavid du Colombier double Fatshift = 0.05; /* fattening shifts by Fatshift ems */
393e12c5d1SDavid du Colombier
403e12c5d1SDavid du Colombier /* funny.c: */
413e12c5d1SDavid du Colombier
423e12c5d1SDavid du Colombier int Funnyps = 5; /* point size change (== 5 above) */
433e12c5d1SDavid du Colombier double Funnyht = 0.2; /* height correction */
443e12c5d1SDavid du Colombier double Funnybase = 0.3; /* base correction */
453e12c5d1SDavid du Colombier
463e12c5d1SDavid du Colombier /* integral.c: */
473e12c5d1SDavid du Colombier
483e12c5d1SDavid du Colombier int Intps = 4; /* point size change for integral (== 4 above) */
493e12c5d1SDavid du Colombier double Intht = 1.15; /* ht of integral in ems */
503e12c5d1SDavid du Colombier double Intbase = 0.3; /* base in ems */
513e12c5d1SDavid du Colombier double Int1h = 0.4; /* lower limit left */
523e12c5d1SDavid du Colombier double Int1v = 0.2; /* lower limit down */
533e12c5d1SDavid du Colombier double Int2h = 0.05; /* upper limit right was 8 */
543e12c5d1SDavid du Colombier double Int2v = 0.1; /* upper limit up */
553e12c5d1SDavid du Colombier
563e12c5d1SDavid du Colombier /* matrix.c: */
573e12c5d1SDavid du Colombier
583e12c5d1SDavid du Colombier char *Matspace = "\\ \\ "; /* space between matrix columns */
593e12c5d1SDavid du Colombier
603e12c5d1SDavid du Colombier /* over.c: */
613e12c5d1SDavid du Colombier
623e12c5d1SDavid du Colombier double Overgap = 0.3; /* gap between num and denom */
633e12c5d1SDavid du Colombier double Overwid = 0.5; /* extra width of box */
643e12c5d1SDavid du Colombier double Overline = 0.1; /* extra length of fraction bar */
653e12c5d1SDavid du Colombier
663e12c5d1SDavid du Colombier /* paren.c* */
673e12c5d1SDavid du Colombier
683e12c5d1SDavid du Colombier double Parenbase = 0.4; /* shift of base for even count */
693e12c5d1SDavid du Colombier double Parenshift = 0.13; /* how much to shift parens down in left ... */
703e12c5d1SDavid du Colombier /* ignored unless postscript */
713e12c5d1SDavid du Colombier double Parenheight = 0.3; /* extra height above builtups */
723e12c5d1SDavid du Colombier
733e12c5d1SDavid du Colombier /* pile.c: */
743e12c5d1SDavid du Colombier
753e12c5d1SDavid du Colombier double Pilegap = 0.4; /* gap between pile elems */
763e12c5d1SDavid du Colombier double Pilebase = 0.5; /* shift base of even # of piled elems */
773e12c5d1SDavid du Colombier
783e12c5d1SDavid du Colombier /* shift.c: */
793e12c5d1SDavid du Colombier
803e12c5d1SDavid du Colombier double Subbase = 0.2; /* subscript base belowe main base */
813e12c5d1SDavid du Colombier double Supshift = 0.4; /* superscript .4 up main box */
823e12c5d1SDavid du Colombier char *Sub1space = "\\|"; /* italic sub roman space */
833e12c5d1SDavid du Colombier char *Sup1space = "\\|"; /* italic sup roman space */
843e12c5d1SDavid du Colombier char *Sub2space = "\\^"; /* space after subscripted thing */
853e12c5d1SDavid du Colombier char *SS1space = "\\^"; /* space before sub in x sub i sup j */
863e12c5d1SDavid du Colombier char *SS2space = "\\^"; /* space before sup */
873e12c5d1SDavid du Colombier
883e12c5d1SDavid du Colombier /* sqrt.c: */
893e12c5d1SDavid du Colombier /* sqrt is hard! punt for now. */
903e12c5d1SDavid du Colombier /* part of the problem is that every typesetter does it differently */
913e12c5d1SDavid du Colombier /* and we have several typesetters to run. */
923e12c5d1SDavid du Colombier
933e12c5d1SDavid du Colombier /* text.c: */
943e12c5d1SDavid du Colombier /* ought to be done by a table */
953e12c5d1SDavid du Colombier
963e12c5d1SDavid du Colombier struct tune {
973e12c5d1SDavid du Colombier char *name;
983e12c5d1SDavid du Colombier char *cval;
993e12c5d1SDavid du Colombier } tune[] ={
1003e12c5d1SDavid du Colombier /* diacrit.c */
1013e12c5d1SDavid du Colombier "vec_def", "\\f1\\v'-.5m'\\s-3\\(->\\s0\\v'.5m'\\fP", /* was \s-2 & .45m */
1023e12c5d1SDavid du Colombier "dyad_def", "\\f1\\v'-.5m'\\s-3\\z\\(<-\\|\\(->\\s0\\v'.5m'\\fP",
1033e12c5d1SDavid du Colombier "hat_def", "\\f1\\v'-.05m'\\s+1^\\s0\\v'.05m'\\fP", /* was .1 */
1043e12c5d1SDavid du Colombier "tilde_def", "\\f1\\v'-.05m'\\s+1~\\s0\\v'.05m'\\fP",
1053e12c5d1SDavid du Colombier "dot_def", "\\f1\\v'-.67m'.\\v'.67m'\\fP",
1063e12c5d1SDavid du Colombier "dotdot_def", "\\f1\\v'-.67m'..\\v'.67m'\\fP",
1073e12c5d1SDavid du Colombier "utilde_def", "\\f1\\v'1.0m'\\s+2~\\s-2\\v'-1.0m'\\fP",
1083e12c5d1SDavid du Colombier /* funny.c */
1093e12c5d1SDavid du Colombier "sum_def", "\\|\\v'.3m'\\s+5\\(*S\\s-5\\v'-.3m'\\|",
1103e12c5d1SDavid du Colombier "union_def", "\\|\\v'.3m'\\s+5\\(cu\\s-5\\v'-.3m'\\|",
1113e12c5d1SDavid du Colombier "inter_def", "\\|\\v'.3m'\\s+5\\(ca\\s-5\\v'-.3m'\\|",
1123e12c5d1SDavid du Colombier "prod_def", "\\|\\v'.3m'\\s+5\\(*P\\s-5\\v'-.3m'\\|",
1133e12c5d1SDavid du Colombier /* integral.c */
1143e12c5d1SDavid du Colombier "int_def", "\\v'.1m'\\s+4\\(is\\s-4\\v'-.1m'",
1153e12c5d1SDavid du Colombier 0, 0
1163e12c5d1SDavid du Colombier };
1173e12c5d1SDavid du Colombier
1183e12c5d1SDavid du Colombier tbl *ftunetbl[TBLSIZE]; /* user-defined names */
1193e12c5d1SDavid du Colombier
1203e12c5d1SDavid du Colombier char *ftunes[] ={ /* this table intentionally left small */
1213e12c5d1SDavid du Colombier "Subbase",
1223e12c5d1SDavid du Colombier "Supshift",
1233e12c5d1SDavid du Colombier 0
1243e12c5d1SDavid du Colombier };
1253e12c5d1SDavid du Colombier
init_tune(void)1263e12c5d1SDavid du Colombier void init_tune(void)
1273e12c5d1SDavid du Colombier {
1283e12c5d1SDavid du Colombier int i;
1293e12c5d1SDavid du Colombier
1303e12c5d1SDavid du Colombier for (i = 0; tune[i].name != NULL; i++)
1313e12c5d1SDavid du Colombier install(deftbl, tune[i].name, tune[i].cval, 0);
1323e12c5d1SDavid du Colombier for (i = 0; ftunes[i] != NULL; i++)
1333e12c5d1SDavid du Colombier install(ftunetbl, ftunes[i], (char *) 0, 0);
1343e12c5d1SDavid du Colombier }
1353e12c5d1SDavid du Colombier
1363e12c5d1SDavid du Colombier #define eq(s, t) (strcmp(s,t) == 0)
1373e12c5d1SDavid du Colombier
ftune(char * s,char * t)1383e12c5d1SDavid du Colombier void ftune(char *s, char *t) /* brute force for now */
1393e12c5d1SDavid du Colombier {
140*14f51593SDavid du Colombier double dummy;
1413e12c5d1SDavid du Colombier double f = atof(t);
1423e12c5d1SDavid du Colombier double *target;
1433e12c5d1SDavid du Colombier
1443e12c5d1SDavid du Colombier while (*t == ' ' || *t == '\t')
1453e12c5d1SDavid du Colombier t++;
1463e12c5d1SDavid du Colombier if (eq(s, "Subbase"))
1473e12c5d1SDavid du Colombier target = &Subbase;
1483e12c5d1SDavid du Colombier else if (eq(s, "Supshift"))
1493e12c5d1SDavid du Colombier target = &Supshift;
150*14f51593SDavid du Colombier else
151*14f51593SDavid du Colombier target = &dummy;
1523e12c5d1SDavid du Colombier if (t[0] == '+' || t[0] == '-')
1533e12c5d1SDavid du Colombier *target += f;
1543e12c5d1SDavid du Colombier else
1553e12c5d1SDavid du Colombier *target = f;
1563e12c5d1SDavid du Colombier }
157