ttuning.c - plan9port - [fork] Plan 9 from user space
 (HTM) git clone git://src.adamsgaard.dk/plan9port
 (DIR) Log
 (DIR) Files
 (DIR) Refs
 (DIR) README
 (DIR) LICENSE
       ---
       ttuning.c (4445B)
       ---
            1 #include "e.h"
            2 
            3 /*
            4 
            5 This file contains parameter values for many of the
            6 tuning parameters in eqn.  Names are defined words.
            7 
            8 Strings are plugged in verbatim.
            9 Floats are usually in ems.
           10 
           11 */
           12 
           13 /* In main.c: */
           14 
           15 double        BeforeSub = 1.2;        /* line space before a subscript */
           16 double        AfterSub  = 0.2;        /* line space after a subscript */
           17 
           18 /* diacrit.c: */
           19 
           20 double        Dvshift        = 0.25;                /* vertical shift for diacriticals on tall letters */
           21 double        Dhshift = 0.025;        /* horizontal shift for tall letters */
           22 double        Dh2shift = 0.05;        /* horizontal shift for small letters */
           23 double        Dheight        = 0.25;                /* increment to height for diacriticals */
           24 double        Barv        = 0.68;                /* vertical shift for bar */
           25 double        Barh        = 0.05;                /* 1/2 horizontal shrink for bar */
           26 double        Ubarv        = 0.1;                /* shift underbar up this much ems */
           27 double        Ubarh        = 0.05;                /* 1/2 horizontal shrink for underbar */
           28 
           29 /* Also:
           30         Vec, Dyad, Hat, Tilde, Dot, Dotdot, Utilde */
           31 
           32 /* eqnbox.c: */
           33 
           34 char        *IRspace = "\\^";        /* space between italic & roman boxes */
           35 
           36 /* fat.c: */
           37 
           38 double        Fatshift = 0.05;        /* fattening shifts by Fatshift ems */
           39 
           40 /* funny.c: */
           41 
           42 int        Funnyps        = 5;                /* point size change (== 5 above) */
           43 double        Funnyht = 0.2;                /* height correction */
           44 double        Funnybase = 0.3;        /* base correction */
           45 
           46 /* integral.c: */
           47 
           48 int        Intps        = 4;                /* point size change for integral (== 4 above) */
           49 double        Intht        = 1.15;                /* ht of integral in ems */
           50 double        Intbase        = 0.3;                /* base in ems */
           51 double        Int1h        = 0.4;                /* lower limit left */
           52 double        Int1v        = 0.2;                /* lower limit down */
           53 double        Int2h        = 0.05;                /* upper limit right was 8 */
           54 double        Int2v        = 0.1;                /* upper limit up */
           55 
           56 /* matrix.c: */
           57 
           58 char        *Matspace = "\\ \\ ";        /* space between matrix columns */
           59 
           60 /* over.c: */
           61 
           62 double        Overgap        = 0.3;                /* gap between num and denom */
           63 double        Overwid        = 0.5;                /* extra width of box */
           64 double        Overline = 0.1;                /* extra length of fraction bar */
           65 
           66 /* paren.c* */
           67 
           68 double        Parenbase = 0.4;        /* shift of base for even count */
           69 double        Parenshift = 0.13;        /* how much to shift parens down in left ... */
           70                                 /* ignored unless postscript */
           71 double        Parenheight = 0.3;        /* extra height above builtups */
           72 
           73 /* pile.c: */
           74 
           75 double        Pilegap        = 0.4;                /* gap between pile elems */
           76 double        Pilebase = 0.5;                /* shift base of even # of piled elems */
           77 
           78 /* shift.c: */
           79 
           80 double        Subbase        = 0.2;                /* subscript base belowe main base */
           81 double        Supshift = 0.4;                /* superscript .4 up main box */
           82 char        *Sub1space = "\\|";        /* italic sub roman space */
           83 char        *Sup1space = "\\|";        /* italic sup roman space */
           84 char        *Sub2space = "\\^";        /* space after subscripted thing */
           85 char        *SS1space = "\\^";        /* space before sub in x sub i sup j */
           86 char        *SS2space = "\\^";        /* space before sup */
           87 
           88 /* sqrt.c: */
           89         /* sqrt is hard!  punt for now. */
           90         /* part of the problem is that every typesetter does it differently */
           91         /* and we have several typesetters to run. */
           92 
           93 /* text.c: */
           94         /* ought to be done by a table */
           95 
           96 struct tune {
           97         char        *name;
           98         char        *cval;
           99 } tune[]        ={
          100   /* diacrit.c */
          101         { "vec_def",        "\\f1\\v'-.5m'\\s-3\\(->\\s0\\v'.5m'\\fP" },      /* was \s-2 & .45m */
          102         { "dyad_def",        "\\f1\\v'-.5m'\\s-3\\z\\(<-\\|\\(->\\s0\\v'.5m'\\fP" },
          103         { "hat_def",        "\\f1\\v'-.05m'\\s+1^\\s0\\v'.05m'\\fP" },        /* was .1 */
          104         { "tilde_def",        "\\f1\\v'-.05m'\\s+1~\\s0\\v'.05m'\\fP" },
          105         { "dot_def",        "\\f1\\v'-.67m'.\\v'.67m'\\fP" },
          106         { "dotdot_def",        "\\f1\\v'-.67m'..\\v'.67m'\\fP" },
          107         { "utilde_def",        "\\f1\\v'1.0m'\\s+2~\\s-2\\v'-1.0m'\\fP" },
          108   /* funny.c */
          109         { "sum_def",        "\\|\\v'.3m'\\s+5\\(*S\\s-5\\v'-.3m'\\|" },
          110         { "union_def",        "\\|\\v'.3m'\\s+5\\(cu\\s-5\\v'-.3m'\\|" },
          111         { "inter_def",        "\\|\\v'.3m'\\s+5\\(ca\\s-5\\v'-.3m'\\|" },
          112         { "prod_def",        "\\|\\v'.3m'\\s+5\\(*P\\s-5\\v'-.3m'\\|" },
          113   /* integral.c */
          114         { "int_def",        "\\v'.1m'\\s+4\\(is\\s-4\\v'-.1m'" },
          115         { 0, 0 }
          116 };
          117 
          118 tbl        *ftunetbl[TBLSIZE];        /* user-defined names */
          119 
          120 char *ftunes[] ={        /* this table intentionally left small */
          121         "Subbase",
          122         "Supshift",
          123         0
          124 };
          125 
          126 void init_tune(void)
          127 {
          128         int i;
          129 
          130         for (i = 0; tune[i].name != NULL; i++)
          131                 install(deftbl, tune[i].name, tune[i].cval, 0);
          132         for (i = 0; ftunes[i] != NULL; i++)
          133                 install(ftunetbl, ftunes[i], (char *) 0, 0);
          134 }
          135 
          136 #define eq(s, t) (strcmp(s,t) == 0)
          137 
          138 void ftune(char *s, char *t)        /* brute force for now */
          139 {
          140         double f = atof(t);
          141         double *target;
          142 
          143         target = (double *) 0; /* gcc */
          144 
          145         while (*t == ' ' || *t == '\t')
          146                 t++;
          147         if (eq(s, "Subbase"))
          148                 target = &Subbase;
          149         else if (eq(s, "Supshift"))
          150                 target = &Supshift;
          151         if (t[0] == '+' || t[0] == '-')
          152                 *target += f;
          153         else
          154                 *target = f;
          155 }