Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

Simple Calendar

136 views
Skip to first unread message

luser- -droog

unread,
May 25, 2012, 10:55:04 PM5/25/12
to
%!

/year 2012 def
/month 12 def %1 = January

%month table
/mtab [
[ (January) 31 ]
[ (February) 28 ]
[ (March) 31 ]
[ (April) 30 ]
[ (May) 31 ]
[ (June) 30 ]
[ (July) 31 ]
[ (August) 31 ]
[ (September) 30 ]
[ (October) 31 ]
[ (November) 30 ]
[ (December) 31 ]
] def

%leap year
/leap
year 4 mod 0 eq
year 100 mod 0 eq not
year 400 mod 0 eq or and
def
leap { mtab 1 get 1 29 put } if

%day of week
[ 4 2 0 6 4 2 0 6 4 2 ]
year 1700 sub 100 idiv get
year 100 mod dup 4 idiv add add
[ leap{6 2}{0 3}ifelse 3 6 1 4 6 2 5 0 3 5 ] month 1 sub get add
1 add %this part confuses me! :) i don't know why it's 1-off.
/dow exch 7 mod def

/nx 2 def %was gonna do multiple months on a page
/ny 6 def %these would be the size of the "grid"

/++ { dup load 1 add store } def
/x 10 def
/X 600 def
/y 10 def
/Y 780 def
/dx X x sub 7 idiv def
/dy Y y sub 6 idiv def

/tx 4 def
/ty -12 def
/tf /Palatino-Roman findfont 11 scalefont def
/Tx 4 def
/Ty -24 def
/Tf /Palatino-Roman findfont 22 scalefont def

/dom 1 def
tf setfont
mtab month 1 sub get aload pop {
x Y moveto
dow dx mul 0 rmoveto
dx 0 rlineto
0 dy neg rlineto
dx neg 0 rlineto
closepath
currentpoint stroke
moveto
tx ty rmoveto
dom ( ) cvs show
/dow ++
/dom ++
dow 7 ge {
/Y Y dy sub store
/dow dow 7 mod store
} if
} repeat
x Y moveto
dow dx mul 0 rmoveto
Tx Ty rmoveto
Tf setfont
show ( ) show
year ( ) cvs show
%eof

Eli the Bearded

unread,
May 26, 2012, 1:27:09 AM5/26/12
to
In comp.lang.postscript, luser- -droog <mij...@yahoo.com> wrote:
> %!
>
> /year 2012 def
> /month 12 def %1 = January

pcal not good enough for you?

Elijah
------
has printed out a new calendar every year for at least a decade

luser- -droog

unread,
May 26, 2012, 8:03:38 AM5/26/12
to
On May 26, 12:27 am, Eli the Bearded <*...@eli.users.panix.com> wrote:
> In comp.lang.postscript, luser- -droog  <mijo...@yahoo.com> wrote:
>
> > %!
>
> > /year 2012 def
> > /month 12 def %1 = January
>
> pcal not good enough for you?
>

This is the first I've heard about it. Looks good though!
I've never taken anything to a version 4.

luser- -droog

unread,
May 30, 2012, 11:46:14 AM5/30/12
to
%!
%Tiling Calendar - M. Joshua Ryan (luser...@gmail.com)
%Alter parameters to customize output
%Attempts to squeeze month name and year on first line
%if there's space.

/year 2012 def
/month 12 def %1 = January

/nx 2 def % how many months per row
/ny 2 def % how many months per col

/++ { dup load 1 add store } def
/x 10 def %LMargin
/X 600 def %RM
/y 10 def %BM
/setY { /Y 780 def } def setY %TM
/w X x sub nx idiv def %dimensions of the calendar
/h Y y sub ny idiv def
/bufx 5 def %shrink the calendar to create borders
/bufy 5 def
/dx w bufx sub 7 idiv def %size of a daybox
/dy h bufy sub 6 idiv def

/tx 3 def
/ty -10 def
/tf /Palatino-Roman findfont 9 scalefont def
/Tx 4 def
/Ty -24 def
/Tf /Palatino-Roman findfont 20 scalefont def

