マクロツイーター

はてダから移行した記事の表示が崩れてますが、そのうちに直せればいいのに(えっ)

宛名書き用文書クラス(ZXaddrite パッケージ)

(去年の暮れの押し迫った日のこと)

年賀状の裏面のデザイン(というかパズル)が完成して一安心と思っていたら、非常に困った事に気付いた。

年賀状の宛名書きのために、去年まで「筆まめ」(かなり古い版)を使っていたのだが、「筆まめ」がインストールされていたマシン(メインマシンとして使っていた)が去年の 9 月に再起不能になってしまった。代わりに今使っているノート PC には当然ソフトがインストールされていない。今のノート PC は Windows Vista であり該当の「筆まめ」の版は非対応なので、移行できる可能性もない。困った。

種々の手段を考慮した後、結局テキストエディタを起動して \documentclass{article} と書き始めたところまでは普通(いいえ、普通です)だったが、ここで「欧文数字も含めて行書体フォントで印刷したい」と思ったため、次に \usepackage{fontspec} (つまり XeLaTeX 用の設定)と書いてしまった。というわけで XeLaTeX で縦書き出力をすることになった。*1(もちろん実際の理由は「最近はできるだけ XeLaTeX を使うことにしているから」なのですけどね。)

その時に作成した文書クラスをひっそりと公開しておく。

アーカイブの中の zxaddrite.cls が宛名印刷用の文書クラスである。文書クラスなので \documentclass の引数に指定する。サンプルを以下に示す。


\documentclass{zxaddrite}
% フォントを既定のものから変更する場合はこれを有効にする
% (fontspec の \newfontfamily 命令)
%\newfontfamily\zxFontZipCodeTo[Scale=2.0]{OCRB}%
%\newfontfamily\zxFontZipCodeFrom[Scale=1.5]{OCRB}%
%\newfontfamily\zxFontHoriz{HGPGyoshotai}
%\newfontfamily\zxFontVert[Vertical=RotatedGlyphs]{HGPGyoshotai}
\begin{document}
%% 差出人情報(全てのページ(ハガキ)に出力する部分)
\setaddressfrom{%
% \putzipcodefrom{番号}: 差出人郵便番号出力。
\putzipcodefrom{1234567}%
% \putvtext(X,Y)[位置]{サイズ}{テキスト} -- 縦書き出力
% (X,Y): 座標;単位cm、原点は左下端。右上端座標は(10,14.8)。
% 位置: テキストに対するアンカーの位置。\makebox での指定と同じ。
% サイズ: フォントサイズ、単位pt。
% テキスト: 出力したいテキスト。
% さらに <テキスト> 中では以下の命令が使える。
% \(文字列): 文字列を縦中横で出力する。
% \-: ハイフンを出力する。
\putvtext(3.2,8.0)[t]{10}{東京都羅轍区照府\(82)\-\(3)\-\(14)}%
\putvtext(2.7,3.0)[b]{10}{照府ヒルズ\(6601)号室}%
% \kintou{幅}{テキスト}: 均等割り。
\putvtext(1.5,7.4)[t]{18}{\kintou{4.4cm}{時間 泥棒}}%
% 横書き出力用の \puttext も存在する。
}
%% 宛先情報: これと \setaddressfrom の中身を合わせたものを
% 1つのページ(1枚のハガキに印刷)として出力する。
\printcard{%
% \putzipcodeto{番号}: 宛先便番号出力。
\putzipcodeto{4703389}
\putvtext(9.0,12.2)[t]{15}{愛知県南セントレア市北カエリア区}%
\putvtext(8.2,3.0)[b]{15}{西アヴィエリア\(16)\-\(256)\-\(4)}%
\putvtext(6.0,11.4)[t]{32}{\kintou{8.4cm}{奥底 世界 様}}%
}
%% 以下同様に1枚毎に \printcard を書く。
%\printcard{%
%}
\end{document}

私の場合、このクラスを作った後に、Perl スクリプトで「筆まめの住所録を変換した CSV ファイル」を「zxaddrite を利用した XeLaTeX 文書」に変換し、さらにそれを xelatex で組版して PDF に変換、最後にそれを Adobe Reader で印刷という手順で無事に宛名印刷が完了した。

やはり、テキストデータ(今の場合は CSVLaTeX 形式)は無敵である。

※ ただ、上の例のようにカナ文字が続く箇所では字送りがおかしくなってしまうようである。確か、XeTeX の縦書き出力では字送りに関するバグがあるという話を XeTeX の ML で見たことがある…。

*1:pLaTeX でも PXchfon パッケージを援用すればフォントの変更はできる。