ちょっとした予定をたてるのに使い捨ての紙のカレンダーがあると意外と便利です。今日は あえて Emacsでカレンダーを印刷してみた話です。

Emacsで印刷できると書きましたが、正確にはEmacsから直接印刷できるわけではありません。EmacsにはカレンダーのLatexファイルを生成する機能があり、それをLatex系のコマンドで処理することでPDFファイルを作成してから印刷します。

なんて面倒なんだ!と思われることでしょう。僕もそう思います! 僕はMacを使っているので、標準のカレンダーアプリから印刷すれば一瞬で完了です。

それでもなぜEmacsでやるのでしょうか?

・・・楽しいからです。それだけです。

日本語化もされていません。完全に英語版のカレンダーです。

おまけに僕はLatexなんてよくわかりません。本当にカレンダーを印刷するためだけにLatexを使っていますので詳しい人から見ればつっこみどころ満載かもしれません。

それでもEmacsにはこんな素敵な機能もあるんだよ!という宣伝をしたいのでこの記事を書いています。

ではどうぞご覧ください。サブタイトルはEmacsの関数名です。

年間カレンダー

cal-tex-cursor-year

/assets/2015/emacs-latex-calendar/cal-tex-cursor-year.jpg

cal-tex-cursor-filofax-year

/assets/2015/emacs-latex-calendar/cal-tex-cursor-filofax-year.jpg

※用紙設定がA4のままでPDF化しているので、カレンダーによっては余白が広くなっています。

月間カレンダー

cal-tex-cursor-month

/assets/2015/emacs-latex-calendar/cal-tex-cursor-month.jpg

週間カレンダー

cal-tex-cursor-week

/assets/2015/emacs-latex-calendar/cal-tex-cursor-week.jpg

cal-tex-cursor-week-iso

/assets/2015/emacs-latex-calendar/cal-tex-cursor-week-iso.jpg

cal-tex-cursor-week2

/assets/2015/emacs-latex-calendar/cal-tex-cursor-week2.jpg

cal-tex-cursor-week2-summary

/assets/2015/emacs-latex-calendar/cal-tex-cursor-week2-summary.jpg

cal-tex-cursor-filofax-week

/assets/2015/emacs-latex-calendar/cal-tex-cursor-filofax-week.jpg

cal-tex-cursor-filofax-2week

/assets/2015/emacs-latex-calendar/cal-tex-cursor-filofax-2week.jpg

ダイアリー

cal-tex-cursor-day

/assets/2015/emacs-latex-calendar/cal-tex-cursor-day.jpg

cal-tex-cursor-filofax-daily

/assets/2015/emacs-latex-calendar/cal-tex-cursor-filofax-daily.jpg

横型

cal-tex-cursor-month-landscape

/assets/2015/emacs-latex-calendar/cal-tex-cursor-month-landscape.jpg

cal-tex-cursor-year-landscape

/assets/2015/emacs-latex-calendar/cal-tex-cursor-year-landscape.jpg

印刷する方法

それでは実際に印刷する方法を説明しましょう。

まずは準備としてlatexコマンドが必要になります。僕の動作環境ではMacPortsの texlive-latex パッケージを使っています。インストールには次のコマンドを実行してください。

$ sudo port install texlive-latex

恐らくLinux系でもapt-get等を使ってインストールしていただければ、たぶん大差ないと思います。

次にEmacsで M-x calendar を実行してカレンダーを表示させます。 /assets/2015/emacs-latex-calendar/calendar.jpg

自分が印刷したい日付にカーソルを移動させて、上記の関数名を M-x します。

すると、 calendar.tex というバッファを生成されますので、適当なファイル名をつけて保存します。

このバッファ上で、 C-c C-b をするとLatexで処理される流れなのですが、僕の環境ではうまく動作しなかったので、別途、直接コマンドラインを打つことにしました。

ターミナルアプリか、Emacs内のShellモードから、次のコマンドを実行します。 (ファイル名は calendar.tex で保存)

$ pdflatex calendar.tex

コマンドが正常に動けば、 calendar.pdf というPDFファイルが同一ディレクトリに作られているはずです。あとは印刷するだけ。

印刷する方法(横型の場合)

ただし最後の横型だと、レイアウトが崩れてしまいます。(用紙設定が縦型のまま)

対応としては、pdflatexではなくlatexコマンドを使います。

$ latex calendar.tex

出力される calendar.dvi というファイルに対してさらに次のコマンドを打ちます。

$ dvipdf calendar.div

この結果、 calendar.pdf が作られていると思います。

まとめ

自分自身がlatexに疎いため、中途半端な内容ですみません。少なくとも日本人には実用的とは言えないかもしれませんし、需要があるのかはわかりません。しかしEmacsでこんな機能まであることが驚きなので、紹介してみました。