hikiutils 0.2.3.2 → 0.2.3.3

Sign up to get free protection for your applications and to get access to all the features.
Files changed (58) hide show
  1. checksums.yaml +4 -4
  2. data/hikiutils_bob/.gitignore +1 -0
  3. data/hikiutils_bob/Rakefile +267 -0
  4. data/hikiutils_bob/figs/hikiutils_bob.001.jpeg +0 -0
  5. data/hikiutils_bob/figs/hikiutils_bob.002.jpeg +0 -0
  6. data/hikiutils_bob/figs/hikiutils_bob.003.jpeg +0 -0
  7. data/hikiutils_bob/hiki_help.yml +53 -0
  8. data/hikiutils_bob/hikiutils_bob/hikiutils_bob.001.jpeg +0 -0
  9. data/hikiutils_bob/hikiutils_bob/hikiutils_bob.002.jpeg +0 -0
  10. data/hikiutils_bob/hikiutils_bob/hikiutils_bob.003.jpeg +0 -0
  11. data/hikiutils_bob/hikiutils_bob.hiki +8 -0
  12. data/hikiutils_bob/hikiutils_bob.key +0 -0
  13. data/hikiutils_bob/latex_all.hiki +153 -0
  14. data/hikiutils_bob/latex_dir/head.tex +8 -0
  15. data/hikiutils_bob/latex_dir/hikiutils_bob +243 -0
  16. data/hikiutils_bob/latex_dir/hikiutils_bob.001.bb +5 -0
  17. data/hikiutils_bob/latex_dir/hikiutils_bob.001.jpeg +0 -0
  18. data/hikiutils_bob/latex_dir/hikiutils_bob.002.bb +5 -0
  19. data/hikiutils_bob/latex_dir/hikiutils_bob.002.jpeg +0 -0
  20. data/hikiutils_bob/latex_dir/hikiutils_bob.003.bb +5 -0
  21. data/hikiutils_bob/latex_dir/hikiutils_bob.003.jpeg +0 -0
  22. data/hikiutils_bob/latex_dir/hikiutils_bob.aux +3 -0
  23. data/hikiutils_bob/latex_dir/hikiutils_bob.dvi +0 -0
  24. data/hikiutils_bob/latex_dir/hikiutils_bob.log +261 -0
  25. data/hikiutils_bob/latex_dir/hikiutils_bob.tex +54 -0
  26. data/hikiutils_bob/latex_dir/hikiutils_bob.toc +22 -0
  27. data/hikiutils_bob/latex_dir/latex_all.aux +31 -0
  28. data/hikiutils_bob/latex_dir/latex_all.tex +164 -0
  29. data/hikiutils_bob/latex_dir/pre.tex +36 -0
  30. data/hikiutils_bob/latex_dir/sync.aux +41 -0
  31. data/hikiutils_bob/latex_dir/sync.log +183 -0
  32. data/hikiutils_bob/latex_dir/sync.pdf +0 -0
  33. data/hikiutils_bob/latex_dir/sync.synctex.gz +0 -0
  34. data/hikiutils_bob/latex_dir/sync.tex +200 -0
  35. data/hikiutils_bob/latex_dir/to_latex.tex +44 -0
  36. data/hikiutils_bob/private_dir.graffle +1195 -0
  37. data/hikiutils_bob/sync.hiki +170 -0
  38. data/hikiutils_yamane/Rakefile +210 -9
  39. data/hikiutils_yamane/hiki_help.yml +53 -66
  40. data/hikiutils_yamane/latex_dir/command_table.aux +4 -0
  41. data/hikiutils_yamane/latex_dir/command_table.log +152 -0
  42. data/hikiutils_yamane/latex_dir/command_table.pdf +0 -0
  43. data/hikiutils_yamane/latex_dir/command_table.synctex.gz +0 -0
  44. data/hikiutils_yamane/latex_dir/command_table.tex +29 -0
  45. data/hikiutils_yamane/latex_dir/head.tex +8 -0
  46. data/hikiutils_yamane/latex_dir/hikiutils_yamane.aux +1 -0
  47. data/hikiutils_yamane/latex_dir/hikiutils_yamane.log +170 -0
  48. data/hikiutils_yamane/latex_dir/hikiutils_yamane.pdf +0 -0
  49. data/hikiutils_yamane/latex_dir/hikiutils_yamane.synctex.gz +0 -0
  50. data/hikiutils_yamane/latex_dir/hikiutils_yamane.tex +48 -0
  51. data/hikiutils_yamane/latex_dir/hikiutils_yamane.toc +0 -0
  52. data/hikiutils_yamane/latex_dir/pre.tex +36 -0
  53. data/lib/hikiutils/version.rb +1 -1
  54. data/lib/hikiutils.rb +13 -8
  55. data/lib/templates/Rakefile_hiki_sync +146 -14
  56. data/lib/templates/head.tex +8 -0
  57. data/lib/templates/pre.tex +36 -0
  58. metadata +53 -2
