Don't print a form feed if 'option nopage' is given.

Print the header really only once  if 'option nopage' is given.
This commit is contained in:
Holger Vogt 2025-07-27 16:38:16 +02:00
parent 68c3fc1031
commit 3d55c16531
2 changed files with 25 additions and 18 deletions

View File

@ -122,7 +122,7 @@ void
com_print(wordlist *wl) com_print(wordlist *wl)
{ {
struct dvec *v, *lv = NULL, *bv, *nv, *vecs = NULL; struct dvec *v, *lv = NULL, *bv, *nv, *vecs = NULL;
int i, j, ll, width = DEF_WIDTH, height = DEF_HEIGHT, npoints, lineno; int i, j, ll, width = DEF_WIDTH, height = DEF_HEIGHT, npoints, lineno, npages = 0;
struct pnode *pn, *names; struct pnode *pn, *names;
struct plot *p; struct plot *p;
bool col = TRUE, nobreak = FALSE, noprintscale, plotnames = FALSE; bool col = TRUE, nobreak = FALSE, noprintscale, plotnames = FALSE;
@ -292,6 +292,7 @@ com_print(wordlist *wl)
noprintscale = cp_getvar("noprintscale", CP_BOOL, NULL, 0); noprintscale = cp_getvar("noprintscale", CP_BOOL, NULL, 0);
bv = vecs; bv = vecs;
nextpage: nextpage:
npages++;
/* Make the first vector of every page be the scale... */ /* Make the first vector of every page be the scale... */
/* XXX But what if there is no scale? e.g. op, pz */ /* XXX But what if there is no scale? e.g. op, pz */
if (!noprintscale && bv->v_plot->pl_ndims) if (!noprintscale && bv->v_plot->pl_ndims)
@ -313,21 +314,24 @@ com_print(wordlist *wl)
break; break;
} }
/* Print the header on the first page only. */ /* Print the header on the first page only, if 'option nopage'. */
p = bv->v_plot; if (!ft_nopage || npages == 1) {
j = (width - (int) strlen(p->pl_title)) / 2; /* Yes, keep "(int)" */ /* print the header */
if (j < 0) p = bv->v_plot;
j = 0; j = (width - (int)strlen(p->pl_title)) / 2; /* Yes, keep "(int)" */
for (i = 0; i < j; i++) if (j < 0)
buf2[i] = ' '; j = 0;
buf2[j] = '\0'; for (i = 0; i < j; i++)
out_send(buf2); buf2[i] = ' ';
out_send(p->pl_title); buf2[j] = '\0';
out_send("\n"); out_send(buf2);
out_send(buf2); out_send(p->pl_title);
(void) sprintf(buf, "%s %s", p->pl_name, p->pl_date); out_send("\n");
out_send(buf); out_send(buf2);
out_send("\n"); (void)sprintf(buf, "%s %s", p->pl_name, p->pl_date);
out_send(buf);
out_send("\n");
}
for (i = 0; i < width; i++) for (i = 0; i < width; i++)
buf2[i] = '-'; buf2[i] = '-';
buf2[width] = '\n'; buf2[width] = '\n';
@ -403,7 +407,10 @@ com_print(wordlist *wl)
goto done; goto done;
if (j == npoints) { /* More vectors to print. */ if (j == npoints) { /* More vectors to print. */
bv = lv; bv = lv;
out_send("\f\n"); /* Form feed. */ if(nobreak)
out_send("\n"); /* return without form feed. */
else
out_send("\f\n"); /* Form feed. */
goto nextpage; goto nextpage;
} }

View File

@ -21,7 +21,7 @@ vdm 1 11 dc 0 sin(0 0.1 5meg) ac 1
vcc 8 0 12 vcc 8 0 12
vee 9 0 -12 vee 9 0 -12
.options noacct .options noacct nopage
* Analyses: * Analyses:
.tf v(5) vcm .tf v(5) vcm