manpagez: man pages & more
man rem2ps(1)
Home | html | info | man
rem2ps(1)                                                            rem2ps(1)




NAME

       rem2ps - draw a PostScript calendar from Remind output


SYNOPSIS

       rem2ps [options]


DESCRIPTION

       Rem2ps reads the standard input, which should be the results of running
       Remind with the -p or -pp option.   It  emits  PostScript  code  (which
       draws a calendar) to the standard output.

       See  the  section  "Rem2PS Input Format" for details about the -p data.
       This may be useful if you wish to create other Remind back-ends.

       Note that Rem2PS does not handle UTF-8 input.  If you  need  to  render
       characters outside the ASCII character set, see rem2pdf instead.



OPTIONS

       -v     Be  more verbose.  This causes Rem2ps to print progress messages
              to the standard error stream.  Normally, it is silent.

       -p file
              Include the contents of file in the PostScript  prologue.   This
              allows  you  to  define  procedures, variables etc. which can be
              used by the PS and PSFILE reminders.  You should not include any
              document structuring comments in your prologue.

       -l     Produce  the  calendar in landscape mode rather than the default
              portrait mode.

       -x     When printing the calendar, place the day numbers  in  the  top-
              left of each day's box.  If this option is omitted, the day num-
              bers appear in the top-right.

       -c[n]  If n is omitted, disables the small calendars for next and  pre-
              vious months which are normally generated.  If n is supplied, it
              can range from 0 to 3, with the following meanings:

              0      Disable small calendars

              1      Place the small calendars at the bottom-right if there is
                     room; otherwise, place them at the top-left.

              2      Place  the  small  calendars  at the top-left if there is
                     room; otherwise, place them at the bottom-right.

              3      Place the previous month's small calendar at the top-left
                     and  the  next  month's  at  the bottom-right if there is
                     room; otherwise, follow n=1.  A moment's thought  reveals
                     that  an  option  which  splits the calendars if there is
                     room and otherwise follows n=2 yields the same results as
                     n=3.

       -i     Use  ISO  8859-1 standard encoding for the PostScript fonts.  If
              you do not use this option, the default encoding  is  used.   If
              you  use this option, you probably also need to convert Remind's
              output (typically UTF-8) to ISO-8859-1 using iconv(1).

       -e     Make the calendar fill the entire page.  By default, the  calen-
              dar  is  slightly  smaller than the page.  This allows days with
              many reminders to "expand" as needed.   However,  if  you  don't
              have  days  which expand, you can use this option to make all of
              the boxes slightly bigger.  One caveat: If you  do  use  the  -e
              option  and  one day has many reminders, the calendar may expand
              off the page, losing some information.  Experiment!

       -m media
              Set the page size.  If you use the -m option, you  must  specify
              the  media  type, which can be one of the following.  (Sizes are
              approximate.)

              Letter 8.5 x 11 in.

              Legal  8.5 x 14 in.

              Ledger 11 x 17 in.

              Statement
                     5.5 x 8.5 in.

              Executive
                     7.5 x 10 in.

              A3     29.7 x 42 cm.

              A4     21 x 29.7 cm.

              A5     14.8 x 21 cm.

              B4     25.7 x 36.4 cm.

              B5     18.3 x 25.7 cm.

              Folio  8.5 x 13 in.

              Quarto 8.5 x 10.8 in.

              10x14  10 x 14 in.

              XxYin  X by Y inches, where X and Y can be  floating-point  num-
                     bers.

              XxYcm  X  by  Y centimetres, where X and Y can be floating-point
                     numbers.


              Type "rem2ps -m help" for a list of available media.  Note  that
              the  media type (and all Rem2ps options) are case-sensitive.  If
              you don't use the -m option, the media defaults to a compiled-in
              default  -  this  is usually Letter for North America and A4 for
              Europe.  The "-m  help"  option  will  display  the  compiled-in
              default.

       -f[tshed] font
              Set  the  font  for the calendar title, the small calendars, the
              day-of-week headings, the calendar entries, and the day numbers,
              respectively.  Font must be the name of a valid PostScript font.
              The default fonts are equivalent to specifying:

                   -ftshe Helvetica -fd Helvetica-BoldOblique

              In other words, the heading, entry and small-calendar fonts  are
              set  to  Helvetica,  and  the font for the day numbers is set to
              Helvetica-BoldOblique.

       -s[thed] size
              Set the size (in points) of the text for the the calendar title,
              day-of-week headings, the calendar entries, and the day numbers,
              respectively.  Size must be a decimal number.  The default sizes
              are equivalent to specifying:

                   -sthd 14 -se 8

              In  other words, the heading and day numbers are 14-point fonts,
              and the calendar entries are printed in 8-point text.

       -b size
              Set the size of the blank white border in each calendar  box  to
              size points.  The default border size is 6 points, or 1/12 in.

       -t size
              Set the thickness of the black calendar grid lines.  The default
              is 1, for a line thickness of one point (1/72 in.)

       -o[lrtb] size
              Set the left, right, top, and/or bottom margins to size  points.
              For  this  option  only, size must be an integer.  It represents
              the margin size in units of 1/72 in.  The default  margin  sizes
              are  36,  for  half-inch margins.  If you wish to punch holes in
              the calendar page to insert it into a binder, you  may  wish  to
              increase  the left margin to one inch.  In that case, you should
              also decrease the heading font size to 12 points for  good  out-
              put:

            # This gives good results for putting into a binder
            rem2ps -ol 72 -sh 12


