部門 > Ruby > 名札自動作成プログラム改訂版

なんか前のやつを久しぶりに動かしたら全然期待と違う動きをするので、直してみた。CSVが偶数行じゃないと動かないという問題も解決したつもり。でもこれもちゃんと動くかどうかよくわからない。TeXコマンドをファイルに出力するときに、\\にするのか、\にするかは環境に依存しそう。もっとうまく書きたいけど、めんどいからこんな感じで。
  1. #!/usr/bin/ruby
  2. # -*- coding: utf-8 -*-
  3. # オナーの名札作成プログラム
  4.  
  5. eventname = "2010年度卒業生送別会"
  6.  
  7. if ARGV[0] == nil then
  8. print "このプログラムの使い方
  9. 所属(半角カンマ)セミナー名(半角カンマ)氏名(改行)
  10. 例:物理学科3年,永宮G, 金森 順次郎
  11.   物理学科3年, 八木G, 湯川 秀樹
  12.  
  13. というようなファイルを引数に入れてくれると
  14. 名札を作るためのTeXソースファイルをつくります。
  15. あとはそれをコンパイルしてPDFにして印刷してね。
  16. 何かあれば
  17. foo@bar.com
  18. まで¥n"
  19.  
  20. else
  21.  
  22. f1 = File.open("#{ARGV[0]}.tex", "w")
  23. f1.print "¥documentclass[14pt,a4paper]{jsarticle}
  24.  
  25. ¥usepackage[dvipdfmx]{graphicx}
  26. ¥pagestyle{empty}
  27. ¥setlength{¥¥unitlength}{1truemm}
  28. ¥setlength{¥¥hoffset}{0in}
  29. ¥setlength{¥¥voffset}{0in}
  30. ¥setlength{¥¥headheight}{0in}
  31. ¥setlength{¥¥headsep}{0in}
  32. ¥setlength{¥¥oddsidemargin}{14truemm}
  33. ¥setlength{¥¥topmargin}{16truemm}
  34. ¥advance¥¥oddsidemargin -1in
  35. ¥advance¥¥topmargin -1in
  36. ¥setlength{¥¥footskip}{0in}
  37.  
  38. ¥begin{document}
  39. "
  40.  
  41. require "csv"
  42. CSV.open(ARGV[0], "r")
  43.  
  44. b=CSV.readlines(ARGV[0])
  45. puts b[0]
  46.  
  47. i = 0
  48. while b[i] != nil
  49. f1.print "¥begin{picture}(89.1,54.6)(0,0)
  50. ¥put(-0.45,-0.2){¥line(1,0){90}}
  51. ¥put(-0.45,-0.2){¥line(0,1){55}}
  52. ¥put(89.55,54.8){¥line(-1,0){90}}
  53. ¥put(89.55,54.8){¥line(0,-1){55}}
  54. ¥put(46,20){¥¥makebox(0,0){¥Huge ¥bf #{b[i][2]}}}
  55. ¥put(52,44){¥¥makebox(0,0)[]{¥small #{eventname}}}
  56. ¥put(52,35.5){¥¥makebox(0,0){¥large #{b[i][0]}}}
  57. ¥put(82,3.5){¥¥makebox(0,0)[r]{¥large #{b[i][1]}}}
  58. ¥put(5,28){¥¥includegraphics[width=20truemm]{001.eps}}
  59. ¥end{picture}"
  60. if b[i+1] != nil
  61. f1.print "
  62. ¥begin{picture}(89.1,54.6)(0,0)
  63. ¥put(-0.45,-0.2){¥line(1,0){90}}
  64. ¥put(-0.45,-0.2){¥line(0,1){55}}
  65. ¥put(89.55,54.8){¥line(-1,0){90}}
  66. ¥put(89.55,54.8){¥line(0,-1){55}}
  67. ¥put(46,20){¥makebox(0,0){¥¥Huge ¥bf #{b[i+1][2]}}}
  68. ¥put(52,45){¥makebox(0,0)[]{¥small #{eventname}}}
  69. ¥put(52,35.5){¥makebox(0,0){¥large #{b[i+1][0]}}}
  70. ¥put(82,3.5){¥makebox(0,0)[r]{¥large #{b[i+1][1]}}}
  71. ¥put(5,28){¥includegraphics[width=20truemm]{001.eps}}
  72. ¥end{picture}¥par
  73. "
  74. end
  75.  
  76. elsif b[i+1] != nil
  77. f1.print "
  78. ¥begin{picture}(89.1,54.6)(0,0)
  79. ¥put(-0.45,-0.2){¥line(1,0){90}}
  80. ¥put(-0.45,-0.2){¥line(0,1){55}}
  81. ¥put(89.55,54.8){¥line(-1,0){90}}
  82. ¥put(89.55,54.8){¥line(0,-1){55}}
  83. ¥put(46,20){¥makebox(0,0){¥¥Huge ¥bf  }}}
  84. ¥put(52,45){¥makebox(0,0)[]{¥small  }}}
  85. ¥put(52,35.5){¥makebox(0,0){¥large  }}}
  86. ¥put(82,3.5){¥makebox(0,0)[r]{¥large  }}}
  87. ¥put(5,28){¥includegraphics[width=20truemm]{001.eps}}
  88. ¥end{picture}¥par
  89. "
  90. end
  91.  
  92. i += 2
  93. end
  94.  
  95. f1.puts "¥end{document}
  96. "
  97. f1.close
  98. puts "#{i}人分の名札ができた模様"
  99. end
  100.  

コメント

名前:
コメント:

すべてのコメントを見る

タグ:

Ruby
最終更新:2012年03月01日 20:04