Emacs
emacs-lisp

Emacs: calendar の 1年分 TeX 出力に休日表示を追加

M-x calendart Y

M-x calendart Y で出力される年間カレンダーに祝日のマークが付きます。

Emacs の calendar の TeX 出力は A4 1枚に 1年分のカレンダーがプリントでき、デスク脇に貼ったり便利に使っていたのですが、休日設定が連動して表記されない処に不満があり機能追加したものです。

この拡張をインストールすると デフォルトは 日曜が () で括られ、祝祭日が [] で括られます。
祝祭日は文字にすることもできて japanese-holidays が等がインストールされていれば通常その名前の1文字目を使います。
"元日" なら "元"、"振替休日" なら "振" となるといった具合です。
"こどもの日" 等 1文字になると判り難いもののために、出力時に置き換える文字の設定をできるようにしてあります。

カラーサンプル

モノクロサンプル

ダウンロードとインストール

ここからダウンロードして load-path の通ったディレクトリに置いて init.el に以下の1行を追加します。

sample
(require 'col-tex-color)

PDF 化の手順

calndar buffer で t Y で 生成出力されたバッファをそのまま TeX file としてセーブし eshell 等から以下の手順で LaTeX コマンドを実行します。
ワーニングがワラワラ出ますがとりあえず無視します。
勿論 TeX がインストールされていないとできません。

source.sh
$ platex calendar.tex
$ dvipdfmx calendar.dvi

設定できる主な変数

cal-tex-color-mode

'mono'color が設定できます。デフォルトは 'color です。
カラーだと () 等の代りに色が変わりそれが印になります。

cal-tex-holiday-mark

祝祭日の表示法を指定します。
nil'digi'char を設定でき、デフォルトは 'char です。

シンボル 効果
nil 休日マークなし(システムデフォルトと同じ)
'digi 数値
'char 文字になります

cal-tex-holiday-name-alias

祝祭日を文字表記にするとき、変更したいものを alist で設定します。
'(("元の文字列1文字目" . "置き換える文字") ...) という形式です。

;; 例
(setq cal-tex-holiday-name-alias
      '(("み" . "緑") ("こ" . "子") ("敬" . "老") ("天" . "皇")))

出力される PDF の余白について

頒布されている日本語に対応調整されたクラスファイル附属の TeX をインストールしてあると、基本的に A4 前提でレイアウトされますが、A4 を主に使うのは日本の文化で、元の Source は A4 で調整されていないようで出力に余白が結構出ます。

その辺がきれいに納まるようなマージン等の細かい調整までしていないので、ズームで印字したい範囲を表示しておき(画面の最大化にしないほうがうまくできます)、PDF のリーダー側の印刷ダイアログの「印刷するページ」の「詳細」に
「現在の表示範囲」というのがあるので、それで印字します。

動作確認している Emacs のバージョン

GNU Emacs 25.3.1 (i686-w64-mingw32)
of 2017-09-18