%month table
/initmtab {
/mtab [
[ (January) 31 ]
[ (February) 28 ]
[ (March) 31 ]
[ (April) 30 ]
[ (May) 31 ]
[ (June) 30 ]
[ (July) 31 ]
[ (August) 31 ]
[ (September) 30 ]
[ (October) 31 ]
[ (November) 30 ]
[ (December) 31 ]
] def
} def initmtab

%leap year
/checkleap {
/leap
year 4 mod 0 eq
year 100 mod 0 eq not
year 400 mod 0 eq or and
def
leap { mtab 1 get 1 29 put } if
} def checkleap

%day of week
[ 4 2 0 6 4 2 0 6 4 2 ]
year 1700 sub 100 idiv get
year 100 mod dup 4 idiv add add
[ leap{6 2}{0 3}ifelse 3 6 1 4 6 2 5 0 3 5 ] month 1 sub get add
1 add
/dow exch 7 mod def

/yearstring 4 string def
ny {
gsave
nx {
/dom 1 def
/delayname false def
/deferyear false def

mtab month 1 sub get aload pop
exch % daysinmonth monthname

x Y moveto
Tx Ty rmoveto
Tf setfont
dup stringwidth pop dow dx mul le {
show ( ) show
year yearstring cvs
dup stringwidth pop
currentpoint pop x sub add dow dx mul le {
show
}{
pop
/deferyear true store
} ifelse
%/Y Y dy sub store
}{
/delayname true store
exch % monthname daysinmonth
} ifelse

tf setfont
{
x Y moveto
dow dx mul 0 rmoveto
dx 0 rlineto
0 dy neg rlineto
dx neg 0 rlineto
closepath currentpoint stroke moveto
tx ty rmoveto
dom ( ) cvs show
/dow ++
/dom ++
dow 7 ge {
/Y Y dy sub store
/dow dow 7 mod store
} if
} repeat

delayname {
x Y moveto dow dx mul 0 rmoveto
Tx Ty rmoveto
Tf setfont
show ( ) show
year yearstring cvs show
} if

deferyear {
x Y moveto dow dx mul 0 rmoveto
Tx Ty rmoveto
Tf setfont
yearstring show
} if

w 0 translate setY
/month ++
month 13 ge {
/month month 12 sub store
/year ++
initmtab checkleap
} if
} repeat
grestore
0 h neg translate
} repeat

showpage
%eof

luser- -droog

unread,
May 30, 2012, 10:15:40 PM5/30/12
to
On May 30, 10:46 am, luser- -droog <mijo...@yahoo.com> wrote:
> [a silly program]

Darn it! Shoulda made the font-size depend on the dimensions.
And maybe a big-number/no-boxes option. Or ellipses!

many appy polly loggies, droogies.

Jeffrey H. Coffield

unread,
May 31, 2012, 9:34:49 AM5/31/12
to


On 05/30/2012 08:46 AM, luser- -droog wrote:
[cute program]

Gets an undefined error on the second page

luser- -droog

unread,
May 31, 2012, 9:23:39 PM5/31/12
to
On May 31, 8:34 am, "Jeffrey H. Coffield"
But there is no second page!

Jeffrey H. Coffield

unread,
Jun 1, 2012, 8:28:17 PM6/1/12
to
I usually run Postscript programs in emacs and hit return after each
showpage to get to the next page. The first one comes up okay, I hit
return and get an undefined error. If there is no second page, it should
not get any error.

Jeff

luser- -droog

unread,
Jun 3, 2012, 7:21:27 PM6/3/12
to
On Jun 1, 7:28 pm, "Jeffrey H. Coffield"
<jeff...@digitalsynergyinc.com> wrote:
> On 05/31/2012 06:23 PM, luser- -droog wrote:
>
> > On May 31, 8:34 am, "Jeffrey H. Coffield"
> > <jeff...@digitalsynergyinc.com>  wrote:
> >> On 05/30/2012 08:46 AM, luser- -droog wrote:
> >>    [cute program]
>
> >> Gets an undefined error on the second page
>
> > But there is no second page!
>
> I usually run Postscript programs in emacs and hit return after each
> showpage to get to the next page. The first one comes up okay, I hit
> return and get an undefined error. If there is no second page, it should
> not get any error.
>
> Jeff

