atenac は,Ruby + TeX を使った葉書の宛名書スクリプトです. org-mode のテーブルもしくは CSV ファイルを入力として, 主に年賀状に利用する宛名面の PDF を生成します. スクリプトは,Ruby で記述され,バックエンドに TeX (platex) を利用しています. 想定するユーザは,Emacs (org-mode), TeX, Ruby を普段から利用する人です.
これらの環境が既にある人は,このファイルを宛名データのサンプルとして 宛名 PDF を生成してみることができます.
$ atenac README.org > example.pdf
$ open example.pdf
あるいは,
$ atenac --tex README.org > example.tex
$ platex example.tex
$ dvipdfmx example.dvi
$ open example.pdf
すると,こんな感じになります: example.pdf.(--debug
付き: example-debug.pdf)
CSV をアップロードしたら PDF を作ってくれる Web サーバとして動作させることもできます.
$ curl https://raw.githubusercontent.com/yoshinari-nomura/atenac/master/atenac > atenac
$ chmod +x atenac
pLaTeX から丸ごと入ったイメージを作りました: nom4476/atenac - Docker Hub
$ docker run -it --rm -v $PWD:/workdir nom4476/atenac
(Invoke bash in Docker container)
# atenac address-file.org > atena.pdf
なお Docker は,以下からインストールできます.
Usage: atenac [--debug] [--rotate] [--table-type=TYPE] [--fontfile=FILE] ADDRESS_FILE > ADDRESS.pdf atenac [--debug] [--rotate] [--table-type=TYPE] [--fontfile=FILE] --tex ADDRESS_FILE > ADDRESS.tex atenac [--debug] [--rotate] [--fontfile=FILE] --server + TYPE is type of ADDRESS_FILE: "org" (default) or "csv". org file is assumed written in UTF-8, while csv is in Shift-JIS or UTF-8. + FILE is path to your special font file: /path/to/font.{ttf,otf} If you create TeX file with --tex option, you may need to set environment variable TTFONTS or OPENTYPEFONTS to "/path/to" when you invoke dvipdfmx by yourself to create pdf. + If invoked with --server option, you can open http://localhost:3000 and upload your ADDRESS_FILE to get pdf.
- オプション:
--debug
- デバッグのために郵便番号等の枠線を入れます
--rotate
- 縦書き用代替グリフを持っていないフォントのために長音などを90度回転します
--table-type
org
(デフォルト) かcsv
を指定します.--tex
- PDF (デフォルト) ではなく,TeX を出力します.
--fontfile
- フォントファイルを直接 (ttf か otf) 指定します.
なお,このオプションと
--tex
を併用して,TeX ファイルを作った場合, dvipdfmx を別途起動する際には環境変数TTFONTS
(ttf の場合) かOPENTYPEFONTS
(otf の場合) に/path/to
を追加しなければならないかもしれません. 例えば,dvipdfmx が font を見付けられるように$ TTFONTS=/path/to: dvipdfmx file.dvi
としてください.
--server
- http://localhost:3000/ で Web サーバとして動作します.
ブラウザで開くとフォームが現れるので,
org か CSV をアップロードすると,葉書の宛名面 PDF が開くでしょう.
コマンドラインからなら,以下のようにして変換できます.
curl -X POST http://localhost:3000 -F "file=@address.org" > address.pdf
atenac に与える org-mode テーブルの書式を以下に説明します. テーブルは,以下の全カラムを持たなければなりませんが,カラムの順番は問いません. また,下記以外のカラムがあっても動作には影響ありません.
- last_name
- 苗字です.
- first_name
- 名前です.
- title
- 敬称です.空欄時は,「様」になります.
- family_names
- 連名です.苗字は入れないで名前だけを記述します.
- スラッシュ(/) 区切で複数記述できます.
- 名前の後にセミコロン (;) で区切って敬称を書けます.省略すると「様」になります(title と同様).
記述例:
ひとみ/はなこ;ちゃん/たろう;くん
- zip
- 郵便番号です.999-9999 の形式で記述します.
- address1
- 住所です.長い場合は,address2 に記述します.
- address2
- 住所(2行目)です.address1 と address2 の間で必ず改行されます.
- action
- 印刷(生成するPDF)を制御します.以下の値を取ります.
- 自
- 差出人のとして利用されます (なくてもいい).
- 出
- 印刷に利用されます.
- それ以外
- 無視されます.
- 現状,住所のレンダラは,address1 と address2 を改行位置決定に使用しています.本来は,文字列の長さから自動的に判断すべきでしょう.
- zip は,半角で 999-9999 の形式でなければなりません.
- 入力には,住所録に関係ないテーブルを含んではいけません.
id | last_name | first_name | title | family_names | zip | address1 | address2 | action | 昨年自分 | 昨年相手 | phonetic_last_name | phonetic_first_name | category | description |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0 | 岡山 | 太郎 | 花子/ミコロ(五歳)/ハコロ(五歳) | 700-8544 | 岡山市北区大供 1-1-1 | 自 | おかやま | たろう | 自分 | |||||
1 | 高松 | 市太郎 | 先生 | 760-8571 | 香川県高松市番町 1-8-15 | 高松市庁舎001号 | 出 | 出 | 受 | たかまつ | いちたろう | |||
2 | 岡山 | 県太郎 | 桃太郎/温羅;ちゃん | 700-8570 | 岡山市北区内山下 2-4-6 | 出 | 喪 | おかやま | けんたろう | 親戚 | ||||
3 | 出須野 | 八女太 | 999-9999 | XX県YY市 1-1-1 | 出 | だすの | やめた |