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

※上記の広告は60日以上更新のないWIKIに表示されています。更新することで広告が下部へ移動します。

なんか前のやつを久しぶりに動かしたら全然期待と違う動きをするので、直してみた。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.  

コメント

名前:
コメント:

すべてのコメントを見る