One thought is that the lack of DSC comments could confuse an
application designed for documents. But it sounds like you're
running the command-line interface. Do you get a GS> prompt
normally or does control return to emacs automatically?
If it's automatic, then maybe my names are interfering with
something emacs is trying to do. If you would, please add

1 dict begin

to the beginning of the file. If that fixes it, then
emacs is trying to use one or more of these names and
finding nonsense values.

That's the only scrap of an idea I've got at the moment.

Jeffrey H. Coffield

unread,
Jun 4, 2012, 10:47:43 AM6/4/12
to
I tested this by copying your code into emacs and ran it from emacs.
This produces the error when you hit return at the GS> prompt. Saving
the file to disk does not produce the error so emacs must be doing
something here. I added the "1 dict begin" and the error goes away but
doesn't that leave an extra dict on the stack? I usually try to have a
PostScript program leave nothing it is not uncommon to include one form
into another larger set to create a PDF.

Jeff

luser- -droog

unread,
Jun 5, 2012, 1:55:31 AM6/5/12
to
On Jun 4, 9:47 am, "Jeffrey H. Coffield"
Yes, it would leave an extra dict on the stack. It was just for
diagnosis. But if you get a prompt, then an error when you hit
return, that is truly weird. Does the error say undefined /in/
something interesting? What does the exec stack look like?

luser- -droog

unread,
Jul 3, 2012, 10:32:14 PM7/3/12
to
I usually hate helvetica. But it looks pretty good here. :|

515(2)08:15 PM:ps 0> cat cal3.ps
%!
%cal3.ps
%3"x5" Calendars - M. Joshua Ryan (luser...@gmail.com)
%Usage:
% gs [-doptions] cal3.ps
% gs [-doptions] -- cal3.ps month year
%-doptions ("environment" variables):
% -dmonth=mm set starting month (1 = January)
% -dyear=yyyy set starting year (> 1750, please)
% -doutline draw text as outlines
% -dabbrev use 3-letter names and 2-digit year
% -dwide make names 2 spaces wide
% -dtall make names double-tall, overrides -dwide
% -ddark draw everything black, default is 50% gray
% -sformat=4up|5up override default layout
%
%other useful gs options
% -sDEVICE=pdfwrite -sOutputFile=out.pdf

%set year and month here in the file,
%or use -d option to predefine
% eg. $gs -dmonth=2 -dyear=2013 cal3.ps
%or use argument processing option --
% eg. $gs -- cal3.ps 1 2013
/year where { pop }{
/year 2012 def
} ifelse
/month where { pop }{
/month 7 def %1 = January
} ifelse
/ARGUMENTS where { pop
ARGUMENTS length 2 ne
{ Error:Must_set_both_month_and_year_in_ARGS } if
ARGUMENTS aload pop
/year exch cvi def
/month exch cvi def
} if
/boldfname /Helvetica-Bold def
/romfname /Helvetica def

/dark where { pop }{
currentlinewidth .5 mul setlinewidth %thinner lines
.5 setgray %lighter lines
} ifelse

%use -doutline option to draw text as outlines
% eg. $gs -doutline cal3.ps
/outline where { pop
/show { false charpath stroke } def
} if

%month table
/initmtab {
/mtab [
[ (January) 31 ]
[ (February) 28 ]
[ (March) 31 ]
[ (April) 30 ]
[ (May) 31 ]
[ (June) 30 ]
[ (July) 31 ]
[ (August) 31 ]
[ (September) 30 ]
[ (October) 31 ]
[ (November) 30 ]
[ (December) 31 ]
] def
/abbrev where { pop
mtab {
0 2 copy get
0 3 getinterval
dup 1 2 copy get 32 sub put %toupper(str+1)
dup 2 2 copy get 32 sub put %toupper(str+2)
put
} forall
} if
} def initmtab

