HOME > 電算 > Pcal メモ
Pcal メモ
カレンダーをプリントアウトしたいと思って探したら pcal というものを見つけたので、使い方をメモしておくのだ。
pcal は、Postscript のカレンダーを標準出力に吐く。設定ファイルによって、祝日などカスタマイズできるし、予定も書き込める。参考にしたのは man ページと、pcal-cfg.txt という設定のサンプルファイル。
こんなのとか
こんなのが
作れる。
空のカレンダーを作成するには、
$ pcal # 今月のカレンダー $ pcal 2014 # 2014年の「今月」のカレンダー $ pcal 2 2014 # 2014年2月のカレンダー $ pcal 1 2014 6 # 2014年1月から6月ぶんの月間カレンダー(複数ページ) $ pcal -w # 今年のカレンダー $ pcal -w 2014 # 2014年の年間カレンダー $ pcal -w 2 2014 # 2014年2月から12か月ぶんの年間カレンダー
簡単な設定
環境変数 PCAL_DIR、HOME の値、カレントディレクトリの順に .calendar ファイルを探す(date file とか configuration file と呼ぶ)。見つからない場合は、素のカレンダーを生成する。-f オプションで直接設定ファイルを指定できる。
examples ディレクトリにある pcal-cfg.txt には数多の設定の例が載っている、と書いてあるけど、どこにもインストールされていなかったら、ぐぐって見つけた。
まず、日本語で予定を書き込めるように、フォントを設定した。以下コードはすべて設定ファイルの記載例。
opt -d Times-Roman/18 -t Times-Roman/30 -n GothicBBB-Medium-UniJIS-UTF8-H/10
-d は日付け、-t はタイトル、-n は書き込み用のフォント。(GothicBBB は、たいがいの環境で代替フォントが用意されているのではなかろうか、ということで使用した)
予定を書き込むには
year 2014 8th in April 始業式 second Mon in Jan* 成人の日 Christmas クリスマス
のようにする。year 2014 以下は、2014 年のイベントと解釈される(新たに year が明記されるまで有効。その行以下をすべての年について設定したい場合 year all とする)。上の例は 4 月 8 日のところに「始業式」と書き込み、1月第2月曜日に「成人の日」と書き込む(振替休日を自動的に考慮するケースは後述)。Jan の後に * 印がついているが、こうすると祝日扱いになり、日付のフォントが日曜日と同じ色になる。Christmas 他いくつかの日付は、特別な指定方法も用意されている。
カレンダーに使われていない日付けのところに、任意の書き込みをするには
note/1 Mar 正確な春分の日は、前年\n2月1日頃に官報で公告。
ここで、/1 というのは、空いている 1 マス目に書き込むことを意味する。空いている最後から 2 マス目なら、/-2 とする。
なお、書き込む文字は、\fB 以後太字、\fP 以後普通の太さが切り替わる。
より複雑な設定
日本の祝日は、日曜日に当たると、次の平日が振り替え休日になる。毎年祝日を手作業で入力する手間を省くために、振替休日の設定を試みる。
「最初にくる日曜日でも祝日でもない日」を振替休日にしたいのだが、pcal では、「祝日/祝日でない日」(holiday/nonholiday)、「月から金/土日」(weekday/nonweekday)、「祝日でない月から金/祝日もしくは土日」(workday/nonworkday)、などが指定できるが、「日曜日または祝日」という指定ができない。そこで次のようにして、日曜日を祝日扱いにした。
year all # 以下、すべての年について設定 all sunday in all* # 日曜を祝日扱いする
具体的な祝日の設定は
May 3 憲法記念日 # 無条件に5月3日に「憲法記念日」と書き込む。 nonholiday on_or_after May 3* # その日付を色つきにする。 # 振り替えされる場合は、振替先を色つきにする。
1 行目は、無条件に5月3日に「憲法記念日」と書き込む。2 行目は、5月3日が「祝日」でなければ、5月3日にの日付の表示色を変え、5月3日が「祝日」であれば、最初に見つかる祝日でない日の日付表示色を変える(この条件分岐は、on_or_after の一言で表現されている)。
third Mon in Jul 海の日 nonholiday on_or_after third Mon in Jul*
海の日は、7月第三月曜日であるが、これは上のように設定する。
外見
デフォルトでは、日付の数字が、土曜日と日曜日で同じ日付の色になる。土曜日は平日と同じ色にしたい。
opt -b sat
日曜日の日付の色がグレイなので、これを赤に。ついでに、使用されていないマス目のバックグラウンドがグレイなのを、真っ白にしたい。
opt -s 1.0:0.0:0.0/1.0:1.0:1.0
おまけ
次は、自分用に作った日本の休日設定ファイル。法令などが何もかも2014年1月現在のままで、春分・秋分の日の予測がすべて当たった場合、2099年まで対応のつもり。当然無保証ですよ。誤りがあるかもしれないので、信用しては駄目ですよ。というか、間違えてるよ絶対。
.calendar と名前を変えて、HOME にでも置くだす。