@@ -0,0 +1,170 @@
1
+ !title:hikiutils -iによる卒論作成システム
2
+ !author:Shigeto R. Nishitani
3
+ !date: Kwansei Gakuen Univ., 2017/1
4
+ 卒業論文は,大学で課される一般的なレポートに比べて多くの情報内容が要求される.また,研究という側面から体裁や版権など多くの出版における掟を遵守しながら,高い品質を保つ必要がある.そのため,指導教官との編集作業が重要となる.編集作業の効率を高めるためには,共同作業を促進するプラットフォームが必要である.
5
+
6
+ 体裁などを考えるとLatexの使用が標準であるが,執筆段階での煩わしさを低減するため,Mark Up記法による文章作成が一般的である(「ドキュメント作成システム構築ガイド,GitHub, RedPen, Asciidoctor, CIによるモダンライティング」, 伊藤敬彦,吉村孝広,技術評論社).西谷研ではMark Up記法の一種であるhiki記法を用いて執筆している.hiki記法からhtmlへ変換するソフトhikidocによる容易な変換が可能なため,日記web appliのhiki diaryでも利用されている.hiki記法をベースにして,wiki wiki webと同等の機能を提供するhikiシステムがgithubに公開されており,個人の手持ちのパソコンにインストールしてwikiを利用することができる.西谷研ではさらにhiki記法を拡張して,コードのカラー表示,数式のlatex記述が可能となるシステムを利用している.
7
+
8
+ 本資料では,卒論の編集作業を効率化する図に示すようなシステムの使い方を紹介する.
9
+ !!!caption:卒論編集システムの概要.
10
+ {{attach_view(hikiutils_bob.002.jpeg,hikiutils_bob)}}
11
+
12
+ 例えば,卒業生をyamaneとしよう.yamaneの個人のMacの自分のdirectory(hikiutils_yamane)に幾つかのファイルを作成して卒論を書いているとする.これを指導教官(bob)が編集する必要がある.この同期には,Githubにより提供される共同作業環境をつかう.これだけでは編集中の文書の体裁がわかりにくい.そこで,hikiシステムにより容易にwebブラウザ上に完成形を表示しつつ執筆することが求められる.このような操作環境を提供するのが,hikiutils -iである.
13
+ ! hikiutilsのinstall
14
+ hikiuitlsをgemからinstallしておく必要がある.コマンドは以下の通り.
15
+
16
+ gem install hikiutils
17
+ さらに
18
+ hiki -v
19
+ で0.2.3.2以上であることを確認.
20
+
21
+ ! 個別ディレクトリーの構成
22
+ 図にhikiutils_bobのディレクトリー構成を示す.
23
+ !!!caption:hikiutils_bobのディレクトリー構成.
24
+ {{attach_view(hikiutils_bob.003.jpeg,hikiutils_bob)}}
25
+
26
+ コマンド
27
+ hiki -i
28
+ によって以下のようなファイルが作成される.
29
+
30
+ <<< bash
31
+ bob% ls -lat
32
+ total 1072
33
+ -rw-r--r-- 1 bob 501 99 1 20 12:44 .hikirc
34
+ drwxr-xr-x 5 bob 501 170 1 20 12:44 figs/
35
+ drwxr-xr-x 12 bob 501 408 1 20 12:34 ./
36
+ -rw-r--r-- 1 bob 501 8 1 20 11:01 .gitignore
37
+ -rw-r--r-- 1 bob 501 3507 1 20 11:01 Rakefile
38
+ drwxr-xr-x 2 bob 501 68 1 20 11:01 data/
39
+ -rw-r--r-- 1 bob 501 2595 1 20 11:01 hiki_help.yml
40
+ drwxr-xr-x 26 bob 501 884 1 20 11:00 ../
41
+ >>>
42
+
43
+ この.hikircにデータが設定データが自動的に入る.さらにhikiutils_bob.hikiおよびhikiutils_bob.keyを作成する.これで執筆ファイルの基本構成が出来上がる.
44
+
45
+ keynoteで図を作成して,hikiutils_bob.hikiに文章を記述していく.
46
+
47
+ !一般的な執筆手順
48
+ #書類の作成
49
+ ##open -a mi hikiutils_bob.hiki
50
+ #keynoteを開ける
51
+ ##open hikiutils_bob.key
52
+ #keynoteのイメージをfigsに
53
+ ##keynoteでイメージへ書き出し(hikiutils_bobを仮定)
54
+ ##rake convert 80 hikiutils_bob
55
+ #hikiシステムとの同期
56
+ ## rake sync
57
+ # hikiシステムで表示
58
+ ## hiki -u hikiutils_bob
59
+
60
+ !rakeが用意しているタスク
61
+ rakeの用意しているコマンドは次のとおり.
62
+
63
+ <<< bash
64
+ rake check_previous # check previou and current sync
65
+ rake chenv # For hiki Errno::ENOENT, Errno::EACCES
66
+ rake convert # convert fig size SCALE TARGET_DIR
67
+ rake force_sync # force_sync hikis and figs to hiki directory
68
+ rake increment # increment fig NUBERS in FILE
69
+ rake number # numbering figs from the NUBER in FILE
70
+ rake self_copy # self copy to hikiutils template directory
71
+ rake sync # normal sync hikis and figs to hiki directory
72
+ rake sync0 # sync0 hikis and figs to hiki directory
73
+ >>>
74
+
75
+ !!rake sync
76
+ hikiutils_bobにある必要な書類をhikiシステムにコピーする.その際,名前の書き換えを行う.
77
+ || hikiutils_bobでの名前 || hikiシステムでの名前
78
+ || hikiutils_bob.hiki || hikiutils_bob
79
+ || introduction.hiki || hikiutils_bob_introduction
80
+
81
+ figsディレクトリー内のファイルはhiki/cache/attache/hikiutils_bobにcpされる.従って,hiki文書中で参照するには,
82
+ {{attach_view(hogehoge.png, hikiutils_bob)}}
83
+ という記述が必要となる.
84
+
85
+ !!rake convert
86
+ keynoteが吐き出したイメージを変換するためのコマンド.ImageMagickがインストールされている必要がある.ない場合は,自分でbrewからinstallするか,[[https://www.imagemagick.org/script/binary-releases.php]]からダウンロード.うまくいかない場合はdonkeyに聞いてみてください.
87
+
88
+ rake convert 80 hikiutils_bob
89
+ によって,hikiutils_bobにkeynoteから吐いたpngファイルを80%に縮小してfigsにためる.
90
+
91
+ !!rake force_sync
92
+ hikiシステム側で直接変更を加えると,hikiutilsがsyncした時と差ができる.これを検知して,ユーザに注意を喚起する仕組みがある(rake check_previous).これはsyncした時に自動的に呼び出される.違いの出たfilesを修正した後に強制的に同期をとるためのコマンドとして,force_syncが用意されている.
93
+
94
+ !!rake chenv
95
+ hikiシステム上でerrorが出た場合に試してほしい.errorの状況は個人の設定によってちがうため,対処法の実装は網羅されていない.うまくいかない場合は西谷にIssuesとして投げるように.
96
+
97
+ !!rake increment
98
+ keynoteでページを追加するとhikiでの参照(attach_view)にずれが生じる.いまのところこれを解消する方法はなく手で修正を加える必要がある.ずれが単純な場合には,
99
+ <<< bash
100
+ cp hikiutils_bob.hiki tmp.hiki
101
+ rake increment 2 tmp.hiki > tmp2.hiki
102
+ >>>
103
+ としてattach_viewのページ番号を単純に増加させることができる.
104
+
105
+ !!rake number
106
+ 前節同じくfigs内の通し番号が変わった時にattach_viewの通し番号を調整するコマンド.
107
+ <<< bash
108
+ rake number 3 hikiutils_bob.hiki > tmp.hiki
109
+ cp tmp.hiki hikiutils_bob.hiki
110
+ >>>
111
+ とすると
112
+ <<<
113
+ 8c8
114
+ < {{attach_view(hikiutils_bob.002.jpeg,hikiutils_bob)}}
115
+ ---
116
+ > {{attach_view(hikiutils_bob.003.jpeg,hikiutils_bob)}}
117
+ 21c21
118
+ < {{attach_view(hikiutils_bob.003.jpeg,hikiutils_bob)}}
119
+ ---
120
+ > {{attach_view(hikiutils_bob.004.jpeg,hikiutils_bob)}}
121
+ >>>
122
+ などと番号を3から順に振り替えてくれる.
123
+
124
+ !githubによる同期
125
+ # git initが済んでいると仮定
126
+ # upstream, originの確認
127
+ ## bob% git remote -v
128
+ # git push作業
129
+ ## git add -A
130
+ ## git commit -m 'first commit'
131
+ ## git push origin master
132
+ # githubでbobへpull requestをかける
133
+ # 編集後
134
+ # git pull作業
135
+ ## git pull upstream origin
136
+ これがうまくいかん時は聞いてください.
137
+
138
+ !hiki_helpで表示されるヘルプ内容
139
+ hiki_help -i -fにより,使い方のメモが表示される.
140
+
141
+ !!hikiで卒論を書くときの初期化と掟
142
+ *開発メモ:figs,dataも作成
143
+ *目的:西谷が後で迷わないように決まったファイル構造を堅持すべし
144
+ *文書:hikiで書く.のちには,latexに変換するプログラムを提供します
145
+ *図表:すべての図表をkeynoteにまとめる,タイトルを分かりやすく書く
146
+ *データ:dataディレクトリにまとめる.ファイル名をkeynoteの対応する図表中に記す
147
+ *hiki --initializeで初期ファイル(Rakefile, ./.hikirc, hiki_help.yml)がcopyされる
148
+ *hiki_help.ymlを適宜~/.my_helpにcopyしてhiki_helpとして利用,(my_help参照)
149
+ *Errno::EACCESやpermission errorがでたときはrake chenvを試してみる(報告して)
150
+ *rake syncによってhikiディレクトリーと同期が取られる
151
+ *hiki -u TARGETによってブラウザー表示される
152
+ *テキストの拡張子は'.hiki'
153
+ *hikiでのurlはテキスト前とディレクトリーから自動生成される
154
+ *例えば,hiki2latex_saki/introduciton.hikiとするとhiki2latex_saki_introducitonと変換される
155
+
156
+ !!図表:すべての図表をkeynoteにまとめる,タイトルを分かりやすく書く
157
+ *keynoteに書いたスライドはイメージに書き出して,rake convert 80 TARGET_DIRでfigsに変換
158
+ *rake syncでfigsにあるfilesはhiki/target_dirにcpされる
159
+
160
+ convert #{source} -resize 20% #{target}によって,target=figs/TAERGET.pngに20%に縮小して保存される
161
+
162
+ *convert -density 300 view.svg view.pngで300dpiで変換
163
+ *attach_anchorでは
164
+ '{{attach_anchor(test.png, hiki2latex_saki)}}'
165
+ と,directory指定しなければならない.
166
+ *keynoteであとで図を挿入して番号が変わった時の原稿の一括変換
167
+ *rake increment 2 boundary_bob.hiki boundary_bob > tmp.hiki
168
+ *rake convert 60 boundary_bob
169
+ *rake sync
170
+ *hiki -u boundary_bob_tmp
@@ -1,15 +1,173 @@
1
+ # -*- coding: utf-8 -*-
2
+ require 'systemu'
3
+ require 'tempfile'
4
+ # -*- coding: utf-8 -*-
1
5
  begin
2
6
  target_dir = File.readlines('./.hikirc')[0].chomp
3
7
  rescue => e
4
8
  puts e
5
9
  exit
6
10
  end
7
- p target_dir
11
+ dirnames=Dir.pwd.split('/')
12
+ basename = (dirnames[-1]=='hikis')? dirnames[-2] : dirnames[-1]
13
+ $latex_dir= 'latex_dir'
8
14
 
9
15
  task :default do
10
16
  system 'rake -T'
11
17
  end
12
18
 
19
+ desc "latex conversion FILE1"
20
+ task :latex => [:latex_base] do
21
+ exit
22
+ end
23
+
24
+ desc "latex conversion FILE1 with wrap format"
25
+ task :latex_wrap => [:latex_base, :change_wrap] do
26
+ exit
27
+ end
28
+
29
+ desc "latex conversion whole hiki files in the current dir."
30
+ task :latex_all do
31
+ p entries=Dir.entries('.')
32
+ main_file=""
33
+ entries.each{|file|
34
+ next unless file.include?('.hiki')
35
+ next if file.include?('.hikirc')
36
+ f_name =File.basename(file,'.hiki')
37
+ if f_name==basename
38
+ option="--listings --head latex_dir/head.tex -p "
39
+ main_file=f_name
40
+ else
41
+ option="-l 2 --listings -b "
42
+ end
43
+ convert_to_latex(file, option)
44
+ }
45
+ cont=""
46
+ File.readlines(File.join($latex_dir,"#{main_file}.tex")).each{|line|
47
+ if line.match(/\\section{(.+)}/)
48
+ if m=line.match(/\\section{\\verb\|(.+)\|}/)
49
+ p m
50
+ p reg_exp = Regexp.new("#{basename}_(.+)")
51
+ p m_t=m[1].match(reg_exp)[1]
52
+ line = "\\include{#{m_t}}\n"
53
+ else
54
+ line = ""
55
+ end
56
+ end
57
+ cont << line
58
+ }
59
+ File.open(File.join($latex_dir,"#{main_file}.tex"),'w'){|file| file.print cont}
60
+ system "open latex_dir/#{main_file}.tex"
61
+ exit
62
+ end
63
+
64
+ desc "change latex figures to wrap format"
65
+ task :change_wrap do
66
+ lines = File.readlines($save_name)
67
+
68
+ cont = ""
69
+ lines.each{|line|
70
+ if line.include?('\begin{figure}[htbp]\begin{center}')
71
+ p line
72
+ cont << '\begin{wrapfigure}{r}{8cm}'+"\n"
73
+ cont << '\vspace{-2\baselineskip}'+"\n"
74
+ cont << '\begin{center}'+"\n"
75
+ elsif line.include?('\label{default}\end{center}\end{figure}')
76
+ p line
77
+ cont << '\end{center}'+"\n"
78
+ cont << '\vspace{2\baselineskip}'+"\n"
79
+ cont << '\end{wrapfigure}'+"\n"
80
+ else
81
+ cont << line
82
+ end
83
+ }
84
+ File.open($save_name,'w'){|file| file.print cont }
85
+
86
+ system("open #{$save_name}")
87
+ exit
88
+ end
89
+
90
+
91
+ desc "latex conversion FILE1(hiki) to FILE2(latex)"
92
+ task :latex_base do
93
+ Dir.mkdir($latex_dir) unless Dir.exist?($latex_dir)
94
+ convert_to_latex(ARGV[1])
95
+ system("open #{$save_name}")
96
+ end
97
+
98
+ def convert_to_latex(file_name, option=nil)
99
+ p file_name = file_name.include?('.hiki')? file_name : file_name+'.hiki'
100
+ p tex_name = File.basename(file_name,'.hiki')+'.tex'
101
+ p $save_name = ARGV[2] || File.join($latex_dir,tex_name)
102
+ pre_name = File.join($latex_dir,'pre.tex')
103
+ p pre_command = File.exist?(pre_name) ? '--pre '+pre_name : nil
104
+ lines = File.readlines(file_name)
105
+ cont = ""
106
+ lines.each{|line|
107
+ if m=line.match(/\{\{attach_view\((.*),(.*)\)\}\}/)
108
+ p line="\{\{attach_view\(#{m[1]}\)\}\}\n"
109
+ end
110
+ cont << line
111
+ }
112
+ tf1,tf2='tmp1.txt','tmp2.txt'
113
+ File.open(tf1,'w'){|file| file.print cont}
114
+ system "hiki2latex #{pre_command} #{option} #{tf1} > #{tf2}"
115
+ lines = File.readlines(tf2)
116
+ system "rm #{tf1} #{tf2}"
117
+
118
+ cont = ""
119
+ lines.each{|line|
120
+ if m=line.match(/\\includegraphics\[width=6cm\]\{(.+)\}/)
121
+ p line="\\includegraphics\[width=6cm,bb=0 0 442 500\]\{../figs/#{m[1]}\}\n"
122
+ cont << line
123
+ else
124
+ cont << line
125
+ end
126
+ }
127
+ File.open($save_name,'w'){|file| file.print cont }
128
+ end
129
+
130
+ desc "increment fig NUBERS in FILE"
131
+ task :increment do
132
+ number=ARGV[1]
133
+ file = ARGV[2]
134
+ dir = ARGV[3] || nil
135
+ lines = File.readlines(file)
136
+ cont = ""
137
+ lines.each{|line|
138
+ if m=line.match(/\{\{attach_view\((\w+|_).(\d+).jpeg\)\}\}/)
139
+ new_num=sprintf("%03d",m[2].to_i+number.to_i)
140
+ line="\{\{attach_view\(#{m[1]}.#{new_num}.jpeg,#{dir}\)\}\}\n"
141
+ cont << line
142
+ else
143
+ cont << line
144
+ end
145
+ }
146
+ print cont
147
+ exit
148
+ end
149
+
150
+ desc "numbering figs from the NUBER in FILE"
151
+ task :number do
152
+ number=ARGV[1].to_i
153
+ file = ARGV[2]
154
+ dir = ARGV[3] || nil
155
+ lines = File.readlines(file)
156
+ cont = ""
157
+ lines.each{|line|
158
+ if m=line.match(/\{\{attach_view\((\w+|_).(\d+).jpeg,(\w+)\)\}\}/)
159
+ new_num=sprintf("%03d",number)
160
+ line="\{\{attach_view\(#{m[1]}.#{new_num}.jpeg,#{m[3]}\)\}\}\n"
161
+ cont << line
162
+ number += 1
163
+ else
164
+ cont << line
165
+ end
166
+ }
167
+ print cont
168
+ exit
169
+ end
170
+
13
171
  desc "convert fig size SCALE TARGET_DIR"
14
172
  task :convert do
15
173
  scale = ARGV[1]
@@ -24,11 +182,16 @@ task :convert do
24
182
  exit
25
183
  end
26
184
 
27
- desc "sync hikis and figs to hiki directory"
28
- task :sync do
29
- p dirnames=Dir.pwd.split('/')
30
- p basename = (dirnames[-1]=='hikis')? dirnames[-2] : dirnames[-1]
31
- p entries=Dir.entries('.')
185
+ desc "normal sync hikis and figs to hiki directory"
186
+ task :sync => [:check_previous,:sync0]
187
+
188
+
189
+ desc "force_sync hikis and figs to hiki directory"
190
+ task :force_sync => [:sync0]
191
+
192
+ desc "sync0 hikis and figs to hiki directory"
193
+ task :sync0 do
194
+ entries=Dir.entries('.')
32
195
  entries[2..-1].each{|source| #cp *.hiki
33
196
  next unless source.include?('.hiki')
34
197
  next if source.include?('.hikirc')
@@ -39,11 +202,19 @@ task :sync do
39
202
  }
40
203
  p entries=Dir.entries('./figs') #cp files in figs
41
204
  p target = File.join(target_dir,'cache','attach',basename)
42
- FileUtils.mkdir_p(target,:verbose=>true) unless File.exists?(target)
205
+ FileUtils.mkdir(target,:verbose=>true) unless File.exists?(target)
43
206
  entries[2..-1].each{|file|
44
207
  p source = File.join('./figs',file)
45
208
  FileUtils.cp(source,target,:verbose=>true)
46
209
  }
210
+
211
+ File.open('./.hikirc','w'){|file|
212
+ status, stdout, stderr =systemu "hiki -l #{basename}*"
213
+ file.print(target_dir+"\n")
214
+ stdout.split("\n")[3..-1].each{|line|
215
+ file.print line+"\n"
216
+ }
217
+ }
47
218
  exit
48
219
  end
49
220
 
@@ -56,11 +227,41 @@ end
56
227
 
57
228
  desc "self copy to hikiutils template directory"
58
229
  task :self_copy do
59
- p cp_files=[['Rakefile','Rakefile_hiki_sync'],
230
+ p cp_files=[[File.join(Dir.pwd,'Rakefile'),'Rakefile_hiki_sync'],
60
231
  [File.join(ENV['HOME'],'.my_help','hiki_help.yml'),'hiki_help.yml']]
61
232
  cp_files.each{|files|
62
- p source = File.join(Dir.pwd,'Rakefile')
233
+ p source = files[0]
63
234
  p target = File.join('/Users/bob/Github/hikiutils/lib/templates/',files[1])
64
235
  FileUtils.cp(source,target,:verbose=>true)
65
236
  }
66
237
  end
238
+
239
+ desc "check previou and current sync"
240
+ task :check_previous do
241
+ current={}
242
+ print "current hiki dir\n"
243
+ status, stdout, stderr = systemu("hiki -l #{basename}*")
244
+ stdout.split("\n")[3..-1].each{|line|
245
+ p line
246
+ file= line.split(/\s+/)[-1]
247
+ current[file]=line
248
+ }
249
+ previous={}
250
+ print "previous sync\n"
251
+ File.readlines('.hikirc')[1..-1].each{|line|
252
+ p line.chomp
253
+ file= line.split(/\s+/)[-1]
254
+ previous[file]=line.chomp
255
+ }
256
+ changed = []
257
+ current.each_pair{|key,val|
258
+ if !previous.include?(key) or previous[key]!=val
259
+ changed << val+"\n"
260
+ end
261
+ }
262
+ if changed.size != 0
263
+ print("hiki dirで変更が発生しています.\n")
264
+ changed.each{|line| print line+"\n"}
265
+ exit
266
+ end
267
+ end
@@ -1,66 +1,53 @@
1
- begin
2
- target_dir = File.readlines('./.hikirc')[0].chomp
3
- rescue => e
4
- puts e
5
- exit
6
- end
7
- p target_dir
8
-
9
- task :default do
10
- system 'rake -T'
11
- end
12
-
13
- desc "convert fig size SCALE TARGET_DIR"
14
- task :convert do
15
- scale = ARGV[1]
16
- target_dir=ARGV[2]
17
- Dir.entries(target_dir)[2..-1].each{|file|
18
- p file
19
- source = File.join(target_dir,file)
20
- target = File.join('figs',file)
21
- p command = "convert #{source} -resize #{scale}\% #{target}"
22
- system command
23
- }
24
- exit
25
- end
26
-
27
- desc "sync hikis and figs to hiki directory"
28
- task :sync do
29
- p dirnames=Dir.pwd.split('/')
30
- p basename = (dirnames[-1]=='hikis')? dirnames[-2] : dirnames[-1]
31
- p entries=Dir.entries('.')
32
- entries[2..-1].each{|source| #cp *.hiki
33
- next unless source.include?('.hiki')
34
- next if source.include?('.hikirc')
35
- p base = source.split('.')[0]
36
- name = (base==basename)? base : basename+'_'+base
37
- p target = File.join(target_dir,'text',name)
38
- FileUtils.cp(source,target,:verbose=>true)
39
- }
40
- p entries=Dir.entries('./figs') #cp files in figs
41
- p target = File.join(target_dir,'cache','attach',basename)
42
- FileUtils.mkdir(target,:verbose=>true) unless File.exists?(target)
43
- entries[2..-1].each{|file|
44
- p source = File.join('./figs',file)
45
- FileUtils.cp(source,target,:verbose=>true)
46
- }
47
- exit
48
- end
49
-
50
- desc "For hiki Errno::ENOENT, Errno::EACCES"
51
- task :chenv do
52
- p user = ENV['USER']
53
- system("sudo chmod -R a+w #{target_dir}")
54
- # system("sudo chown -R #{user} #{target_dir}")
55
- end
56
-
57
- desc "self copy to hikiutils template directory"
58
- task :self_copy do
59
- p cp_files=[['Rakefile','Rakefile_hiki_sync'],
60
- [File.join(ENV['HOME'],'.my_help','hiki_help.yml'),'hiki_help.yml']]
61
- cp_files.each{|files|
62
- p source = File.join(Dir.pwd,'Rakefile')
63
- p target = File.join('/Users/bob/Github/hikiutils/lib/templates/',files[1])
64
- FileUtils.cp(source,target,:verbose=>true)
65
- }
66
- end
1
+ # -*- coding: utf-8 -*-
2
+ ---
3
+ :head:
4
+ - hikiutil関連のヘルプ
5
+ :initialize:
6
+ :opts:
7
+ :short: "-i"
8
+ :long: "--initialize"
9
+ :desc: hikiで卒論を書くときの初期化と掟
10
+ :title: hikiで卒論を書くときの初期化と掟
11
+ :cont:
12
+ - 開発メモ:figs,dataも作成
13
+ - 目的:西谷が後で迷わないように決まったファイル構造を堅持すべし
14
+ - 文書:hikiで書く.のちには,latexに変換するプログラムを提供します
15
+ - 図表:すべての図表をkeynoteにまとめる,タイトルを分かりやすく書く
16
+ - データ:dataディレクトリにまとめる.ファイル名をkeynoteの対応する図表中に記す
17
+ - hiki --initializeで初期ファイル(Rakefile, ./.hikirc, hiki_help.yml)がcopyされる
18
+ - hiki_help.ymlを適宜~/.my_helpにcopyしてhiki_helpとして利用,(my_help参照)
19
+ - Errno::EACCESやpermission errorがでたときはrake chenvを試してみる(報告して)
20
+ - rake syncによってhikiディレクトリーと同期が取られる
21
+ - hiki -u TARGETによってブラウザー表示される
22
+ - テキストの拡張子は'.hiki'
23
+ - hikiでのurlはテキスト前とディレクトリーから自動生成される
24
+ - 例えば,hiki2latex_saki/introduciton.hikiとするとhiki2latex_saki_introducitonと変換される
25
+ :error:
26
+ :opts:
27
+ :short: "-e"
28
+ :long: "--error"
29
+ :desc: error対応
30
+ :title: error対応
31
+ :cont:
32
+ - Permission denied - ./data/text/boundary_narita (Errno::EACCES)->テキストにhikiが書き込めない,chmod
33
+ a+w FILE
34
+ :figs:
35
+ :opts:
36
+ :short: "-f"
37
+ :long: "--figs"
38
+ :desc: 図表:すべての図表をkeynoteにまとめる,タイトルを分かりやすく書く
39
+ :title: 図表:すべての図表をkeynoteにまとめる,タイトルを分かりやすく書く
40
+ :cont:
41
+ - keynoteに書いたスライドはイメージに書き出して,rake convert 80 TARGET_DIRでfigsに変換
42
+ - rake syncでfigsにあるfilesはhiki/target_dirにcpされる
43
+ - 'convert #{source} -resize 20% #{target}によって,target=figs/TAERGET.pngに20%に縮小して保存される'
44
+ - convert -density 300 view.svg view.pngで300dpiで変換
45
+ - |
46
+ attach_anchorでは
47
+ '{{attach_anchor(test.png, hiki2latex_saki)}}'
48
+ と,directory指定しなければならない.
49
+ - keynoteであとで図を挿入して番号が変わった時の原稿の一括変換
50
+ - rake increment 2 boundary_bob.hiki boundary_bob > tmp.hiki
51
+ - rake convert 60 boundary_bob
52
+ - rake sync
53
+ - hiki -u boundary_bob_tmp
@@ -0,0 +1,4 @@
1
+ \relax
2
+ \@writefile{toc}{\contentsline {section}{\numberline {1}コマンド名の検討}{1}}
3
+ \@writefile{lot}{\contentsline {table}{\numberline {1}{\ignorespaces }}{1}}
4
+ \newlabel{default}{{1}{1}}