[BACK]Return to pslatex.trm CVS log [TXT][DIR] Up to [local] / OpenXM_contrib / gnuplot / term

Annotation of OpenXM_contrib/gnuplot/term/pslatex.trm, Revision 1.1.1.1

1.1       maekawa     1: /*
                      2:  * $Id: pslatex.trm,v 1.35 1998/06/18 14:59:24 ddenholm Exp $
                      3:  */
                      4:
                      5: /* GNUPLOT - pslatex.trm */
                      6:
                      7: /*[
                      8:  * Copyright 1990 - 1993, 1998
                      9:  *
                     10:  * Permission to use, copy, and distribute this software and its
                     11:  * documentation for any purpose with or without fee is hereby granted,
                     12:  * provided that the above copyright notice appear in all copies and
                     13:  * that both that copyright notice and this permission notice appear
                     14:  * in supporting documentation.
                     15:  *
                     16:  * Permission to modify the software is granted, but not the right to
                     17:  * distribute the complete modified source code.  Modifications are to
                     18:  * be distributed as patches to the released version.  Permission to
                     19:  * distribute binaries produced by compiling modified sources is granted,
                     20:  * provided you
                     21:  *   1. distribute the corresponding source modifications from the
                     22:  *    released version in the form of a patch file along with the binaries,
                     23:  *   2. add special version identification to distinguish your version
                     24:  *    in addition to the base release version number,
                     25:  *   3. provide your name and address as the primary contact for the
                     26:  *    support of your modified version, and
                     27:  *   4. retain our contact information in regard to use of the base
                     28:  *    software.
                     29:  * Permission to distribute the released version of the source code along
                     30:  * with corresponding source modifications in the form of a patch file is
                     31:  * granted with same provisions 2 through 4 for binary distributions.
                     32:  *
                     33:  * This software is provided "as is" without express or implied warranty
                     34:  * to the extent permitted by applicable law.
                     35: ]*/
                     36:
                     37: /*
                     38:  * This file is included by ../term.c.
                     39:  *
                     40:  * This file supplies the terminal drivers:
                     41:  *     pslatex --latex with embedded postscript
                     42:  *     pstex   --plain TeX with embedded postscript
                     43:  *
                     44:  * AUTHORS
                     45:  *  George Phillips
                     46:  *  Russell Lang
                     47:  *  David Kotz
                     48:  *
                     49:  * send your comments or suggestions to (info-gnuplot@dartmouth.edu).
                     50:  */
                     51:
                     52: #include "driver.h"
                     53:
                     54: #ifdef TERM_REGISTER
                     55: register_term(pslatex)
                     56: register_term(pstex)
                     57: #endif
                     58:
                     59: #ifdef TERM_PROTO
                     60: TERM_PUBLIC void PSLATEX_options __PROTO((void));
                     61: TERM_PUBLIC void PSLATEX_init __PROTO((void));
                     62: TERM_PUBLIC void PSLATEX_graphics __PROTO((void));
                     63: TERM_PUBLIC void PSLATEX_put_text __PROTO((unsigned int x, unsigned int y, char str[]));
                     64: TERM_PUBLIC int PSLATEX_justify_text __PROTO((enum JUSTIFY mode));
                     65: TERM_PUBLIC int PSLATEX_text_angle __PROTO((int ang));
                     66: TERM_PUBLIC void PSLATEX_reset __PROTO((void));
                     67: TERM_PUBLIC void PSLATEX_text __PROTO((void));
                     68: TERM_PUBLIC void PSLATEX_move __PROTO((unsigned int x, unsigned int y));
                     69: TERM_PUBLIC void PSLATEX_vector __PROTO((unsigned int x, unsigned int y));
                     70: TERM_PUBLIC void PSLATEX_linetype __PROTO((int lt));
                     71: TERM_PUBLIC void PSLATEX_point __PROTO((unsigned int x, unsigned int y, int number));
                     72: TERM_PUBLIC void PSLATEX_pointsize __PROTO((double size));
                     73: TERM_PUBLIC void PSLATEX_linewidth __PROTO((double width));
                     74:
                     75: #define PSLATEX_XMAX (5*720)
                     76: #define PSLATEX_YMAX (3*720)
                     77:
                     78: /* 10 pt char is about 10 pts high (say) */
                     79: #define PSLATEX_VCHAR (100)
                     80: /* 10 pt char is about 6 pts wide (say) */
                     81: /* I find about 5 points (output from test) - div */
                     82: #define PSLATEX_HCHAR (50)
                     83: #define GOT_PSLATEX_PROTO
                     84: #endif
                     85:
                     86: #ifndef TERM_PROTO_ONLY
                     87:
                     88: #ifdef TERM_BODY
                     89: static int PSLATEX_angle;
                     90: static int PSLATEX_justify;
                     91: static int PSLATEX_rotate = TRUE;
                     92: static char *PSLATEX_psfile = NULL;
                     93: static TBOOLEAN PSLATEX_useAuxFile = FALSE;    /* do we write two files? */
                     94: static FILE *PSLATEX_auxFile;
                     95: static TBOOLEAN PSLATEX_output = TRUE; /* do we write LaTeX? */
                     96:
                     97: struct text_command {
                     98:     int x, y, angle, justify;
                     99:     char *label;
                    100:     struct text_command *next;
                    101: };
                    102:
                    103: static struct text_command *PSLATEX_labels;
                    104:
                    105: TERM_PUBLIC void PSLATEX_options()
                    106: {
                    107:     if (!END_OF_COMMAND) {
                    108:        if (almost_equals(c_token, "d$efault")) {
                    109:            ps_color = FALSE;
                    110:            ps_solid = FALSE;
                    111:            PSLATEX_rotate = TRUE;
                    112:            PSLATEX_useAuxFile = FALSE;
                    113:            c_token++;
                    114:        }
                    115:     }
                    116:     if (!END_OF_COMMAND) {
                    117:        if (almost_equals(c_token, "c$olor")
                    118:            || almost_equals(c_token, "c$olour")) {
                    119:            ps_color = TRUE;
                    120:            c_token++;
                    121:        }
                    122:     }
                    123:     if (!END_OF_COMMAND) {
                    124:        if (almost_equals(c_token, "m$onochrome")) {
                    125:            ps_color = FALSE;
                    126:            c_token++;
                    127:        }
                    128:     }
                    129:     if (!END_OF_COMMAND) {
                    130:        if (almost_equals(c_token, "so$lid")) {
                    131:            ps_solid = TRUE;
                    132:            c_token++;
                    133:        } else if (almost_equals(c_token, "da$shed")) {
                    134:            ps_solid = FALSE;
                    135:            c_token++;
                    136:        }
                    137:     }
                    138:     if (!END_OF_COMMAND) {
                    139:        if (almost_equals(c_token, "r$otate")) {
                    140:            PSLATEX_rotate = TRUE;
                    141:            c_token++;
                    142:        }
                    143:     }
                    144:     if (!END_OF_COMMAND) {
                    145:        if (almost_equals(c_token, "n$orotate")) {
                    146:            PSLATEX_rotate = FALSE;
                    147:            c_token++;
                    148:        }
                    149:     }
                    150:     if (!END_OF_COMMAND) {
                    151:        if (almost_equals(c_token, "a$uxfile")) {
                    152:            PSLATEX_useAuxFile = TRUE;
                    153:            c_token++;
                    154:        }
                    155:     }
                    156:     if (!END_OF_COMMAND) {
                    157:        /* We have font size specified */
                    158:        struct value a;
                    159:        int ps_fontsize = (int) real(const_express(&a));
                    160:        term->v_char = (unsigned int) (ps_fontsize * PS_SC);
                    161:        term->h_char = (unsigned int) (ps_fontsize * PS_SC / 2);
                    162:     }
                    163:     /* be sure to generate an options string that PSLATEX_init understands */
                    164:
                    165:     sprintf(term_options, "%s %s %s%s",
                    166:            ps_color ? "color" : "monochrome",
                    167:            ps_solid ? "solid" : "dashed",
                    168:            PSLATEX_rotate ? "rotate" : "norotate",
                    169:            PSLATEX_useAuxFile ? " auxfile" : "");
                    170: }
                    171:
                    172: TERM_PUBLIC void PSLATEX_init()
                    173: {
                    174:     char *dotIndex;
                    175:
                    176:     if (strcmp(term->name, "pstex") == 0)
                    177:        PSLATEX_output = FALSE;
                    178:
                    179:     PSLATEX_auxFile = NULL;    /* until we know otherwise */
                    180:     /* dont tweak PSLATEX_useAuxFile if we decide we cannot comply
                    181:      * since this affects subsequent plots even after a set out
                    182:      * Instead, we will use PSLATEX_auxFile != NULL to indicate
                    183:      * use of an aux file
                    184:      */
                    185:
                    186:     /* try to open the auxiliary file for the postscript parts. */
                    187:     if (outstr && PSLATEX_useAuxFile == TRUE &&
                    188:        (dotIndex = strrchr(outstr, '.'))) {
                    189:
                    190:        /* assume file name is ending in ".tex" */
                    191:        if (PSLATEX_psfile)
                    192:            free(PSLATEX_psfile);
                    193:        PSLATEX_psfile = gp_alloc(dotIndex - outstr + 3, "pslatex aux filename");
                    194:        if (PSLATEX_psfile) {
                    195:        /* including . */
                    196:            safe_strncpy(PSLATEX_psfile, outstr, dotIndex - outstr + 1);
                    197:            strcpy(PSLATEX_psfile + (dotIndex - outstr) + 1, "ps");
                    198:            if ((PSLATEX_auxFile = fopen(PSLATEX_psfile, "w")) == (FILE *) NULL) {
                    199:                fprintf(stderr, "Cannot open aux file %s for output\n",
                    200:                        PSLATEX_psfile);
                    201:            }
                    202:        } else {
                    203:            fprintf(stderr, "\
                    204: Cannot make PostScript file name from %s\n\
                    205: Turning off auxfile option\n", outstr);
                    206:            PSLATEX_auxFile = NULL;
                    207:        }
                    208:     }
                    209:     if (PSLATEX_output) {
                    210:        fputs("\
                    211: % GNUPLOT: LaTeX picture with Postscript\n\
                    212: \\begingroup%\n\
                    213:   \\makeatletter%\n\
                    214:   \\newcommand{\\GNUPLOTspecial}{%\n\
                    215:     \\@sanitize\\catcode`\\%=14\\relax\\special}%\n\
                    216:   \\setlength{\\unitlength}{0.1bp}%\n", gpoutfile);
                    217:     } else {
                    218:
                    219:        /* write plain TeX header */
                    220:
                    221:        fputs("\
                    222: % GNUPLOT: plain TeX with Postscript\n\
                    223: \\begingroup\n\
                    224:   \\catcode`\\@=11\\relax\n\
                    225:   \\def\\GNUPLOTspecial{%\n\
                    226:     \\def\\do##1{\\catcode`##1=12\\relax}\\dospecials\n\
                    227:     \\catcode`\\{=1\\catcode`\\}=2\\catcode\\%=14\\relax\\special}%\n\
                    228: %\n\
                    229: \\expandafter\\ifx\\csname GNUPLOTpicture\\endcsname\\relax\n\
                    230:   \\csname newdimen\\endcsname\\GNUPLOTunit\n\
                    231:   \\gdef\\GNUPLOTpicture(#1,#2){\\vbox to#2\\GNUPLOTunit\\bgroup\n\
                    232:     \\def\\put(##1,##2)##3{\\unskip\\raise##2\\GNUPLOTunit\n\
                    233:       \\hbox to0pt{\\kern##1\\GNUPLOTunit ##3\\hss}\\ignorespaces}%\n\
                    234:     \\def\\ljust##1{\\vbox to0pt{\\vss\\hbox to0pt{##1\\hss}\\vss}}%\n\
                    235:     \\def\\cjust##1{\\vbox to0pt{\\vss\\hbox to0pt{\\hss ##1\\hss}\\vss}}%\n\
                    236:     \\def\\rjust##1{\\vbox to0pt{\\vss\\hbox to0pt{\\hss ##1}\\vss}}%\n\
                    237:     \\def\\stack##1{\\let\\\\=\\cr\\tabskip=0pt\\halign{\\hfil ####\\hfil\\cr ##1\\crcr}}%\n\
                    238:     \\def\\lstack##1{\\hbox to0pt{\\vbox to0pt{\\vss\\stack{##1}}\\hss}}%\n\
                    239:     \\def\\cstack##1{\\hbox to0pt{\\hss\\vbox to0pt{\\vss\\stack{##1}}\\hss}}%\n\
                    240:     \\def\\rstack##1{\\hbox to0pt{\\vbox to0pt{\\stack{##1}\\vss}\\hss}}%\n\
                    241:     \\vss\\hbox to#1\\GNUPLOTunit\\bgroup\\ignorespaces}%\n\
                    242:   \\gdef\\endGNUPLOTpicture{\\hss\\egroup\\egroup}%\n\
                    243: \\fi\n\
                    244: \\GNUPLOTunit=0.1bp\n", gpoutfile);
                    245:     }
                    246:
                    247:     {
                    248:        unsigned int xmin_t = xoffset * PSLATEX_XMAX / PS_SC;
                    249:        unsigned int xmax_t = (xoffset + xsize) * PSLATEX_XMAX / PS_SC;
                    250:        unsigned int ymin_t = yoffset * PSLATEX_YMAX / PS_SC;
                    251:        unsigned int ymax_t = (yoffset + ysize) * PSLATEX_YMAX / PS_SC;
                    252:
                    253:        if (PSLATEX_auxFile) {
                    254:            FILE *tmp = gpoutfile;
                    255:            gpoutfile = PSLATEX_auxFile;
                    256:            PS_common_init(1, 1, 0, 0, 0, xmin_t, ymin_t, xmax_t, ymax_t, NULL);
                    257:            gpoutfile = tmp;
                    258:        } else {
                    259:            fputs("{\\GNUPLOTspecial{!\n", gpoutfile);
                    260:            PS_common_init(1, 1, 0, 0, 0, xmin_t, ymin_t, xmax_t, ymax_t, NULL);
                    261:            fputs("}}%\n", gpoutfile);
                    262:        }
                    263:     }
                    264:
                    265:     PSLATEX_angle = 0;
                    266:     PSLATEX_justify = 0;
                    267:     PSLATEX_labels = 0;
                    268: }
                    269:
                    270: TERM_PUBLIC void PSLATEX_graphics()
                    271: {
                    272:     struct termentry *t = term;
                    273:
                    274:     if (PSLATEX_output)
                    275:        fprintf(gpoutfile, "\\begin{picture}(%d,%d)(0,0)%%\n", (int) (xsize * t->xmax), (int)
                    276:                (ysize * t->ymax));
                    277:     else
                    278:        fprintf(gpoutfile, "\\GNUPLOTpicture(%d,%d)\n", (int) (xsize * t->xmax), (int) (ysize * t->ymax));
                    279:
                    280:     if (PSLATEX_auxFile) {
                    281:        FILE *tmp;
                    282:        /*
                    283:         * these are taken from the post.trm file computation
                    284:         * of the bounding box, but without the X_OFF and Y_OFF
                    285:         */
                    286:        int urx = (int) (xsize * (PS_XMAX) / PS_SC + 0.5), ury = (int) (ysize * (PS_YMAX) / PS_SC
                    287:                                                                        + 0.5);
                    288:
                    289:        /* generate special which xdvi and dvips can handle */
                    290:        fprintf(gpoutfile,
                    291:                "\\special{psfile=%s llx=0 lly=0 urx=%d ury=%d rwi=%d}\n",
                    292:                PSLATEX_psfile, urx, ury, 10 * urx);
                    293:        tmp = gpoutfile;
                    294:        gpoutfile = PSLATEX_auxFile;
                    295:        PS_graphics();
                    296:        gpoutfile = tmp;
                    297:     } else {
                    298:        fputs("{\\GNUPLOTspecial{\"\n", gpoutfile);
                    299:        PS_graphics();
                    300:     }
                    301:
                    302:     PSLATEX_labels = (struct text_command *) NULL;
                    303: }
                    304:
                    305: TERM_PUBLIC void PSLATEX_put_text(x, y, str)
                    306: unsigned int x, y;
                    307: char str[];
                    308: {
                    309:     struct text_command *tc;
                    310:
                    311:     /* ignore empty strings */
                    312:     if (str[0] == NUL)
                    313:        return;
                    314:
                    315:     tc = (struct text_command *) gp_alloc(sizeof(struct text_command), term->name);
                    316:     tc->x = x;
                    317:     tc->y = y;
                    318:     tc->label = (char *) gp_alloc(strlen(str) + 1, term->name);
                    319:     strcpy(tc->label, str);
                    320:     tc->justify = PSLATEX_justify;
                    321:     tc->angle = PSLATEX_angle;
                    322:
                    323:     tc->next = PSLATEX_labels;
                    324:     PSLATEX_labels = tc;
                    325: }
                    326:
                    327: TERM_PUBLIC int PSLATEX_justify_text(mode)
                    328: enum JUSTIFY mode;
                    329: {
                    330:     PSLATEX_justify = mode;
                    331:     return TRUE;
                    332: }
                    333:
                    334: TERM_PUBLIC int PSLATEX_text_angle(ang)
                    335: int ang;
                    336: {
                    337:     /* rotated text is put in a short stack, and optionally uses
                    338:      * postscript specials depending on PSLATEX_rotate */
                    339:     PSLATEX_angle = ang;
                    340:     return TRUE;
                    341: }
                    342:
                    343:
                    344: TERM_PUBLIC void PSLATEX_reset()
                    345: {
                    346:     if (PSLATEX_auxFile) {
                    347:        fclose(PSLATEX_auxFile);
                    348:        PSLATEX_auxFile = NULL;
                    349:     }
                    350:     if (PSLATEX_psfile) {
                    351:        free(PSLATEX_psfile);
                    352:        PSLATEX_psfile = NULL;
                    353:     }
                    354: }
                    355:
                    356: TERM_PUBLIC void PSLATEX_text()
                    357: {
                    358:     struct text_command *tc;
                    359:
                    360:     if (PSLATEX_auxFile) {
                    361:        FILE *tmp = gpoutfile;
                    362:        gpoutfile = PSLATEX_auxFile;
                    363:        PS_text();
                    364:        gpoutfile = tmp;
                    365:     } else {
                    366:        PS_text();
                    367:        fputs("}}%\n", gpoutfile);
                    368:     }
                    369:
                    370:     for (tc = PSLATEX_labels; tc != (struct text_command *) NULL; tc = tc->next) {
                    371:        fprintf(gpoutfile, "\\put(%d,%d){", tc->x, tc->y);
                    372:        if (PSLATEX_output &&
                    373:            ((tc->label[0] == '{') || (tc->label[0] == '['))) {
                    374:            fprintf(gpoutfile, "\\makebox(0,0)%s", tc->label);
                    375:        } else
                    376:            switch (tc->angle) {
                    377:            case 0:
                    378:                switch (tc->justify) {
                    379:                case LEFT:
                    380:                    fprintf(gpoutfile, (PSLATEX_output
                    381:                                        ? "\\makebox(0,0)[l]{%s}"
                    382:                                        : "\\ljust{%s}"), tc->label);
                    383:                    break;
                    384:                case CENTRE:
                    385:                    fprintf(gpoutfile, (PSLATEX_output
                    386:                                        ? "\\makebox(0,0){%s}"
                    387:                                        : "\\cjust{%s}"), tc->label);
                    388:                    break;
                    389:                case RIGHT:
                    390:                    fprintf(gpoutfile, (PSLATEX_output
                    391:                                        ? "\\makebox(0,0)[r]{%s}"
                    392:                                        : "\\rjust{%s}"), tc->label);
                    393:                    break;
                    394:                }
                    395:                break;
                    396:            case 1:             /* put text in a short stack */
                    397:                if (PSLATEX_rotate) {
                    398:                    fputs("\
                    399: %\n\\special{ps: gsave currentpoint currentpoint translate\n\
                    400: 270 rotate neg exch neg exch translate}%\n", gpoutfile);
                    401:                }
                    402:                switch (tc->justify) {
                    403:                case LEFT:
                    404:                    fprintf(gpoutfile, (PSLATEX_output
                    405:                                        ? "\\makebox(0,0)[lb]{\\shortstack{%s}}"
                    406:                                        : "\\lstack{%s}"),
                    407:                            tc->label);
                    408:                    break;
                    409:                case CENTRE:
                    410:                    fprintf(gpoutfile, (PSLATEX_output
                    411:                                        ? "\\makebox(0,0)[b]{\\shortstack{%s}}"
                    412:                                        : "\\cstack{%s}"),
                    413:                            tc->label);
                    414:                    break;
                    415:                case RIGHT:
                    416:                    fprintf(gpoutfile, (PSLATEX_output
                    417:                                        ? "\\makebox(0,0)[lt]{\\shortstack{%s}}"
                    418:                                        : "\\rstack{%s}"),
                    419:                            tc->label);
                    420:                    break;
                    421:                }
                    422:                if (PSLATEX_rotate) {
                    423:                    fputs("%\n\\special{ps: currentpoint grestore moveto}%\n", gpoutfile);
                    424:                }
                    425:            }
                    426:        fputs("}%\n", gpoutfile);
                    427:     }
                    428:
                    429:     while (PSLATEX_labels) {
                    430:        tc = PSLATEX_labels->next;
                    431:        free(PSLATEX_labels->label);
                    432:        free(PSLATEX_labels);
                    433:        PSLATEX_labels = tc;
                    434:     }
                    435:
                    436:     if (PSLATEX_output) {
                    437:        fputs("\
                    438: \\end{picture}%\n\
                    439: \\endgroup\n\
                    440: \\endinput\n", gpoutfile);
                    441:     } else {
                    442:        fputs("\
                    443: \\endGNUPLOTpicture\n\
                    444: \\endgroup\n\
                    445: \\endinput\n", gpoutfile);
                    446:     }
                    447: }
                    448:
                    449: TERM_PUBLIC void PSLATEX_move(x, y)
                    450: unsigned int x, y;
                    451: {
                    452:     if (PSLATEX_auxFile) {
                    453:        FILE *tmp = gpoutfile;
                    454:        gpoutfile = PSLATEX_auxFile;
                    455:        PS_move(x, y);
                    456:        gpoutfile = tmp;
                    457:     } else {
                    458:        PS_move(x, y);
                    459:     }
                    460: }
                    461:
                    462:
                    463: TERM_PUBLIC void PSLATEX_vector(x, y)
                    464: unsigned int x, y;
                    465: {
                    466:
                    467:     if (PSLATEX_auxFile) {
                    468:        FILE *tmp = gpoutfile;
                    469:        gpoutfile = PSLATEX_auxFile;
                    470:        PS_vector(x, y);
                    471:        gpoutfile = tmp;
                    472:     } else {
                    473:        PS_vector(x, y);
                    474:     }
                    475: }
                    476:
                    477:
                    478: TERM_PUBLIC void PSLATEX_linetype(lt)
                    479: int lt;
                    480: {
                    481:     if (PSLATEX_auxFile) {
                    482:        FILE *tmp = gpoutfile;
                    483:        gpoutfile = PSLATEX_auxFile;
                    484:        PS_linetype(lt);
                    485:        gpoutfile = tmp;
                    486:     } else {
                    487:        PS_linetype(lt);
                    488:     }
                    489: }
                    490:
                    491: TERM_PUBLIC void PSLATEX_point(x, y, number)
                    492: unsigned int x, y;
                    493: int number;
                    494: {
                    495:     if (PSLATEX_auxFile) {
                    496:        FILE *tmp = gpoutfile;
                    497:        gpoutfile = PSLATEX_auxFile;
                    498:        PS_point(x, y, number);
                    499:        gpoutfile = tmp;
                    500:     } else
                    501:        PS_point(x, y, number);
                    502: }
                    503:
                    504:
                    505: TERM_PUBLIC void PSLATEX_pointsize(ps)
                    506: double ps;
                    507: {
                    508:     if (PSLATEX_auxFile) {
                    509:        FILE *tmp = gpoutfile;
                    510:        gpoutfile = PSLATEX_auxFile;
                    511:        PS_pointsize(ps);
                    512:        gpoutfile = tmp;
                    513:     } else
                    514:        PS_pointsize(ps);
                    515: }
                    516:
                    517:
                    518: TERM_PUBLIC void PSLATEX_linewidth(ps)
                    519: double ps;
                    520: {
                    521:     if (PSLATEX_auxFile) {
                    522:        FILE *tmp = gpoutfile;
                    523:        gpoutfile = PSLATEX_auxFile;
                    524:        PS_linewidth(ps);
                    525:        gpoutfile = tmp;
                    526:     } else
                    527:        PS_linewidth(ps);
                    528: }
                    529:
                    530: #endif /* TERM_BODY */
                    531:
                    532: #ifdef TERM_TABLE
                    533:
                    534: #ifndef GOT_POST_PROTO
                    535: #define TERM_PROTO_ONLY
                    536: #include "post.trm"
                    537: #undef TERM_PROTO_ONLY
                    538: #endif
                    539:
                    540: TERM_TABLE_START(pslatex_driver)
                    541:     "pslatex", "LaTeX picture environment with PostScript \\specials",
                    542:     PSLATEX_XMAX, PSLATEX_YMAX, PSLATEX_VCHAR, PSLATEX_HCHAR,
                    543:     PS_VTIC, PS_HTIC, PSLATEX_options, PSLATEX_init, PSLATEX_reset,
                    544:     PSLATEX_text, null_scale, PSLATEX_graphics, PSLATEX_move,
                    545:     PSLATEX_vector, PSLATEX_linetype, PSLATEX_put_text, PSLATEX_text_angle,
                    546:     PSLATEX_justify_text, PSLATEX_point, do_arrow, set_font_null,
                    547:     PSLATEX_pointsize, 0 /*flags */ , 0 /*suspend */
                    548:     , 0 /*resume */ , 0 /*fillbox */ ,
                    549:     PSLATEX_linewidth
                    550: TERM_TABLE_END(pslatex_driver)
                    551: #undef LAST_TERM
                    552: #define LAST_TERM pslatex_driver
                    553:
                    554: TERM_TABLE_START(pstex_driver)
                    555:     "pstex", "plain TeX with PostScript \\specials",
                    556:     PSLATEX_XMAX, PSLATEX_YMAX, PSLATEX_VCHAR, PSLATEX_HCHAR,
                    557:     PS_VTIC, PS_HTIC, PSLATEX_options, PSLATEX_init, PSLATEX_reset,
                    558:     PSLATEX_text, null_scale, PSLATEX_graphics, PSLATEX_move,
                    559:     PSLATEX_vector, PSLATEX_linetype, PSLATEX_put_text, PSLATEX_text_angle,
                    560:     PSLATEX_justify_text, PSLATEX_point, do_arrow, set_font_null,
                    561:     PSLATEX_pointsize, 0 /*flags */ , 0 /*suspend */
                    562:     , 0 /*resume */ , 0 /*fillbox */ ,
                    563:     PSLATEX_linewidth
                    564: TERM_TABLE_END(pstex_driver)
                    565: #undef LAST_TERM
                    566: #define LAST_TERM pstex_driver
                    567:
                    568: #endif /* TERM_TABLE */
                    569: #endif /* TERM_PROTO_ONLY */
                    570:
                    571:
                    572: #ifdef TERM_HELP
                    573: START_HELP(pslatex)
                    574: "1 pslatex and pstex",
                    575: "?commands set terminal pslatex",
                    576: "?set terminal pslatex",
                    577: "?set term pslatex",
                    578: "?terminal pslatex",
                    579: "?term pslatex",
                    580: "?pslatex",
                    581: "?commands set terminal pstex",
                    582: "?set terminal pstex",
                    583: "?set term pstex",
                    584: "?terminal pstex",
                    585: "?term pstex",
                    586: "?pstex",
                    587: " The `pslatex` and `pstex` drivers generate output for further processing by",
                    588: " LaTeX and TeX, respectively.  Figures generated by `pstex` can be included",
                    589: " in any plain-based format (including LaTeX).",
                    590: "",
                    591: " Syntax:",
                    592: "       set terminal pslatex | |pstex {<color>} {<dashed>} {<rotate>}",
                    593: "                                     {auxfile} {<font_size>}",
                    594: "",
                    595: " <color> is either `color` or `monochrome`.  <rotate> is either `rotate` or",
                    596: " `norotate` and determines if the y-axis label is rotated.  <font_size> is",
                    597: " used to scale the font from its usual size.",
                    598: "",
                    599: " If `auxfile` is specified, it directs the driver to put the PostScript",
                    600: " commands into an auxiliary file instead of directly into the LaTeX file.",
                    601: " This is useful if your pictures are large enough that dvips cannot handle",
                    602: " them.  The name of the auxiliary PostScript file is derived from the name of",
                    603: " the TeX file given on the `set output` command; it is determined by replacing",
                    604: " the trailing `.tex` (actually just the final extent in the file name---and",
                    605: " the option will be turned off if there is no extent) with `.ps` in the output",
                    606: " file name.  Remember to close the file before leaving `gnuplot`.",
                    607: "",
                    608: " All drivers for LaTeX offer a special way of controlling text positioning:",
                    609: " If any text string begins with '{', you also need to include a '}' at the",
                    610: " end of the text, and the whole text will be centered both horizontally",
                    611: " and vertically by LaTeX. --- If the text string begins with '[', you need",
                    612: " to continue it with: a position specification (up to two out of t,b,l,r),",
                    613: " ']{', the text itself, and finally, '}'. The text itself may be anything",
                    614: " LaTeX can typeset as an LR-box. \\rule{}{}'s may help for best positioning.",
                    615: "",
                    616: " Examples:",
                    617: "       set term pslatex monochrome dashed rotate       # set to defaults",
                    618: " To write the PostScript commands into the file \"foo.ps\":",
                    619: "       set term pslatex auxfile",
                    620: "       set output \"foo.tex\"; plot ...: set output",
                    621: " About label positioning:",
                    622: " Use gnuplot defaults (mostly sensible, but sometimes not really best):",
                    623: "        set title '\\LaTeX\\ -- $ \\gamma $'",
                    624: " Force centering both horizontally and vertically:",
                    625: "        set label '{\\LaTeX\\ -- $ \\gamma $}' at 0,0",
                    626: " Specify own positioning (top here):",
                    627: "        set xlabel '[t]{\\LaTeX\\ -- $ \\gamma $}'",
                    628: " The other label -- account for long ticlabels:",
                    629: "        set ylabel '[r]{\\LaTeX\\ -- $ \\gamma $\\rule{7mm}{0pt}'",
                    630: "",
                    631: " Linewidths and pointsizes may be changed with `set linestyle`."
                    632: END_HELP(pslatex)
                    633: #endif /* TERM_HELP */

FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>