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

View File

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