|
Pcal and lcal are calendar-generation
programs which produce nice-looking PostScript output.
Pcal is usually used to generate monthly-format (one month per page)
calendars with optional embedded text and images to mark special events
(e.g. holidays, birthdays, etc). It can also generate yearly-format (one
year per page) calendars.
Lcal generates a graphical ''lunar phase'' calendar
for an entire year (see below).
Both programs were previously released by Andrew W. Rogers, whose web page
has disappeared.
New, improved versions of pcal and lcal are available here:
pcal & lcal SourceForge project website
Download
You can directly download the source code for both
pcal and lcal.
If you're running in a DOS (or Windows) environment and you want to avoid
compiling (or just cannot compile) the source code, pre-built executable
files ('pcal-4.11.0.exe' and 'lcal-2.1.0.exe') for those environments are
also available at the same website.
Mailing List / Contact
There is a mailing
list for pcal and lcal. Questions and topics about how to
use the programs and about their further development can be raised there.
As of January 2007, to combat the mailing list spammers, you must be
subscribed to the list in order to post messages there.
The current maintainer (since Nov 2004) is Bill Marr. Although the
mailing list is the preferred method of communication, Bill can be reached
here:
3rd-Party Scripts, Utilities, and Enhancements For PCAL
-
email-reminder and group-calendaring Unix
shell scripts -- these useful Unix shell scripts, written and
generously provided by Kristofer Bergstrom, help automate his usage
of pcal
-
'ical2pcal'
-- a Unix shell script by Francisco José Marín Pérez which converts
iCalendar ('.ics') data files to a format suitable for use in your
pcal configuration file(s)
-
'makediary' -- a
PostScript calendar program by Russell Steicke that uses
pcal's date file format
-
source
of 'pcalyacc'
utility -- a small lex-YACC preprocessor tool by Richard
J. Mathar to convert certain date ranges in a pcal calendar
file into lists of single day specifications recognized by
pcal
-
Thomas
Zastrow's page (mostly in German) about 'pcal' which includes
an example (with the help of Scribus) of a monthly calendar with a
full-page background image
-
Iain Mac Donald's
tutorial, which includes screenshots, describes the creation of
a yearly calendar superimposed over a full-page background image
(with the help of
the pstoedit
conversion utility and either
the Skencil
or Inkscape vector graphics
editor)
PCAL Reviews and Other Coverage
Other Links
-
NEW! (as of 27 May
2009): 'pcal'
and 'lcal'
on Mac OS X, using Fink -- generously provided by someone going by
the handle "Monic Polynomial"
-
'pscal' --
a Bourne shell script by Mark B. Hanson "that produces simple,
nice-looking PostScript calendars"
-
Calendar on a
regular/rhombic dodecahedron -- an excellent site (including
photos of the finished product) by Ole Arntzen on how to download
and make a nifty, 3D calendar on a dodecahedron (1 month on each of
12 faces)
Of the 3 variants of the 'dodecahedron' calendars mentioned in
this section, I (Bill Marr) have found Ole's version to be the best
overall version, for the following reasons:
-
It maximizes the use of the available space, making the
calendar faces as large as possible, resulting in a nice,
large dodecahedron, with larger text.
-
It prints the calendars in what I consider to be the
"proper side up" orientation, for a dodecahedron sitting on
your desk.
-
The glue-able tabs are designed in a way that makes them
easier to cut out (i.e. with scissors), using fewer cuts and
angles.
-
By tweaking the '/weeknumbers' setting in the PostScript
source code, you can enable little brownish-colored 'week
numbers' (1-53 for 2008) in front of each week row.
-
It prints Sundays (or whatever is defined as 'holyday' in
the PostScript source code) in red, which is a nice, colorful
touch. (Some other calendars show all days in black.)
-
By tweaking the '/holidays', '/bdays', '/rdays' and
'/bluerange' arrays in the PostScript source code, you can
define which days get colored red, which days get a blue box,
which days get a red box, and which _range_ of days get
colored blue.
If you make one of these dodecahedron calendars, I would
recommend 2 things:
-
It helps immensely to (carefully!) score all of the
'fold' lines with an Exacto knife (very lightly all the way
across or slightly harder, in several short segments) before
assembling and gluing the final product.
-
I recommend throwing a few marbles, a bunch of unpopped
popcorn kernels, or (in a pinch) a few coins inside, just
before gluing the last face down. This adds some much-needed
weight to it, so that it won't blow away so easily!
-
The
Chinese Zodiac spiral (by way of PostScript) -- a neat
PostScript-generated spiral, by Robert Simms, showing the
(12-animal) Chinese zodiac around the edge, with all the years
shown, starting from 2008 and going backwards as the spiral
tightens
Robert also has a version of
the 'dodecahedron' calendar, but it's missing certain features
that are provided in Ole Arntzen's version, above.
-
source of 'deskcal2'
by Richard J. Mathar -- an alternate version of the 'dodecahedron'
calendar mentioned above. Per the website: this is "a C-shell
script to create a PostScript file of an unfolded Dodecahedron
with a calendar of 12 months covering the 12 faces. The original
by A Rogers has been enhanced by a scaling option, a colorizing
option and a German/French/Spanish/Italian output option." This
'deskcal2' version does not have as many features as Ole Arntzen's
version (described above), however.
-
PostScript
Language Reference Manual -- the free, online Adobe book (as of
May 2009; location changes occasionally)
-
BSD
Main Utilities ('bsdmainutils') package -- this is the source
of the old, simple Unix/BSD 'calendar' program, which can be used
with pcal and the '-c' option. This old program does not
seem to be included with most GNU/Linux distributions these days.
|
|
Pcal is a multi-platform (Unix/Linux, DOS, DOS+DJGPP,
Windows+Cygwin, Amiga) program which generates annotated PostScript or HTML
calendars in a monthly or yearly format.
It is usually run from the command line but there is an HTML/CGI capability
as well, to generate calendars (in either PostScript or HTML format) from a
web-browser interface.
Various events can be defined in an external text file to control the
appearance of the calendars generated by pcal. On monthly PostScript
calendars, EPS (Encapsulated PostScript) images (photos, icons, etc) can be
added to any given day of the month.
Pcal is distributed with several sample configuration files which
define various events (holidays, etc). There are samples for several
countries. If you have prepared pcal configuration files that you
think are worth sharing, send them to the email address shown at the bottom
of this page and we'll be happy to include them in the next release of
pcal.
For much more detail on the available options and use of pcal, use
any of the following sources (which represent the same content as the
pcal 'man' page, but in alternate formats):
Pcal actually generates calendars in several output formats:
PostScript, HTML, or even a simple text file that acts as input to the Unix
'calendar' program.
Pcal supports the following languages:
- Catalan
- Czech
- Danish
- Dutch
- English
- Esperanto
- Estonian
- Finnish
|
- French
- German
- Greek
- Hawaiian
- Hungarian
- Italian
- Latvian
- Lithuanian
|
- Polish
- Portuguese
- Romanian
- Russian
- Slovak
- Spanish
- Swedish
- Ukrainian
|
Pcal 4.11.0 Release Now Available! (18 Dec 2007):
The latest version (4.11.0) of pcal was released on 18 Dec 2007.
Changes that are available in the 4.11.0 release:
-
Fixed all the bugs described in the 'Bugs/Problems in
(now-obsolete) Pcal 4.10.0' section (see the link in the 'Notes
On Obsolete Releases of Pcal' section, below).
-
Added Hawaiian language support.
(Thanks to Eric Nichols for his patch.)
-
Added Slovak language support, with sample Slovak calendar
configuration file ('examples/calendar_sk.txt').
(Thanks to Zdenko Podobny for his patch and configuration
file.)
-
Added the sample Polish calendar configuration file
('examples/calendar_pl.txt'), to the release package.
It had been inadvertently omitted from the 4.10.0 release.
(Thanks to Dominik 'Chiron' Derlatka for this file.)
-
Added a sample Spanish calendar configuration file
('examples/calendar_es.txt').
(Thanks to Francisco José Marín Pérez for this configuration
file.)
-
In the USA calendar example file
('examples/calendar_us.txt') and the generic
'pcal-cfg.txt' example file, commented out the
pre-2007 rules for Daylight Saving Time (DST) and added new rules
for 2007 and beyond.
-
Made some tweaks to the 'examples/pcal-cfg.txt'
sample configuration file, in some cases to demonstrate more 'pcal'
functionality.
-
Allow the drawing of moon phase icons ('-m' or '-M') and Julian
dates ('-j' or '-J') on yearly-format calendars.
Previously, these features were only allowed on monthly-format
calendars.
-
Added a new preposition -- 'on'.
The use of this preposition is similar to the existing prepositions
like 'on_or_before' and 'on_or_after', but it requires that the
event occur exactly on the specified day.
See the 'ReadMe.txt' file for details on how to use
this feature.
(This new feature was added based on a request from [and partially
based on a patch from] Erkki Petsalo.)
-
The 'F13' pre-defined event has been removed. It is unnecessary
now that 'pcal' has support for the new 'on' preposition (described
above).
Replace any occurrence of 'F13' in your configuration
file(s) with this:
Fri on all 13
-
Added a new option -- '-W [ left | center | right ]'
-- to specify the horizontal alignment of the month/year title
displayed at the top of monthly-format calendars.
See the 'ReadMe.txt' file for more details.
(This new feature was added based on a request and a very
thorough patch from Todd Foster.)
-
Modified the Unix makefile to allow use of a user-specified
destination directory ('$DESTDIR') on the installation step.
See the 'ReadMe.txt' file for more details and an
example of its usage.
-
Added 2 Unix shell scripts (and a 'readme.txt'
file) to a new 'scripts' directory in the 'pcal' distribution.
See the author's detailed explanation of
the usage of these scripts.
(Thanks to Kristofer Bergstrom for these useful script
files.)
-
Re-added support for the Amiga platform, which had been removed in
the last release.
(Thanks to Stefan Haubenthal for the Amiga patch and appropriate
'makefile'.)
-
Removed the long-obsolete external 'moon file' concept. Now, we
depend solely on the algorithmic determination of moon phases,
which has been in place for many years and seems to be plenty
accurate.
The 'moon98' file (with manual entries of the dates and times of
the 4 primary moon phases for all of 1998) was also removed from
the 'examples' subdirectory, since it no longer serves any purpose.
Bugs/Problems in Pcal 4.11.0 (as of 27 May 2009):
Notes On Obsolete Releases of Pcal:
Details (features, bugs/problems, etc) about obsolete versions of pcal.
Pcal PostScript Calendar Examples
Here are a couple of (low-resolution) examples of PostScript calendars produced by
pcal:
Figure 1 -- Example of a monthly PostScript calendar (with daily moon phases enabled)
Figure 2 -- Example of a yearly PostScript calendar (American holidays and with major moon phases enabled)
Note that both of these calendars were created using some of the
options found in the sample 'pcal-cfg.txt' configuration file,
which comes with every pcal distribution and is also available
directly by browsing the CVS
repository.
Pre-Generated Pcal PostScript Monthly/Yearly Calendars
For those who don't want to bother downloading and installing pcal,
you can download pre-generated, nicely-colored, event-free, monthly-format
(12 months, 1 per page; landscape orientation; designed for printing on
'U.S. Letter'-sized paper) pcal calendars for the next few years:
You can also download pre-generated, nicely-colored, yearly-format (12
months on a single page; landscape orientation; designed for printing on
'U.S. Letter'-sized paper) pcal calendars for the next few years:
Adding Graphical Images (Logos, Icons, Photos, etc)
The pcal application allows the addition of one or more images
(graphics, logos, icons, photos, etc) on one or more days in a
monthly-format calendar. (Image specifications in the pcal
configuration file are ignored for yearly-format PostScript calendars and
for all HTML calendars.)
The image file must be in the Embedded PostScript (EPS) format.
The pcal releases come with a single EPS sample file
('eps/recycle.eps') of the ubiquitous 'recycle' icon (3 green arrows in a
triangular shape):
Such an image might be used with configuration file settings like this:
second Sat in all RECYCLE!
second Sat in all image:/path-to-eps/recycle.eps 0.039 0.039 34 -9
Much more detail about adding images to your monthly-format PostScript
calendars are provided in the 'man pcal' page, available once
pcal has been installed on your system. The content of the 'man'
page is also available in the equivalent HTML, PostScript, and text
versions, both via this website (see the links above) and included with the
pcal source code releases as 'doc/pcal-help.{html,ps,txt}'.
Some useful links related to the EPS image capability in pcal:
-
Open Clip Art Library
The 'Open Clip Art Library' is a good source of freely-usable
images for decorating your calendar events.
-
`libwmf' / `wmf2eps' library/utility
This library and utility are useful for generating
pcal-capable EPS icons from existing icons in the '.WMF'
(Windows MetaFile) format. These icons are often distributed with
commercial calendar-creation programs for Windows.
-
GIMP (GNU Image Manipulation Program)
This application is useful for converting non-EPS images
(e.g. photos) to EPS format.
-
ImageMagick utilities
This suite of graphical utilities is useful for converting
non-EPS images (including SVG-format images) to EPS format, using
the 'convert' utility.
This suite includes other useful ImageMagick utilities like
'display' and 'identify'.
-
`librsvg' / `rsvg' SVG Rendering library/utility
This library and utility are useful for converting SVG-format
images into an intermediate format (including PNG and JPEG), to
then be converted to EPS format using ImageMagick's
'convert' utility mentioned above.
This method is sometimes useful for certain SVG images which
don't convert correctly using the single step from SVG to EPS using
the 'convert' utility.
Pcal HTML Calendars
Pcal can also produce calendars in HTML format by using the
'-H' flag.
Normally, a monthly format is produced, with event text (but no images)
embedded in each day for which an event has been defined.
Adding the '-q' flag changes the format to print out as one column
per month resulting in table that gives a quicker overview of several
months and which can be used as a year-planner. As a year-planner
obviously has less space for text, only the first character of the weekday
and the first 5 characters of each calendar entry are printed. Holidays are
marked red but the text associated with that holiday event is not
printed. The year-planner gives output only in HTML and therefore has
effect only when used with the '-H' flag.
Here are a couple of examples of HTML calendars produced by
pcal:
Pcal Shortcomings
Pcal has several shortcomings, some of which may be overcome in future releases:
-
Pcal does not support the entry of a range of dates in the
configuration file. Several people have requested fixes for or
otherwise commented on this shortcoming.
A work-around for some involves use of the 'pcalyacc'
utility mentioned in the '3rd-Party Scripts, Utilities, and
Enhancements For PCAL' section, above.
-
Pcal does not support UTF-8 / Unicode. This limits its ability
to support certain languages (like Japanese, Chinese, Korean) with
character sets which aren't supported by the ISO 8859-* (Latin-1,
Latin-2, etc) character encodings.
-
Pcal always uses 6 rows on a monthly-format (1 month per page)
calendar. On most months, this results in a "wasted" row, but it's
required to support certain months (like December 2007 and March
2008) which actually need all 6 rows.
The 'pscal' calendar-generating script, mentioned in the
'Other Links' section, above, does not have this
shortcoming. It uses 5 rows all the time and handles months like
December 2007 by putting 2 days into one box. It even handles
quite well the positioning of event text, moon icons, and Julian
dates in the cases where 2 days share the same box. Pcal, on the
other hand, doesn't currently attempt this because it complicates
things like positioning of the EPS images and the issue of
yearly-format (1 year per page) calendars (features not supported
by 'pscal').
Eventually, it is envisioned that 'pcal' would allow the user to
specify '5-row' or '6-row' (and maybe even 'best-fit') as an option
for monthly-format calendars and somehow deal with the issues that
raises.
-
Although 'pcal' supports the display of EPS images in the
"day-boxes" of monthly-format calendars, it does not currently
support the display of a large background image shown "underneath"
the calendar.
A couple of people have used various "work-around" ways to get a
large background image displayed on 'pcal' calendars. Someday,
'pcal' might support this natively.
-
The positioning of EPS images in the "day box" is rather
unsophisticated. (Basically, it involves the specification of a
simple X-offset and Y-offset from the default position.) It would
be nice to allow some more-sophisticated options (e.g. relative
positioning from the "day box" edges) and/or more automation (based
on paper size, number of events, etc) in the positioning of EPS
images.
-
Pcal does not allow font or color specification at the "event
level". Currently, the font specified for one event applies to all
events. It would be nice to optionally allow the control of fonts
and colors at a finer-grained level, for events and other printed
text.
Similarly, 'pcal' does not allow font (or color) specification
of the 'title' text based on the month. Such a feature might be
nice to allow use of a font like "SnowtopCaps" in winter months.
(Of course, you can achieve that effect by creating individual
monthly calendars [1 or more months at a time], using the '-t'
option to specify the title font.)
|
|
Lcal is a multi-platform (Unix/Linux, DOS, DOS+DJGPP,
Windows+Cygwin) program which generates full-year PostScript lunar (moon
phase) calendars in a 2-page format, a compressed 1-page format, or an
''odd-days-only'' 1-page format.
It is run from the command line.
For much more detail on the available options and use of lcal, use
any of the following sources (which represent the same content as the
lcal 'man' page, but in alternate formats):
Lcal 2.1.0 Release Now Available! (07 Oct 2007):
The latest version (2.1.0) of lcal was released on 07 Oct 2007.
Changes that are available in the 2.1.0 release:
Bugs/Problems in Lcal 2.1.0 (as of 27 May 2009):
Notes On Obsolete Releases of Lcal:
Details (features, bugs/problems, etc) about obsolete versions of lcal.
Lcal PostScript Calendar Examples
Here are examples (click to enlarge) of PostScript lunar calendars produced
by lcal:
Figure 3a
(new in version 2.0.0) — Example of a black-and-white, 1-page, ''odd-days-only'' PostScript lunar calendar
|
Figure 3b
(new in version 2.1.0) — Example of a grey-scale, 1-page, ''odd-days-only'' PostScript lunar calendar
|
Figure 3c
(new in version 2.1.0) — Example of a color, 1-page, ''odd-days-only'' PostScript lunar calendar
|
Figure 4 — Example of a 1-page compressed PostScript lunar calendar
Figures 5 & 6 — Example of a 2-page PostScript lunar calendar
Note that portrait page orientation is also supported for each of the
examples shown above, despite the fact that no examples are actually shown
here.
Pre-Generated Lcal PostScript Lunar Calendars
For those who don't want to bother downloading and installing lcal,
you can download pre-generated, black-and-white (or grey-scale or
colorized, for the 1-page odd-days-only format), landscape
orientation lcal calendars for the next few years (all designed for
printing on 'U.S. Letter'-sized paper), in various formats:
- 2008 (1-page, odd-days-only, color, 9.1 KB)
- 2008 (1-page, odd-days-only, grey, 9.0 KB)
- 2008 (1-page, odd-days-only, B/W, 9.0 KB)
- 2008 (1-page, compressed, B/W, 9.2 KB)
- 2008 (2-page, B/W, 9.4 KB)
- 2009 (1-page, odd-days-only, color, 9.1 KB)
- 2009 (1-page, odd-days-only, grey, 9.0 KB)
- 2009 (1-page, odd-days-only, B/W, 9.0 KB)
- 2009 (1-page, compressed, B/W, 9.2 KB)
- 2009 (2-page, B/W, 9.4 KB)
- 2010 (1-page, odd-days-only, color, 9.1 KB)
- 2010 (1-page, odd-days-only, grey, 9.0 KB)
- 2010 (1-page, odd-days-only, B/W, 9.0 KB)
- 2010 (1-page, compressed, B/W, 9.2 KB)
- 2010 (2-page, B/W, 9.4 KB)
- 2011 (1-page, odd-days-only, color, 9.1 KB)
- 2011 (1-page, odd-days-only, grey, 9.0 KB)
- 2011 (1-page, odd-days-only, B/W, 9.0 KB)
- 2011 (1-page, compressed, B/W, 9.2 KB)
- 2011 (2-page, B/W, 9.4 KB)
- 2012 (1-page, odd-days-only, color, 9.1 KB)
- 2012 (1-page, odd-days-only, grey, 9.0 KB)
- 2012 (1-page, odd-days-only, B/W, 9.0 KB)
- 2012 (1-page, compressed, B/W, 9.2 KB)
- 2012 (2-page, B/W, 9.4 KB)
|