%leap year
/checkleap {
/leap
year 4 mod 0 eq
year 100 mod 0 eq not
year 400 mod 0 eq or and
def
leap { mtab 1 get 1 29 put } if
} def checkleap

%day of week
/checkdow {
[ 4 2 0 6 4 2 0 6 4 2 ]
year 1700 sub 100 idiv get
year 100 mod dup 4 idiv add add
[ leap{6 2}{0 3}ifelse 3 6 1 4 6 2 5 0 3 5 ] month 1 sub get add
1 add
/dow exch 7 mod def
} def checkdow

%grid coords
/X [ 0 51 103 154 206 257 309 360 ] def
/Y [ 216 180 144 108 72 36 0 ] def

/border {
.5 setgray
0 0 moveto
X 7 get 0 rlineto
0 Y 0 get rlineto
X 7 get neg 0 rlineto
closepath stroke
0 setgray
} def

/grid {
.5 setgray
Y { 0 1 index moveto
360 exch lineto
} forall
X { dup 0 moveto
216 lineto
} forall stroke
0 setgray
} def

/cutmarks {
0 18 0 0 18 0 moveto lineto lineto
342 0 360 0 360 18 moveto lineto lineto
360 198 360 216 342 216 moveto lineto lineto
18 216 0 216 0 198 moveto lineto lineto
} def

/coord {
exch X exch get
exch Y exch get
} def

/++ { dup load 1 add def } def

/daystring 2 string def
/yearstring /abbrev where { pop 2 }{ 4 } ifelse string def
/setyearstring {
year
/abbrev where { pop 100 mod } if
yearstring cvs pop
romfname 1 selectfont
romfname [
X
/wide where { pop
/tall where { pop 1 }{ 2 } ifelse
}{ 1 } ifelse
get 4 sub yearstring stringwidth pop div
0 0
/tall where { pop 32 }{ 16 } ifelse
0 0 ] selectfont
/yearfont currentfont def
} def setyearstring
/daysize 8 def
/dayfont romfname daysize selectfont currentfont def

/domonth {
cutmarks %border
boldfname 1 selectfont
mtab month 1 sub get 0 get% name
/tall where { pop
0 1 coord moveto 2 2 rmoveto
dup stringwidth pop X 1 get 4 sub exch div
[ exch 0 0 32 0 0 ] boldfname exch selectfont show
1 1 coord moveto 2 2 rmoveto
currentgray
/dark where { pop }{ .7 setgray } ifelse
yearfont setfont yearstring show
setgray
}{
X 0 get 2 add
Y 1 get 2 copy 20 add
moveto 3 2 roll
dup stringwidth pop X
/wide where { pop 2 }{ 1 } ifelse
get 4 sub exch div
[ exch 0 0 16 0 0 ] boldfname exch selectfont
show
2 add moveto
yearfont setfont
currentgray
/dark where { pop }{ .7 setgray } ifelse
yearstring show
setgray
} ifelse

/edow dow mtab month 1 sub get 1 get add 7 mod def
/nweeks dow mtab month 1 sub get 1 get add 7 idiv def

dow 2 lt {
0 -36 translate
X dow get Y 0 get
X 7 get 1 index moveto lineto
} if

1 1 6 { %vert
dup dow lt {1}{0} ifelse
1 index dup edow gt {nweeks}{nweeks 1 add} ifelse
coord moveto
coord lineto
} for

1 1 nweeks { %horz
0 exch 7 1 index
coord moveto
coord lineto
} for
stroke

dayfont setfont
/week 1 def
1 1 mtab month 1 sub get 1 get {
X dow get 2 add
Y week get 36 daysize sub add moveto
daystring cvs show
/dow ++
dow 7 eq { /dow 0 def /week ++ } if
} for

} def

/nextmonth {
/month ++
month 12 gt {
/month 1 def
setyearstring
initmtab
checkleap
} if
checkdow
} def

18 18 translate % 1/4" margin

