diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..2fc90e5 --- /dev/null +++ b/.gitignore @@ -0,0 +1,18 @@ +## Core latex/pdflatex auxiliary files: +*.aux +*.dvi +*.lof +*.log +*.lot +*.fls +*.out +*.toc +*.fmt +*.fot +*.cb +*.cb2 +.*.lb +.DS* +\#* +.*\# +.*~ diff --git a/meibo.csv b/meibo.csv new file mode 100644 index 0000000..6539514 --- /dev/null +++ b/meibo.csv @@ -0,0 +1,76 @@ +ユーザID,氏名,読み仮名 +id0001,相川 真悠子,あいかわ まゆこ +id0002,青山 真奈美,あおやま まなみ +id0003,石川 明日香,いしかわ あすか +id0004,石黒 和美,いしぐろ かずみ +id0005,石田 千鶴,いしだ ちづる +id0006,伊藤 宏,いとう ひろし +id0007,井上 翔太,いのうえ しょうた +id0008,井上 洋介,いのうえ ようすけ +id0009,岩崎 裕子,いわさき ゆうこ +id0010,梅田 隆二,うめだ りゅうじ +id0011,大沢 真希,おおさわ まき +id0012,大島 美香,おおしま みか +id0013,大谷 裕太,おおたに ゆうた +id0014,大西 慎太郎,おおにし しんたろう +id0015,大橋 大輔,おおはし だいすけ +id0016,岡本 隆太,おかもと りゅうた +id0017,小田 裕美子,おだ ゆみこ +id0018,小野 美樹,おの みき +id0019,片山 裕介,かたやま ゆうすけ +id0020,加藤 太郎,かとう たろう +id0021,加納 真央,かのう まお +id0022,川崎 幸子,かわさき さちこ +id0023,菊地 孝司,きくち こうじ +id0024,北村 悠斗,きたむら ゆうと +id0025,木村 健太郎,きむら けんたろう +id0026,栗原 隆司,くりはら りゅうじ +id0027,小西 佳子,こにし よしこ +id0028,小林 光子,こばやし みつこ +id0029,小松 悟,こまつ さとる +id0030,小山 裕也,こやま ゆうや +id0031,斎藤 聡,さいとう さとし +id0032,佐々木 健太,ささき けんた +id0033,佐々木 美穂,ささき みほ +id0034,佐々野 真理,ささの まり +id0035,佐藤 光男,さとう みつお +id0036,沢田 美和,さわだ みわ +id0037,篠原 卓司,しのはら たくじ +id0038,柴田 裕美,しばた ゆみ +id0039,清水 芳子,しみず よしこ +id0040,杉山 千尋,すぎやま ちひろ +id0041,鈴木 未来,すずき みく +id0042,須藤 裕太,すどう ゆうた +id0043,関口 健一,せきぐち けんいち +id0044,高木 真悠,たかぎ まゆ +id0045,高田 美緒,たかだ みお +id0046,高橋 健太郎,たかはし けんたろう +id0047,田口 太一,たぐち たいち +id0048,田中 花子,たなか はなこ +id0049,谷口 真希,たにぐち まき +id0050,田村 美緒,たむら みお +id0051,土井 恵子,どい けいこ +id0052,内藤 佳子,ないとう よしこ +id0053,中嶋 千穂,なかじま ちほ +id0054,野口 由美,のぐち ゆみ +id0055,浜田 博子,はまだ ひろこ +id0056,林 さやか,はやし さやか +id0057,福岡 裕太郎,ふくおか ゆうたろう +id0058,藤原 光男,ふじわら みつお +id0059,前田 翔,まえだ しょう +id0060,松井 亜美,まつい あみ +id0061,松本 里美,まつもと さとみ +id0062,村山 正人,むらやま まさと +id0063,望月 卓司,もちづき たくじ +id0064,森田 美穂,もりた みほ +id0065,森本 美咲,もりもと みさき +id0066,矢野 翔太,やの しょうた +id0067,山内 美佳,やまうち みか +id0068,山口 美希,やまぐち みき +id0069,山田 明,やまだ あきら +id0070,山本 美智子,やまもと みちこ +id0071,横山 真理子,よこやま まりこ +id0072,吉岡 翔太,よしおか しょうた +id0073,吉田 美咲,よしだ みさき +id0074,吉村 美香子,よしむら みかこ +id0075,渡辺 一郎,わたなべ いちろう diff --git a/replgen.rb b/replgen.rb new file mode 100755 index 0000000..0599add --- /dev/null +++ b/replgen.rb @@ -0,0 +1,37 @@ +#!/usr/bin/env ruby +require 'csv' # CSV.readを使用するため +require 'fileutils' # Dir.chdirを使用するため + +outdir = ENV["OUTDIR"] || "out" # 結果書き込みディレクトリ +tex = IO.read("template.tex") # template.texの中身すべてをtexに + +preamble, body = tex.scan(/(.*)\\begin{document}(.*)\\end{document}/m)[0] +# ↑ ↑ +# template.tex全体部分からこの2つに該当する部分が preamble, body に入る +# Rubyの文字列のscanメソッド参照 +# https://docs.ruby-lang.org/ja/latest/method/String/i/scan.html +# 最後の //m は行をまたぐ正規表現照合を行うため(これがないと1行だけ検索する) + +newbody = CSV.read(ARGV[0], headers:true).collect do |row| + # ユーザID,氏名,読み仮名 のCSVの各カラム値は + # row['ユーザID'], row['氏名'], row['読み仮名'] + # で得られる + body.gsub(/::([^:]+)::/){|w| row.fetch($1, "")} + # bodyから ::カラム:: を探し、「カラム」に相当する部分を + # CSVデータの row[カラム] の値にすべて(g)置き換える(sub) +end.join +# joinで do...end で得られた結果を文字列結合する + +test(?d, outdir) or Dir.mkdir(outdir) # out/ がなければ作成(定石) +open(outdir+"/output.tex", "w") do |out| # out/output.texに書き込む + out.print preamble # out. がファイル書き込み指示 + out.print '\begin{document}' + out.print newbody # 全員分結合された本文を出力 + out.print '\end{document}' +end +Dir.chdir(outdir) do # 一時的に out/ に移動して do...end 内部を実行 + # "and" は左の文が成功したら右の文を実行する + # system はRubyプログラムの子供としてシェルを起動しコマンド実行するメソッド + # つまり、uplatexがうまく行った場合に限り dvipdfmx を実行する + system "uplatex output.tex" and system "dvipdfmx -l -p a6 output" +end diff --git a/template.tex b/template.tex new file mode 100644 index 0000000..905bcb1 --- /dev/null +++ b/template.tex @@ -0,0 +1,14 @@ +%#!uplatex -kanji=%k +\documentclass[12pt,uplatex,a6]{jsarticle} +\pagestyle{empty} +\usepackage{okumacro} % required for `\ruby' (yatex added) +\begin{document} +\section*{割引券} +\huge +\begin{tabular}{|c|c|c|} + \hline + ::ユーザID:: & \ruby{::氏名::}{::読み仮名::} \\\hline +\end{tabular} +\pagebreak + +\end{document}