USAGE

       To  use Rem2ps, you should pipe the output of Remind with the -p option
       to Rem2ps, and then send the result to a printer.  This is most  easily
       illustrated with examples:

            remind -p12 /dev/null 1 jan 1994 | rem2ps | lpr -Plaser

       That  example creates a blank calendar for the entire year of 1994, and
       sends it the the printer named "laser."

            remind -p ~/.reminders | rem2ps -l -sd 18 > cal.ps

       This reminder creates a calendar for  the  current  month,  filling  in
       entries  from  the  reminder file "~/.reminders."  The calendar is pro-
       duced in landscape mode, with a font size of 18 for  the  day  numbers.
       The result is put in the PostScript file "cal.ps."



VARIABLES AVAILABLE TO USER-SUPPLIED POSTSCRIPT CODE

       The  following variables are available to PS and PSFILE-type reminders.
       (This material is duplicated in the Remind manual page.)

       LineWidth
              The width of the black grid lines making up the calendar.

       Border The border between the center of the grid lines  and  the  space
              used  to  print calendar entries.  This border is normally blank
              space.

       BoxWidth and BoxHeight
              The width and height of the calendar box, from  center-to-center
              of the black gridlines.

       InBoxHeight
              The  height  from the center of the bottom black gridline to the
              top of the regular calendar entry area.  The space from here  to
              the top of the box is used only to draw the day number.

       /DayFont, /TitleFont, /EntryFont, /SmallFont and /HeadFont
              The  fonts  used  to  draw  the  day numbers, the month and year
              title, the calendar entries, the small calendars, and  the  day-
              of-week headings, respectively.

       DaySize, TitleSize, EntrySize and HeadSize
              The  sizes  of the above fonts.  (The size of the small calendar
              font is not defined here.)  For example, if you wanted to  print
              the  Hebrew date next to the regular day number in the calendar,
              use:

            REM PS Border BoxHeight Border sub DaySize sub moveto \
               /DayFont findfont DaySize scalefont setfont \
               ([hebday(today())] [hebmon(today())]) show

              Note how /DayFont and DaySize are used.

       Note that if you supply PostScript code,  it  is  possible  to  produce
       invalid  PostScript files.  Always test your PostScript thoroughly with
       a PostScript viewer before sending it to the printer.  You  should  not
       use any document structuring comments in your PostScript code.

       In addition, prior to drawing a calendar page, Rem2ps emits the follow-
       ing PostScript code:

            save (mon) (yr) PreCal restore

       where mon and yr are the month and year  of  the  calendar  page.   The
       default  PreCal  procedure  simply pops the arguments and does nothing.
       However, you can define a PreCal function in your prologue file  to  do
       whatever  you  want - it can draw a background for the entire calendar,
       for instance.

       In the context of the PreCal procedure, the following conditions hold:

       o      The PostScript origin is at the bottom left-hand corner  of  the
              page, and PostScript units of 1/72 inch are in effect.

       o      The  variables MinX, MinY, MaxX and MaxY define the bounding box
              within which the calendar will be drawn.

       o      The  font  and  font-size  variables,  as  well  as  Border  and
              LineWidth described previously, are valid.

       For an example, create a file called "myprolog" whose contents are:

                 /PreCal {
                  /yr exch def
                  /mon exch def
                  /xsiz1 MaxX MinX sub def
                  /ysiz1 MaxY MinY sub def
                  /xsiz xsiz1 MinX sub MinX sub def
                  /ysiz ysiz1 MinY sub MinY sub def
                  xsiz
                  ysiz
                  lt
                  {/len xsiz 1.41 mul def
                   MinX MinX add ysiz1 xsiz1 sub 2 div MinY add MinY add moveto}
                  {/len ysiz 1.41 mul def
                   xsiz1 ysiz1 sub 2 div MinX add MinX add MinY MinY add moveto}
                  ifelse
                  /Helvetica-Bold findfont 1 scalefont setfont
                  mon stringwidth pop
                  ( ) stringwidth pop add
                  yr stringwidth pop add
                  len exch div /len exch def
                  /Helvetica-Bold findfont len scalefont setfont
                  0.95 setgray
                  45 rotate
                  mon show
                  ( ) show
                  yr show
                 } bind def

       Use  that  file  with the Rem2ps -p option to create calendars with the
       year and month in large grey letters in the background of the calendar.