/5up {
gsave
90 rotate
gsave
0 -216 translate
domonth
nextmonth
grestore
gsave
360 -216 translate
domonth
nextmonth
grestore
grestore

gsave
216 432 translate
domonth
nextmonth
grestore
gsave
216 216 translate
domonth
nextmonth
grestore
gsave
216 0 translate
domonth
nextmonth
grestore
} def

/4up {
90 rotate
2 {
0 -216 translate
gsave
domonth
nextmonth
grestore
gsave
360 0 translate
domonth
nextmonth
grestore
} repeat
} def

%override format option
%use gs option -sformat=...
% eg. %gs -sformat=5up -- cal3.ps 6 2013
/format where { pop
format cvx exec
}{ %default
5up
%4up
} ifelse

showpage

tlvp

unread,
Jul 4, 2012, 3:45:45 AM7/4/12
to
On Tue, 3 Jul 2012 19:32:14 -0700 (PDT), luser- -droog wrote:

> I usually hate helvetica. But it looks pretty good here. :|
>
> 515(2)08:15 PM:ps 0> cat cal3.ps
> %!
> %cal3.ps
> %3"x5" Calendars - M. Joshua Ryan (luser...@gmail.com)
> %Usage:
> % gs [-doptions] cal3.ps
> % gs [-doptions] -- cal3.ps month year
> %-doptions ("environment" variables):
> % -dmonth=mm set starting month (1 = January)
> % -dyear=yyyy set starting year (> 1750, please)
> % --- [snip] ---

Hmm ... 5-up, 3"x5", 8.5"x11" paper -- only layout I can see is, roughly:

+-+---+
| | |
| +---+
+-| |
| +---+
| | |
+-+---+

(with half-inch gap-adjustments that ASCII art just can't handle, and all
best viewed with a fixed width font).

OK -- but two pages of that gets you only 10 months.
And three pages gets you 15 months, more'n 1 year. So let me ask:
is the goal a 10-month academic year calendar, omitting Jul/Aug?
or am I missing something obvious here :-) ?

Cheers, -- tlvp
--
Avant de repondre, jeter la poubelle, SVP.

luser- -droog

unread,
Jul 5, 2012, 7:11:31 PM7/5/12
to
It was for samizdat 3x5 cards (to fit standard 3x5" card holders).
So we squeeze as many as will fit on bargain cardstock, and cut
them apart. Hence, no borders (ugly artifacts on cut edge).

But, like a proud papa, I had to share.
Now there's yet another spot on the web to learn "how to draw
outline text in postscript", p.e.

tlvp

unread,
Jul 6, 2012, 2:33:36 AM7/6/12
to
Right. I got that. My hang-up: when two sheets of letter-size card-stock
give you only 10 cards, and you want a year's worth of months @ 1 mo./card,
and the last two months will start -- but not use up -- a third letter-size
sheet of card-stock, what do you put on the three "extra" cards there?

Now d'ya see where I was getting hung up?

Ross Presser

unread,
Jul 6, 2012, 6:39:26 AM7/6/12
to mPiOsUcB...@att.net
On Friday, July 6, 2012 2:33:36 AM UTC-4, tlvp wrote:
> On Thu, 5 Jul 2012 16:11:31 -0700 (PDT), luser- -droog wrote:
>
> > tlvp wrote:
> >> On Tue, 3 Jul 2012 19:32:14 -0700 (PDT), luser- -droog wrote:
> >>
> >>> I usually hate helvetica. But it looks pretty good here. :|
> >>>
> >>> 515(2)08:15 PM:ps 0> cat cal3.ps
> >>> %!
> >>> %cal3.ps
> >>> %3"x5" Calendars - M. Joshua Ryan (luser.droog -- gmail.com)
Put the code on two of them (so you have it next year for the next calendar) and add a kitten picture for the third.

tlvp

unread,
Jul 6, 2012, 6:33:22 PM7/6/12
to
Ah :-) ! Thank you! Cheers, -- tlvp

luser- -droog

