部門 > 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. まで¥n"
  18.  
  19. else
  20.  
  21. f1 = File.open("#{ARGV[0]}.tex", "w")
  22. f1.print "¥documentclass[14pt,a4paper]{jsarticle}
  23.  
  24. ¥usepackage[dvipdfmx]{graphicx}
  25. ¥pagestyle{empty}
  26. ¥setlength{¥¥unitlength}{1truemm}
  27. ¥setlength{¥¥hoffset}{0in}
  28. ¥setlength{¥¥voffset}{0in}
  29. ¥setlength{¥¥headheight}{0in}
  30. ¥setlength{¥¥headsep}{0in}
  31. ¥setlength{¥¥oddsidemargin}{14truemm}
  32. ¥setlength{¥¥topmargin}{16truemm}
  33. ¥advance¥¥oddsidemargin -1in
  34. ¥advance¥¥topmargin -1in
  35. ¥setlength{¥¥footskip}{0in}
  36.  
  37. ¥begin{document}
  38. "
  39.  
  40. require "csv"
  41. CSV.open(ARGV[0], "r")
  42.  
  43. b=CSV.readlines(ARGV[0])
  44. puts b[0]
  45.  
  46. i = 0
  47. while b[i] != nil
  48. f1.print "¥begin{picture}(89.1,54.6)(0,0)
  49. ¥put(-0.45,-0.2){¥line(1,0){90}}
  50. ¥put(-0.45,-0.2){¥line(0,1){55}}
  51. ¥put(89.55,54.8){¥line(-1,0){90}}
  52. ¥put(89.55,54.8){¥line(0,-1){55}}
  53. ¥put(46,20){¥¥makebox(0,0){¥Huge ¥bf #{b[i][2]}}}
  54. ¥put(52,44){¥¥makebox(0,0)[]{¥small #{eventname}}}
  55. ¥put(52,35.5){¥¥makebox(0,0){¥large #{b[i][0]}}}
  56. ¥put(82,3.5){¥¥makebox(0,0)[r]{¥large #{b[i][1]}}}
  57. ¥put(5,28){¥¥includegraphics[width=20truemm]{001.eps}}
  58. ¥end{picture}"
  59. if b[i+1] != nil
  60. f1.print "
  61. ¥begin{picture}(89.1,54.6)(0,0)
  62. ¥put(-0.45,-0.2){¥line(1,0){90}}
  63. ¥put(-0.45,-0.2){¥line(0,1){55}}
  64. ¥put(89.55,54.8){¥line(-1,0){90}}
  65. ¥put(89.55,54.8){¥line(0,-1){55}}
  66. ¥put(46,20){¥makebox(0,0){¥¥Huge ¥bf #{b[i+1][2]}}}
  67. ¥put(52,45){¥makebox(0,0)[]{¥small #{eventname}}}
  68. ¥put(52,35.5){¥makebox(0,0){¥large #{b[i+1][0]}}}
  69. ¥put(82,3.5){¥makebox(0,0)[r]{¥large #{b[i+1][1]}}}
  70. ¥put(5,28){¥includegraphics[width=20truemm]{001.eps}}
  71. ¥end{picture}¥par
  72. "
  73. end
  74.  
  75. elsif b[i+1] != nil
  76. f1.print "
  77. ¥begin{picture}(89.1,54.6)(0,0)
  78. ¥put(-0.45,-0.2){¥line(1,0){90}}
  79. ¥put(-0.45,-0.2){¥line(0,1){55}}
  80. ¥put(89.55,54.8){¥line(-1,0){90}}
  81. ¥put(89.55,54.8){¥line(0,-1){55}}
  82. ¥put(46,20){¥makebox(0,0){¥¥Huge ¥bf  }}}
  83. ¥put(52,45){¥makebox(0,0)[]{¥small  }}}
  84. ¥put(52,35.5){¥makebox(0,0){¥large  }}}
  85. ¥put(82,3.5){¥makebox(0,0)[r]{¥large  }}}
  86. ¥put(5,28){¥includegraphics[width=20truemm]{001.eps}}
  87. ¥end{picture}¥par
  88. "
  89. end
  90.  
  91. i += 2
  92. end
  93.  
  94. f1.puts "¥end{document}
  95. "
  96. f1.close
  97. puts "#{i}人分の名札ができた模様"
  98. end
  99.  

コメント

名前:
コメント:

すべてのコメントを見る

タグ:

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