オナーのイベントの名札がExcelでつくられているのが気に食わなかったのでTeXでつくりたかった。使い方がめんどうなので誰も使ってくれず。(Dec.2010ごろの作)
プログラムの中身は以下のような感じ。
#!/usr/bin/ruby
# -*- coding: utf-8 -*-
# オナーの名札作成プログラム
eventname = "2010年度卒業生送別会"
if ARGV[0] == nil then
print "このプログラムの使い方
所属(半角カンマ)セミナー名(半角カンマ)氏名(改行)
例:物理学科3年,永宮G, 金森 順次郎
物理学科3年, 八木G, 湯川 秀樹
というようなファイルを引数に入れてくれると
名札を作るためのTeXソースファイルをつくります。
あとはそれをコンパイルしてPDFにして印刷してね。
何かあれば
foo@bar.com
まで¥n"
else
f1 = File.open("#{ARGV[0]}.tex", "w")
f1.print "¥¥documentclass[14pt,a4paper]{jsarticle}
¥¥usepackage[dvipdfmx]{graphicx}
¥¥pagestyle{empty}
¥¥setlength{¥¥unitlength}{1truemm}
¥¥setlength{¥¥hoffset}{0in}
¥¥setlength{¥¥voffset}{0in}
¥¥setlength{¥¥headheight}{0in}
¥¥setlength{¥¥headsep}{0in}
¥¥setlength{¥¥oddsidemargin}{14truemm}
¥¥setlength{¥¥topmargin}{16truemm}
¥¥advance¥¥oddsidemargin -1in
¥¥advance¥¥topmargin -1in
¥¥setlength{¥¥footskip}{0in}
¥¥begin{document}
"
require "csv"
CSV.open(ARGV[0], "r")
b=CSV.readlines(ARGV[0])
i = 0
while b[i][0] != nil
f1.print "¥¥begin{picture}(89.1,54.6)(0,0)
¥¥put(-0.45,-0.2){¥¥line(1,0){90}}
¥¥put(-0.45,-0.2){¥¥line(0,1){55}}
¥¥put(89.55,54.8){¥¥line(-1,0){90}}
¥¥put(89.55,54.8){¥¥line(0,-1){55}}
¥¥put(46,20){¥¥makebox(0,0){¥¥Huge ¥¥bf #{b[i][2]}}}
¥¥put(52,44){¥¥makebox(0,0)[]{¥¥small #{eventname}}}
¥¥put(52,35.5){¥¥makebox(0,0){¥¥large #{b[i][0]}}}
¥¥put(82,3.5){¥¥makebox(0,0)[r]{¥¥large #{b[i][1]}}}
¥¥put(5,28){¥¥includegraphics[width=20truemm]{001.eps}}
¥¥end{picture}
¥¥begin{picture}(89.1,54.6)(0,0)
¥¥put(-0.45,-0.2){¥¥line(1,0){90}}
¥¥put(-0.45,-0.2){¥¥line(0,1){55}}
¥¥put(89.55,54.8){¥¥line(-1,0){90}}
¥¥put(89.55,54.8){¥¥line(0,-1){55}}
¥¥put(46,20){¥¥makebox(0,0){¥¥Huge ¥¥bf #{b[i+1][2]}}}
¥¥put(52,45){¥¥makebox(0,0)[]{¥¥small #{eventname}}}
¥¥put(52,35.5){¥¥makebox(0,0){¥¥large #{b[i+1][0]}}}
¥¥put(82,3.5){¥¥makebox(0,0)[r]{¥¥large #{b[i+1][1]}}}
¥¥put(5,28){¥¥includegraphics[width=20truemm]{001.eps}}
¥¥end{picture}¥¥par
"
i += 2
end
f1.print "¥¥end{document}
"
f1.close
print "#{i}人分の名札ができた模様¥n"
end
csvの中身が偶数か奇数かのどっちかじゃないと動かないとか,色々問題がある。これを,
ruby nameplate.rb 2011farewell.txt
nkf -e --overwrite 2011farewell.txt.tex
platex 2011farewell.txt.tex;dvipdfmx 2011farewell.txt.dvi
というように実行すると,
出力PDFのようなものが出来上がる。nkfっていうのは,RubyでUTF-8使ってて,TeXではEUCにしないといけないのでその変換をしている。
TeXのpicture環境はかなり正確にジオミトリーを指定できるので,そういう意味では素晴らしいと思うのだけど。。。まあExcel使いたいんなら使ってください。
コメント
最終更新:2012年03月01日 20:06