LaTeXでQSLカードを生成する

コンテストに出ると、交信数が多くなるためQSLカードを大量に発行しなければならない。私の場合大量といっても100枚前後だが。最近は手書きで文字を書くことが少なくなったので、だいたい10枚に3枚は間違う。100枚なら30枚のカードを無駄にする計算になる。

最近はコンテスト書類はemailで出すことが多い。よっぽどのローカルコンテストでない限り電子書類で提出することができる。この電子書類にはQSOのデータが含まれているわけで、このデータを使ってQSLカードを自動生成できないかと考えた。 そこでデータファイルをTeXのソースに変換して、タイプセットして、印刷という方法をやってみた。

無線をやっている人は計算機が好きな人が多いから、TeXでQSLカード作っている人は絶対いると思って検索をかけてみたところ、ひっかからない。あれ? ということで、デザインを一からやることにする。で、デザインしたのがこれ。
QSL Card Sample
コールサインに用いたフォントは、フォント屋あくび印からダウンロードしたフォントを使った。非商用利用は無料で使える。感謝。

使用法

インストール

まずqsl.tar.gzをダウンロードし、適当なディレクトリに展開する。それだけ。 このQSLカード自動生成のためのスクリプトと、TeXのソースは以下の通り。

設定

config.texを編集する。上のサンプル画像を見ながら編集するとわかりやすいだろう。コールサインは画像になっている。callsign.epsというファイルを作ってtemplate.texと同じディレクトリに置く。

QSLカード生成

qsl.txtというファイルが、ZLOG形式のQSOデータを格納しているとすると

$ awk -f genqsl.awk qsl.txt >qsl.tex

でqsl.texが生成されるので、これをタイプセットする

$ platex qsl.tex

するとqsl.dviができている(はず)なのでxdviで確認。 おそらくレイアウトを多少調整する必要があるだろう。 template.texを適宜編集して調整する。 問題がなければpsなりPDFにして印刷する。 印刷はプリンタに依存するので、余白の調整が必要になる。 何度かトライ&エラーが必要だろう。

仕組み

template.texは、QSLカードのデザインを定義している。gensql.awkにZLOG形式のQSOデータを喰わせると


\documentclass[12pt]{jarticle}
\input{config}
\begin{document}
\renewcommand{\callsign}{JQ6QRP}
\renewcommand{\qsodate}{2005/10/18}
\renewcommand{\qsotime}{06:05}
\renewcommand{\qsoband}{7MHz}
\renewcommand{\qsomode}{CW}
\renewcommand{\rst}{599}
\input{template}
\clearpage


\renewcommand{\callsign}{JQ6QSO/1}
\renewcommand{\qsodate}{2005/10/18}
\renewcommand{\qsotime}{06:15}
\renewcommand{\qsoband}{7MHz}
\renewcommand{\qsomode}{CW}
\renewcommand{\rst}{599}
\input{template}
\clearpage
....
\end{document}

といったTeXのソースを標準出力に吐く。 これはtemplate.texのQSOデータの所に記載するデータを、 ZLOG形式のデータから取り出してrenewcommandで定義している。 定義した後にtemplate.texをinputすればQSLカードができる。 config.texには余白の設定やIOTA、JCC/JCG、Rigの設定を書く。

印刷は多少コツがいるだろう。印刷すべきサイズはハガキサイズなのに、 データの用紙サイズはA4だからだ。 PDFにしてWindowsで印刷したほうが、確実だろう。

私の場合は、Adobe Readerのプリンタの設定で、用紙サイズと出力サイズを ハガキにして、給紙方法を給紙トレイにしたらうまくいった。