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.
- checksums.yaml +4 -4
- data/hikiutils_bob/.gitignore +1 -0
- data/hikiutils_bob/Rakefile +267 -0
- data/hikiutils_bob/figs/hikiutils_bob.001.jpeg +0 -0
- data/hikiutils_bob/figs/hikiutils_bob.002.jpeg +0 -0
- data/hikiutils_bob/figs/hikiutils_bob.003.jpeg +0 -0
- data/hikiutils_bob/hiki_help.yml +53 -0
- data/hikiutils_bob/hikiutils_bob/hikiutils_bob.001.jpeg +0 -0
- data/hikiutils_bob/hikiutils_bob/hikiutils_bob.002.jpeg +0 -0
- data/hikiutils_bob/hikiutils_bob/hikiutils_bob.003.jpeg +0 -0
- data/hikiutils_bob/hikiutils_bob.hiki +8 -0
- data/hikiutils_bob/hikiutils_bob.key +0 -0
- data/hikiutils_bob/latex_all.hiki +153 -0
- data/hikiutils_bob/latex_dir/head.tex +8 -0
- data/hikiutils_bob/latex_dir/hikiutils_bob +243 -0
- data/hikiutils_bob/latex_dir/hikiutils_bob.001.bb +5 -0
- data/hikiutils_bob/latex_dir/hikiutils_bob.001.jpeg +0 -0
- data/hikiutils_bob/latex_dir/hikiutils_bob.002.bb +5 -0
- data/hikiutils_bob/latex_dir/hikiutils_bob.002.jpeg +0 -0
- data/hikiutils_bob/latex_dir/hikiutils_bob.003.bb +5 -0
- data/hikiutils_bob/latex_dir/hikiutils_bob.003.jpeg +0 -0
- data/hikiutils_bob/latex_dir/hikiutils_bob.aux +3 -0
- data/hikiutils_bob/latex_dir/hikiutils_bob.dvi +0 -0
- data/hikiutils_bob/latex_dir/hikiutils_bob.log +261 -0
- data/hikiutils_bob/latex_dir/hikiutils_bob.tex +54 -0
- data/hikiutils_bob/latex_dir/hikiutils_bob.toc +22 -0
- data/hikiutils_bob/latex_dir/latex_all.aux +31 -0
- data/hikiutils_bob/latex_dir/latex_all.tex +164 -0
- data/hikiutils_bob/latex_dir/pre.tex +36 -0
- data/hikiutils_bob/latex_dir/sync.aux +41 -0
- data/hikiutils_bob/latex_dir/sync.log +183 -0
- data/hikiutils_bob/latex_dir/sync.pdf +0 -0
- data/hikiutils_bob/latex_dir/sync.synctex.gz +0 -0
- data/hikiutils_bob/latex_dir/sync.tex +200 -0
- data/hikiutils_bob/latex_dir/to_latex.tex +44 -0
- data/hikiutils_bob/private_dir.graffle +1195 -0
- data/hikiutils_bob/sync.hiki +170 -0
- data/hikiutils_yamane/Rakefile +210 -9
- data/hikiutils_yamane/hiki_help.yml +53 -66
- data/hikiutils_yamane/latex_dir/command_table.aux +4 -0
- data/hikiutils_yamane/latex_dir/command_table.log +152 -0
- data/hikiutils_yamane/latex_dir/command_table.pdf +0 -0
- data/hikiutils_yamane/latex_dir/command_table.synctex.gz +0 -0
- data/hikiutils_yamane/latex_dir/command_table.tex +29 -0
- data/hikiutils_yamane/latex_dir/head.tex +8 -0
- data/hikiutils_yamane/latex_dir/hikiutils_yamane.aux +1 -0
- data/hikiutils_yamane/latex_dir/hikiutils_yamane.log +170 -0
- data/hikiutils_yamane/latex_dir/hikiutils_yamane.pdf +0 -0
- data/hikiutils_yamane/latex_dir/hikiutils_yamane.synctex.gz +0 -0
- data/hikiutils_yamane/latex_dir/hikiutils_yamane.tex +48 -0
- data/hikiutils_yamane/latex_dir/hikiutils_yamane.toc +0 -0
- data/hikiutils_yamane/latex_dir/pre.tex +36 -0
- data/lib/hikiutils/version.rb +1 -1
- data/lib/hikiutils.rb +13 -8
- data/lib/templates/Rakefile_hiki_sync +146 -14
- data/lib/templates/head.tex +8 -0
- data/lib/templates/pre.tex +36 -0
- 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
|
data/hikiutils_yamane/Rakefile
CHANGED
@@ -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
|
-
|
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
|
29
|
-
|
30
|
-
|
31
|
-
|
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.
|
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 =
|
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
|
-
|
2
|
-
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
|
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
|