=================================================================== RCS file: /home/cvs/OpenXM_contrib/gnuplot/term/Attic/pslatex.trm,v retrieving revision 1.1.1.1 retrieving revision 1.1.1.3 diff -u -p -r1.1.1.1 -r1.1.1.3 --- OpenXM_contrib/gnuplot/term/Attic/pslatex.trm 2000/01/09 17:01:15 1.1.1.1 +++ OpenXM_contrib/gnuplot/term/Attic/pslatex.trm 2003/09/15 07:09:38 1.1.1.3 @@ -1,5 +1,5 @@ /* - * $Id: pslatex.trm,v 1.1.1.1 2000/01/09 17:01:15 maekawa Exp $ + * $Id: pslatex.trm,v 1.1.1.3 2003/09/15 07:09:38 ohara Exp $ */ /* GNUPLOT - pslatex.trm */ @@ -91,8 +91,9 @@ static int PSLATEX_justify; static int PSLATEX_rotate = TRUE; static char *PSLATEX_psfile = NULL; static TBOOLEAN PSLATEX_useAuxFile = FALSE; /* do we write two files? */ -static FILE *PSLATEX_auxFile; +static FILE *PSLATEX_auxFile = NULL; static TBOOLEAN PSLATEX_output = TRUE; /* do we write LaTeX? */ +static int PSLATEX_fontsize = 0; struct text_command { int x, y, angle, justify; @@ -156,9 +157,14 @@ TERM_PUBLIC void PSLATEX_options() if (!END_OF_COMMAND) { /* We have font size specified */ struct value a; - int ps_fontsize = (int) real(const_express(&a)); - term->v_char = (unsigned int) (ps_fontsize * PS_SC); - term->h_char = (unsigned int) (ps_fontsize * PS_SC / 2); + /* Copied from latex.trm */ + PSLATEX_fontsize = (int) real(const_express(&a)); + /* + term->v_char = (unsigned int) (PSLATEX_fontsize * DOTS_PER_INCH / 72); + term->h_char = (unsigned int) (PSLATEX_fontsize * DOTS_PER_INCH / 144); + */ + term->v_char = (unsigned int) (PSLATEX_fontsize * DOTS_PER_INCH / 60); + term->h_char = (unsigned int) (PSLATEX_fontsize * DOTS_PER_INCH / 120); } /* be sure to generate an options string that PSLATEX_init understands */ @@ -167,6 +173,11 @@ TERM_PUBLIC void PSLATEX_options() ps_solid ? "solid" : "dashed", PSLATEX_rotate ? "rotate" : "norotate", PSLATEX_useAuxFile ? " auxfile" : ""); + if (PSLATEX_fontsize) { + char fs[8] = ""; + sprintf(fs," %d", PSLATEX_fontsize); + strcat(term_options, fs); + } } TERM_PUBLIC void PSLATEX_init() @@ -176,34 +187,41 @@ TERM_PUBLIC void PSLATEX_init() if (strcmp(term->name, "pstex") == 0) PSLATEX_output = FALSE; - PSLATEX_auxFile = NULL; /* until we know otherwise */ + /* until we know otherwise */ + PSLATEX_auxFile = NULL; + /* dont tweak PSLATEX_useAuxFile if we decide we cannot comply * since this affects subsequent plots even after a set out * Instead, we will use PSLATEX_auxFile != NULL to indicate * use of an aux file */ + /* if there's no extension, append ".ps" */ + if (outstr && (dotIndex = strrchr(outstr, '.')) == NULL) + dotIndex = strchr(outstr, NUL); + /* try to open the auxiliary file for the postscript parts. */ - if (outstr && PSLATEX_useAuxFile == TRUE && - (dotIndex = strrchr(outstr, '.'))) { + if (outstr && PSLATEX_useAuxFile == TRUE) { - /* assume file name is ending in ".tex" */ - if (PSLATEX_psfile) - free(PSLATEX_psfile); - PSLATEX_psfile = gp_alloc(dotIndex - outstr + 3, "pslatex aux filename"); + /* length of outstr plus ('.' or '\0') plus "ps" plus '\0' */ + PSLATEX_psfile = gp_realloc (PSLATEX_psfile,(dotIndex - outstr) + 4,"pslatex aux filename"); if (PSLATEX_psfile) { - /* including . */ - safe_strncpy(PSLATEX_psfile, outstr, dotIndex - outstr + 1); - strcpy(PSLATEX_psfile + (dotIndex - outstr) + 1, "ps"); - if ((PSLATEX_auxFile = fopen(PSLATEX_psfile, "w")) == (FILE *) NULL) { + /* include period or '\0' */ + strncpy(PSLATEX_psfile, outstr, (dotIndex - outstr) + 1); + /* period or '\0' is overwritten with period, and "ps" appended */ + strcpy(PSLATEX_psfile + (dotIndex - outstr), ".ps"); + PSLATEX_auxFile = fopen(PSLATEX_psfile, "w"); + if (PSLATEX_auxFile == (FILE *) NULL) { fprintf(stderr, "Cannot open aux file %s for output\n", PSLATEX_psfile); + /* And what? Error handling????? */ } } else { fprintf(stderr, "\ Cannot make PostScript file name from %s\n\ Turning off auxfile option\n", outstr); PSLATEX_auxFile = NULL; + /* NEW! */ PSLATEX_useAuxFile = FALSE; } } if (PSLATEX_output) { @@ -253,11 +271,13 @@ Turning off auxfile option\n", outstr); if (PSLATEX_auxFile) { FILE *tmp = gpoutfile; gpoutfile = PSLATEX_auxFile; - PS_common_init(1, 1, 0, 0, 0, xmin_t, ymin_t, xmax_t, ymax_t, NULL); + PS_common_init(0, 1, 0, 0, 0, + xmin_t, ymin_t, xmax_t, ymax_t, NULL); gpoutfile = tmp; } else { fputs("{\\GNUPLOTspecial{!\n", gpoutfile); - PS_common_init(1, 1, 0, 0, 0, xmin_t, ymin_t, xmax_t, ymax_t, NULL); + PS_common_init(0, 1, 0, 0, 0, + xmin_t, ymin_t, xmax_t, ymax_t, NULL); fputs("}}%\n", gpoutfile); } } @@ -272,24 +292,39 @@ TERM_PUBLIC void PSLATEX_graphics() struct termentry *t = term; if (PSLATEX_output) - fprintf(gpoutfile, "\\begin{picture}(%d,%d)(0,0)%%\n", (int) (xsize * t->xmax), (int) - (ysize * t->ymax)); + fprintf(gpoutfile, "\\begin{picture}(%d,%d)(0,0)%%\n", + (int) (xsize * t->xmax), (int) (ysize * t->ymax)); else - fprintf(gpoutfile, "\\GNUPLOTpicture(%d,%d)\n", (int) (xsize * t->xmax), (int) (ysize * t->ymax)); + fprintf(gpoutfile, "\\GNUPLOTpicture(%d,%d)\n", + (int) (xsize * t->xmax), (int) (ysize * t->ymax)); if (PSLATEX_auxFile) { FILE *tmp; - /* - * these are taken from the post.trm file computation - * of the bounding box, but without the X_OFF and Y_OFF - */ - int urx = (int) (xsize * (PS_XMAX) / PS_SC + 0.5), ury = (int) (ysize * (PS_YMAX) / PS_SC - + 0.5); + /* these are taken from the post.trm file computation + * of the bounding box, but without the X_OFF and Y_OFF */ + int urx = (int) (xsize * (PSLATEX_XMAX) / PS_SC + 0.5); + int ury = (int) (ysize * (PSLATEX_YMAX) / PS_SC + 0.5); + /* moved this code here from beginning of the function + * PSLATEX_psfile is only != NULL with the `auxfile' option */ + char *psfile_basename = strrchr(PSLATEX_psfile, DIRSEP1); + if (psfile_basename) + psfile_basename++; + else { + if (DIRSEP2 != NUL) { + psfile_basename = strrchr(PSLATEX_psfile, DIRSEP2); + if (psfile_basename) + psfile_basename++; + else + psfile_basename = PSLATEX_psfile; + } else + psfile_basename = PSLATEX_psfile; + } + /* generate special which xdvi and dvips can handle */ fprintf(gpoutfile, "\\special{psfile=%s llx=0 lly=0 urx=%d ury=%d rwi=%d}\n", - PSLATEX_psfile, urx, ury, 10 * urx); + psfile_basename, urx, ury, 10 * urx); tmp = gpoutfile; gpoutfile = PSLATEX_auxFile; PS_graphics(); @@ -367,6 +402,13 @@ TERM_PUBLIC void PSLATEX_text() fputs("}}%\n", gpoutfile); } + if (PSLATEX_fontsize) { + if (PSLATEX_output) + fprintf(gpoutfile, "\\fontsize{%d}{\\baselineskip}\\selectfont\n", + PSLATEX_fontsize); + /* Should have an else clause here to handle pstex equivalent */ + } + for (tc = PSLATEX_labels; tc != (struct text_command *) NULL; tc = tc->next) { fprintf(gpoutfile, "\\put(%d,%d){", tc->x, tc->y); if (PSLATEX_output && @@ -594,16 +636,16 @@ START_HELP(pslatex) "", " is either `color` or `monochrome`. is either `rotate` or", " `norotate` and determines if the y-axis label is rotated. is", -" used to scale the font from its usual size.", +" the size (in pts) of the desired font.", "", " If `auxfile` is specified, it directs the driver to put the PostScript", " commands into an auxiliary file instead of directly into the LaTeX file.", " This is useful if your pictures are large enough that dvips cannot handle", " them. The name of the auxiliary PostScript file is derived from the name of", " the TeX file given on the `set output` command; it is determined by replacing", -" the trailing `.tex` (actually just the final extent in the file name---and", -" the option will be turned off if there is no extent) with `.ps` in the output", -" file name. Remember to close the file before leaving `gnuplot`.", +" the trailing `.tex` (actually just the final extent in the file name) with", +" `.ps` in the output file name, or, if the TeX file has no extension, `.ps`", +" is appended. Remember to close the file before leaving `gnuplot`.", "", " All drivers for LaTeX offer a special way of controlling text positioning:", " If any text string begins with '{', you also need to include a '}' at the", @@ -626,7 +668,7 @@ START_HELP(pslatex) " Specify own positioning (top here):", " set xlabel '[t]{\\LaTeX\\ -- $ \\gamma $}'", " The other label -- account for long ticlabels:", -" set ylabel '[r]{\\LaTeX\\ -- $ \\gamma $\\rule{7mm}{0pt}'", +" set ylabel '[r]{\\LaTeX\\ -- $ \\gamma $\\rule{7mm}{0pt}}'", "", " Linewidths and pointsizes may be changed with `set linestyle`." END_HELP(pslatex)