Annotation of OpenXM_contrib/gnuplot/term/pslatex.trm, Revision 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>