unread,
Jul 7, 2012, 12:53:41 AM7/7/12
to
As written, the program will simply advance to the next year and
fill out the page. But, yeah, kittens would be better.
Or, instead of the code itself, it could print the command-lines
to produce the next set.

I've added a "paper' layout with proper edges and gaps.
But now I need to suppress the year on each month and
add some kind of banner element for when the year changes.

tlvp

unread,
Jul 7, 2012, 12:53:48 PM7/7/12
to
Idea: make A4- or letter-size sheets with 6-up month rectangles in a 2-by-3
array, each 2.7" x 5", and paste the printed, cut-apart results onto 3x5s.
Two sheets, six months each, 1 year, with no overage and no underrun.

Idea free for the taking, no royalty required :-) . Cheers, -- tlvp

luser- -droog

unread,
Jul 14, 2012, 6:14:48 PM7/14/12
to mPiOsUcB...@att.net
On Saturday, July 7, 2012 11:53:48 AM UTC-5, tlvp wrote:
> On Fri, 6 Jul 2012 21:53:41 -0700 (PDT), luser- -droog wrote:
>
> &gt; On Jul 6, 5:33 pm, tlvp &lt;mPiOsUcB.EtLlL...@att.net&gt; wrote:
> &gt;&gt; On Fri, 6 Jul 2012 03:39:26 -0700 (PDT), Ross Presser wrote:
> &gt;&gt;&gt; On Friday, July 6, 2012 2:33:36 AM UTC-4, tlvp wrote:
> &gt;&gt;&gt;&gt; On Thu, 5 Jul 2012 16:11:31 -0700 (PDT), luser- -droog wrote:
> &gt;&gt;
> &gt;&gt;&gt;&gt;&gt; tlvp wrote:
> &gt;&gt;&gt;&gt;&gt;&gt; On Tue, 3 Jul 2012 19:32:14 -0700 (PDT), luser- -droog wrote:
> &gt;&gt;
> &gt;&gt;&gt;&gt;&gt;&gt;&gt; I usually hate helvetica. But it looks pretty good here. :|
> &gt;&gt;
> &gt;&gt;&gt;&gt;&gt;&gt;&gt; 515(2)08:15 PM:ps 0&gt; cat cal3.ps
> &gt;&gt;&gt;&gt;&gt;&gt;&gt; %!
> &gt;&gt;&gt;&gt;&gt;&gt;&gt; %cal3.ps
> &gt;&gt;&gt;&gt;&gt;&gt;&gt; %3&quot;x5&quot; Calendars - M. Joshua Ryan (luser.droog -- gmail.com)
> &gt;&gt;&gt;&gt;&gt;&gt;&gt; %Usage:
> &gt;&gt;&gt;&gt;&gt;&gt;&gt; %  gs [-doptions] cal3.ps
> &gt;&gt;&gt;&gt;&gt;&gt;&gt; %  gs [-doptions] -- cal3.ps month year
> &gt;&gt;&gt;&gt;&gt;&gt;&gt; %-doptions (&quot;environment&quot; variables):
> &gt;&gt;&gt;&gt;&gt;&gt;&gt; %  -dmonth=mm   set starting month (1 = January)
> &gt;&gt;&gt;&gt;&gt;&gt;&gt; %  -dyear=yyyy  set starting year (&gt; 1750, please)
> &gt;&gt;&gt;&gt;&gt;&gt;&gt; % --- [snip] ---
> &gt;&gt;
> &gt;&gt;&gt;&gt;&gt;&gt; Hmm ... 5-up, 3&quot;x5&quot;, 8.5&quot;x11&quot; paper -- only layout I can see is, roughly:
> &gt;&gt;
> &gt;&gt;&gt;&gt;&gt;&gt; +-+---+
> &gt;&gt;&gt;&gt;&gt;&gt;| |   |
> &gt;&gt;&gt;&gt;&gt;&gt;| +---+
> &gt;&gt;&gt;&gt;&gt;&gt; +-|   |
> &gt;&gt;&gt;&gt;&gt;&gt;| +---+
> &gt;&gt;&gt;&gt;&gt;&gt;| |   |
> &gt;&gt;&gt;&gt;&gt;&gt; +-+---+
> &gt;&gt;
> &gt;&gt;&gt;&gt;&gt;&gt; (with half-inch gap-adjustments that ASCII art just can&#39;t handle, and all
> &gt;&gt;&gt;&gt;&gt;&gt; best viewed with a fixed width font).
> &gt;&gt;
> &gt;&gt;&gt;&gt;&gt;&gt; OK -- but two pages of that gets you only 10 months.
> &gt;&gt;&gt;&gt;&gt;&gt; And three pages gets you 15 months, more&#39;n 1 year. So let me ask:
> &gt;&gt;&gt;&gt;&gt;&gt; is the goal a 10-month academic year calendar, omitting Jul/Aug?
> &gt;&gt;&gt;&gt;&gt;&gt; or am I missing something obvious here :-) ?
> &gt;&gt;
> &gt;&gt;&gt;&gt;&gt;&gt; Cheers, -- tlvp
> &gt;&gt;
> &gt;&gt;&gt;&gt;&gt; It was for samizdat 3x5 cards (to fit standard 3x5&quot; card holders).
> &gt;&gt;&gt;&gt;&gt; So we squeeze as many as will fit on bargain cardstock, and cut
> &gt;&gt;&gt;&gt;&gt; them apart. Hence, no borders (ugly artifacts on cut edge).
> &gt;&gt;
> &gt;&gt;&gt;&gt;&gt; But, like a proud papa, I had to share.
> &gt;&gt;&gt;&gt;&gt; Now there&#39;s yet another spot on the web to learn &quot;how to draw
> &gt;&gt;&gt;&gt;&gt; outline text in postscript&quot;, p.e.
> &gt;&gt;
> &gt;&gt;&gt;&gt; Right. I got that. My hang-up: when two sheets of letter-size card-stock
> &gt;&gt;&gt;&gt; give you only 10 cards, and you want a year&#39;s worth of months @ 1 mo./card,
> &gt;&gt;&gt;&gt; and the last two months will start -- but not use up -- a third letter-size
> &gt;&gt;&gt;&gt; sheet of card-stock, what do you put on the three &quot;extra&quot; cards there?
> &gt;&gt;
> &gt;&gt;&gt;&gt; Now d&#39;ya see where I was getting hung up?
> &gt;&gt;
> &gt;&gt;&gt;&gt; Cheers, -- tlvp
> &gt;&gt;&gt;&gt; --
> &gt;&gt;&gt;&gt; Avant de repondre, jeter la poubelle, SVP.
> &gt;&gt;
> &gt;&gt;&gt; Put the code on two of them (so you have it next year for the next calendar) and add a kitten picture for the third.
> &gt;&gt;
> &gt;&gt; Ah :-) ! Thank you! Cheers, -- tlvp
> &gt;
> &gt; As written, the program will simply advance to the next year and
> &gt; fill out the page. But, yeah, kittens would be better.
> &gt; Or, instead of the code itself, it could print the command-lines
> &gt; to produce the next set.
> &gt;
> &gt; I&#39;ve added a &quot;paper&#39; layout with proper edges and gaps.
> &gt; But now I need to suppress the year on each month and
> &gt; add some kind of banner element for when the year changes.
>
> Idea: make A4- or letter-size sheets with 6-up month rectangles in a 2-by-3
> array, each 2.7&quot; x 5&quot;, and paste the printed, cut-apart results onto 3x5s.
> Two sheets, six months each, 1 year, with no overage and no underrun.
>
> Idea free for the taking, no royalty required :-) . Cheers, -- tlvp

I've added your suggestion as -sformat=6up, but since I'm
having difficulty with googlegroups, I posted it to
code.google.com/p/xpost/downloads/list

This new version also incorporates several waves of client
corrections and other clean-ups.

tlvp

unread,
Jul 15, 2012, 2:04:45 AM7/15/12
to
Glad you found my humble idea useful. Sorry, can't help with Google Groups
(I use a mailer-like news group client). Cheers, -- tlvp
--
0 new messages