REM2PS INPUT FORMAT (-P OPTION)

       The -p option is an older, simpler interchange format used by Remind to
       communicate with back-ends.  New back-ends are encoraged to support the
       new  -pp  format  preferably, though they are encouraged to support the
       older -p format as well if the older format contains enough information
       for them to work properly.

       Remind  -p  sends the following lines to standard output.  The informa-
       tion is designed to be easily parsed by back-end programs:

       # rem2ps begin
              This line signifies the start of calendar data.   Back-ends  can
              search  for it to verify they are being fed correct information.

       month_name year num_days first_day monday_first
              On this line, month_name is the name of the month whose calendar
              information  is about to follow.  num_days is the number of days
              in this month.  first_day is the weekday of the first day of the
              month  (0 = Sunday, 1 = Monday, 6 = Saturday.)  And monday_first
              is 1 if the -m flag was supplied to Remind, or 0 if it was  not.
              All  this  information  is  supplied so back-ends don't need any
              date calculation facilities.

              Note that all spaces in month_name will be replaced with  under-
              scores.  Back-ends should undo this replacement.


       sun mon tue wed thu fri sat
              This  line consists of space-separated names of days in whatever
              language Remind was compiled for.  This information can be  used
              by back-ends to annotate calendars, and means they don't have to
              be created for a specific language.

              Note that all spaces in day names will be replaced  with  under-
              scores.  Back-ends should undo this replacement.

       next_mon next_days
              The name of the next month and the number of days in it.

       prev_mon prev_days
              The  name  of  the  previous month and the number of days in it.
              The next_mon and prev_mon lines could be used to generate  small
              inset calendars for the next and previous months.

       The  remaining data consists of calendar entries, in the following for-
       mat:

       yyyy/mm/dd special tag dur time body

       Here, yyyy is the year, mm is the month (01-12) and dd is  the  day  of
       the  month.   Note that the date components are always separated by "/"
       even if the date separator in Remind has been set to "-".  The  consis-
       tent use of "/" is designed to ease parsing.

       special  is  a  string  used for "out-of-band" communication with back-
       ends.  If the reminder is a  normal  reminder,  special  is  "*".   The
       Rem2PS  back-end understands the specials PostScript and PSFile.  Other
       back-ends may understand other specials.  A back  end  should  silently
       ignore a reminder with a special it doesn't understand.

       tag is whatever tag the user provided with the TAG clause, or "*" if no
       tag was provided.  If there is more  than  one  TAG  clause,  the  tags
       appear in a comma-separated list.  For example, the command REM TAG foo
       TAG bar TAG quux would result in foo,bar,quux in the tag field.

       dur is the DURATION value in minutes, or "*" if no  duration  was  pro-
       vided.

       time  is  the  time of the reminder in minutes past midnight, or "*" if
       the reminder was not a timed reminder.

       body is the body of the reminder.

       Future versions of Remind may add additional keys to the  JSON  object.
       Back-ends must ignore keys they don't recognize.

       After  a month's worth of reminders have been emitted, Remind emits the
       line:

       # rem2ps end

       However, back-ends should keep reading until EOF in case more data  for
       subsequent months is forthcoming.

       If  you  supply the -l option to remind, then reminders may be preceded
       by a line that looks like this:

       # fileinfo lineno filename

       The word fileinfo is literal; lineno and filename specify the line num-
       ber  and file name of the file containing the reminder.  Back-ends that
       don't care about this information should ignore lines starting with "#"
       (except, of course, for the # rem2ps lines.)



REM2PS PARTIAL JSON INPUT FORMAT (-PP OPTION)

       Remind  -pp  sends  the  following  lines to standard output.  They are
       designed to be easily parsed, but contain much  more  information  than
       the  old-style remind -p output.  The extra information contains a rep-
       resentation of the parsed "REM" statement, which could allow converters
       to  better  preserve semantics of a reminder.  For example, this format
       passes enough information to allow a back-end to (in many cases) deter-
       mine a reminder's recurrence rather than just treating each reminder as
       a one-off event.

       The lines emitted by remind -pp are as follows:

       # rem2ps2 begin
              This line signifies the start of calendar data.   Back-ends  can
              search  for it to verify they are being fed correct information.
              Note the "2" after "rem2ps",  which  distinguishes  this  format
              from the older -p format.

       month_name year num_days first_day monday_first
              Same as the -p format

       sun mon tue wed thu fri sat
              Same as the -p format

       next_mon next_days
              Same as the -p format

       prev_mon prev_days
              Same as the -p format

       CALENDAR ENTRIES

       The  remaining  data  consists  of calendar entries expressed as a JSON
       object on a single line.  Each such line will begin with "{"  and  will
       be a well-formed JSON object.  The keys that may be present in the JSON
       object are as follows:

       date YYYY-MM-DD
              The date key will always be present; it is the trigger  date  of
              the reminder expressed as a string in the format YYYY-MM-DD

       filename f
              The filename in which the reminder was found.

       lineno n
              The line number within the file on which the reminder was found.

       nonconst_expr 1
              If the reminder contained a non-constant expression that had  to
              be  evaluated  to  determine  the trigger date, this key will be
              present with the value 1.  If this key is present,  then  it  is
              unsafe  for  a  back-end to rely on recurrence semantics or even
              the semantics of any part of the parsed reminder,  as  they  may
              have been computed in a way that cannot be expressed in JSON.

       if_depth n
              If  the  reminder  is  inside one or more IF or ELSE statements,
              this key will be present and the value will  be  the  number  of
              nested IFs from the top-level to the reminder.  Back-ends should
              be wary of interpreting recurrence semantics of reminders within
              an IF or ELSE block.

       passthru special
              If the reminder was a SPECIAL reminder, the passthru key will be
              present and the value will be  the  type  of  SPECIAL  (such  as
              SHADE, COLOR, MOON, etc.)

       tags data
              If any TAG clauses are present, the tags key will be present and
              consist of a comma-separated list of tags.

       time t If an AT clause was present, this key will contain the  time  of
              the AT clause in minutes after midnight.

       tdelta n
              If  a  time  delta (+n after an AT clause) was present, this key
              contains the delta value in minutes.

       trep n If a time repeat (*n after an AT clause) was present,  this  key
              contains the repeat value in minutes.

       eventduration n
              If  a  DURATION  clause was present, this key contains the event
              duration in minutes.

       duration n
              If a DURATION clause was  present,  this  key  contains  today's
              duration  in  minutes.   See  the remind(1) man page, "MULTI-DAY
              EVENTS", for a discussion of duration vs. event duration.

       eventstart dt
              If an AT clause was present, this key contains the  event  start
              time in the format YYYY-MM-DDTHH:MM.

       back n If  the reminder contained a "back" clause (-n or --n), this key
              contains the back value.  If the "back" value was -n, the  value
              will be positive; if it was --n, the value will be negative.

       delta n
              If the reminder contained a "delta" clause (+n or ++n), this key
              contains the delta value.  If the  "delta"  value  was  +n,  the
              value  will  be positive; if it was ++n, the value will be nega-
              tive.

       rep n  If the reminder contained a "repeat" clause (*n), this key  con-
              tains the repeat value.

       skip type
              If  the reminder contained a SKIP, BEFORE or AFTER keyword, then
              this key will contain that keyword.

       localomit array
              If the reminder contains a local OMIT keyword, this key will  be
              present.   Its  value will be an array of English day names that
              are OMITted.

       wd array
              If the reminder contains one or more weekdays, this key will  be
              present.   Its  value will be an array of English day names that
              are present.

       d n    If a day-of-month is present in the reminder specification, this
              key will be present and its value will be the day number.

       m n    If  a  month  is present in the reminder specification, this key
              will be present and its value will be the month number.

       y n    If a year is present in the  reminder  specification,  this  key
              will be present and its value will be the year.

       until YYYY-MM-DD
              If  the  reminder  contains an UNTIL or THROUGH clause, this key
              will be present.  Its value will be a string of the  form  YYYY-
              MM-DD.

       once 1 If  the  reminder  contains  a  ONCE  keyword,  this key will be
              present with a value of 1.

       scanfrom YYYY-MM-DD
              If the reminder contains a SCANFROM keyword, this  key  will  be
              present and its value will be a string of the form YYYY-MM-DD.

       from YYYY-MM-DD
              If  the  reminder  contains  a  FROM  keyword,  this key will be
              present and its value will be a string of the form YYYY-MM-DD.

       priority n
              The priority of the reminder.  Always present;  if  no  PRIORITY
              keyword  is specified, then a reminder has a default priority of
              5000.

       r n    For a SHADE or COLOR special, the red color component.

       g n    For a SHADE or COLOR special, the green color component.

       b n    For a SHADE or COLOR special, the blue color component.

       body body
              The body of the reminder to issue.  Always present.

       rawbody raw
              The "raw" body of the reminder, before any expression-pasting or
              substitution-sequence  processing.  If the raw body would be the
              same as the processed body, then this key is not present.

       After a month's worth of reminders have been emitted, Remind emits  the
       line:

       # rem2ps2 end

       However,  back-ends should keep reading until EOF in case more data for
       subsequent months is forthcoming.




REM2PS PURE JSON INPUT FORMAT (-PPP OPTION)

       Remind -ppp emits pure JSON output.  The format is as follows:

       Remind outputs a JSON array.  Each element of  the  array  is  a  month
       descriptor.

       Each month descriptor is a JSON object with the following elements:

       monthname name
              The name of the month.

       year yyyy
              The year.

       daysinmonnth n
              The number of days in the current month.

       firstwkday n
              The  weekday of the first day of the month (0 = Sunday, 1 = Mon-
              day, 6 = Saturday).

       mondayfirst n
              An indicator of whether or not the calendar  week  should  start
              with Sunday (n=0) or Monday (n=1).

       daynames [days]
              A  seven-element  array  of  day names; each element is a string
              representing the names of the days from Sunday through Saturday.

       prevmonthname name
              The name of the previous month.

       daysinprevmonth n
              The number of days in the previous month.

       prevmonthyear yyyy
              The  year  of  the previous month.  (The same as year unless the
              current month is January.)

       nextmonthname name
              The name of the following month.

       daysinnextmonth n
              The number of days in the following month.

       nextmonthyear yyyy
              The year of the following month.  (The same as year  unless  the
              current month is December.)

       entries [array]
              The  entries  key consists of an array of calendar entries; each
              entry is a JSON object that has the same format as described  in
              the CALENDAR ENTRIES section in the -PP FORMAT section, with the
              following difference: In -PP mode, if a reminder has %" markers,
              only  the  text between the markers is included in the body ele-
              ment.  In -PPP mode, the entire text including the %" markers is
              included  and  it's  up  to  the back-end to extract the portion
              between the markers if that is desired.




AUTHOR

       Rem2PS was written by Dianne Skoll <dianne@skoll.ca>


BUGS

       All Rem2ps options are case-sensitive, unlike  Remind.   Any  time  you
       supply  a  font  name  or  size, line thickness, or border width, it is
       treated as a string and sent straight to  the  PostScript  interpreter.
       Thus,  if  you supply invalid fonts or sizes, Rem2ps will not complain,
       but the resulting PostScript output will probably not work.

       You should ensure that the values you supply for margin widths are sen-
       sible.   If  they  are too big for the media size, Rem2ps will not com-
       plain, but again, the PostScript output will probably not work.


SEE ALSO

       remind(1)




4th Berkeley Distribution       5 January 2021                       rem2ps(1)

remind 03.04.00 - Generated Mon Feb 21 18:48:04 CST 2022
© manpagez.com 2000-2025
Individual documents may contain additional copyright information.