mathjax-yard 0.1.0 → 1.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
data/lib/mathjax-yard.rb CHANGED
@@ -1,11 +1,11 @@
1
1
  require "mathjax-yard/version"
2
+ require "mathjax-yard/script"
2
3
  require 'optparse'
3
4
  require 'yaml'
4
5
  require 'fileutils'
5
-
6
+ require 'systemu'
6
7
 
7
8
  module MathJaxYard
8
- # Your code goes here...
9
9
  class Command
10
10
  def self.run(argv=[])
11
11
  new(argv).execute
@@ -19,7 +19,6 @@ module MathJaxYard
19
19
  end
20
20
 
21
21
  def execute
22
- # @argv << '--help' if @argv.size==0
23
22
  command_parser = OptionParser.new do |opt|
24
23
  opt.on('-v', '--version','show program Version.') { |v|
25
24
  opt.version = Yardmath::VERSION
@@ -37,6 +36,10 @@ module MathJaxYard
37
36
  revert(directory)
38
37
  exit
39
38
  }
39
+ opt.on('-i', '--init','initiation for mathjax extension on yard layout.') {
40
+ init_yard()
41
+ exit
42
+ }
40
43
  end
41
44
  command_parser.banner = "Usage: yardmath [options] [DIRECTORY]"
42
45
  command_parser.parse!(@argv)
@@ -45,23 +48,44 @@ module MathJaxYard
45
48
  exit
46
49
  end
47
50
 
51
+ def init_yard()
52
+ target_dir=get_yard_layout_dir()
53
+ FileUtils.cd(target_dir){
54
+ tmp_dir='mathjax' # 'math2'
55
+ FileUtils.cp_r('default',tmp_dir)
56
+ modify_layout("#{tmp_dir}/layout/html/layout.erb")
57
+ modify_layout("#{tmp_dir}/onefile/html/layout.erb")
58
+ }
59
+ end
60
+
61
+ def get_yard_layout_dir()
62
+ status, stdout, stderr = systemu('gem env | grep INSTALLATION ')
63
+ p inst_dir= stdout.split("\n")[0].split(': ')[1]
64
+ status, stdout, stderr = systemu('yard -v')
65
+ p yard_num= stdout.split(' ')[0]+'-'+stdout.split(' ')[1]
66
+ p target_dir = File.join(inst_dir,'gems',yard_num,"templates")
67
+ return target_dir
68
+ end
69
+
70
+ def modify_layout(file_name)
71
+ p file_name
72
+ src=Ffile.read(file_name)
73
+ src.gsub!(ORIGINAL,MATH_SCRIPT+ORIGINAL)
74
+ File.write(file_name,src)
75
+ end
76
+
48
77
  def post_operation
49
- file = File.open("./mathjax.yml",'r')
50
- src = file.read
78
+ src = File.read("./mathjax.yml")
51
79
  p data = YAML.load(src)
52
80
  data.each_pair{|file, tags|
53
81
  File.basename(file).scan(/(.+)\.md/)
54
82
  p basename = $1
55
83
  target = "./doc/file.#{basename}.html"
56
- file = File.open(target,'r')
57
- src = file.read
58
- file.close
84
+ src = File.read(target)
59
85
  tags.each_pair{|tag,eq|
60
86
  src.gsub!(tag,eq)
61
87
  }
62
- file = File.open(target,'w')
63
- file.print(src)
64
- file.close
88
+ File.write(target,src)
65
89
  }
66
90
  end
67
91
 
@@ -85,33 +109,15 @@ module MathJaxYard
85
109
  @eq_data.delete(file)
86
110
  else
87
111
  write_output_on_target(file,output)
88
- # write_output_on_backup(file,output,'.mjx')
89
112
  end
90
113
  }
91
- save_yaml(@eq_data,"mathjax.yml")
92
- end
93
-
94
- def write_output_on_backup(file,output,extention='.mjx')
95
- file.scan(/(.+)\.md/)
96
- p basename = $1
97
- b_file = File.open(basename+extention+'.md','w')
98
- b_file.print output
99
- b_file.close
114
+ File.write("mathjax.yml",YAML.dump(@eq_data))
100
115
  end
101
116
 
102
117
  def write_output_on_target(file,output)
103
118
  b_file = file+'.back'
104
119
  FileUtils.mv(file,b_file)
105
- t_file = File.open(file,'w')
106
- t_file.print output
107
- t_file.close
108
- end
109
-
110
- def save_yaml(data,file)
111
- print yaml_data=YAML.dump(data)
112
- math_file = File.open(file,'w')
113
- math_file.print(yaml_data)
114
- math_file.close
120
+ File.write(file,output)
115
121
  end
116
122
 
117
123
  def mk_tags(lines,file_name)
@@ -121,18 +127,22 @@ module MathJaxYard
121
127
  if @in_eq_block #inside in eq block
122
128
  if line =~/^\$\$/ #closing
123
129
  stored_eq << "$"
124
- output << store_eq_data(stored_eq,file_name)
130
+ output << store_eq_data("$#{stored_eq}$",file_name)
125
131
  stored_eq=""
126
132
  @in_eq_block = !@in_eq_block
127
133
  else #normal op. in eq block
128
134
  p stored_eq << line
129
135
  end
130
136
  else #outside eq block
131
- if line =~ /\$(.+)\$/ #normal op. in line eq.
132
- p converted =check_multiple_match($1,file_name)
133
- output << $`+converted+$'
134
- elsif line =~/^\$\$/ # opening in eq block
135
- p line
137
+ case line
138
+ when /\\\$(.*?)\\\$/
139
+ output << line # tryed to change $$ but failed.
140
+ when /\$(.+?)\$/
141
+ line.gsub!(/\$(.+?)\$/){|equation|
142
+ store_eq_data(equation,file_name)
143
+ }
144
+ output << line
145
+ when /^\$\$/ # opening in eq block
136
146
  @in_eq_block = !@in_eq_block
137
147
  stored_eq << "$"
138
148
  else #normal op (no eq)
@@ -146,32 +156,9 @@ module MathJaxYard
146
156
  def store_eq_data(equation,file_name)
147
157
  @eq_number+=1
148
158
  tag="$MATHJAX#{@eq_number}$"
149
- @eq_data[file_name][tag] = "$#{equation}$"
159
+ @eq_data[file_name][tag] = equation
150
160
  return tag
151
161
  end
152
-
153
- def check_multiple_match(line,file)
154
- if !line.include?('$') or
155
- (line=~/^\$(.+)\$$/) then
156
- return store_eq_data(line,file)
157
- end
158
- inline_eq = true
159
- equation,text="",""
160
- line.each_char{|char|
161
- if char == '$'
162
- if inline_eq then
163
- text << store_eq_data(equation,file)
164
- equation = ""
165
- else
166
- end
167
- inline_eq = !inline_eq
168
- else
169
- inline_eq ? equation << char : text << char
170
- end
171
- }
172
- text << store_eq_data(equation,file)
173
- return text
174
- end
175
162
  end
176
163
  end
177
164
 
@@ -0,0 +1,20 @@
1
+ MATH_SCRIPT= <<EOS
2
+ <script type="text/x-mathjax-config">
3
+ MathJax.Hub.Config({
4
+ tex2jax:{
5
+ inlineMath: [ ['$','$'], ["\\(","\\)"] ],
6
+ displayMath: [ ['$$','$$'], ["\\[","\\]"] ]
7
+ }
8
+ });
9
+ </script>
10
+ <script type="text/javascript"
11
+ src="http://cdn.mathjax.org/mathjax/latest/MathJax.js?config=TeX-AM\
12
+ S_HTML">
13
+ </script>
14
+ <meta http-equiv="X-UA-Compatible" CONTENT="IE=EmulateIE7" />
15
+ EOS
16
+
17
+ ORIGINAL = <<EOS
18
+ <%= erb(:headers) %>
19
+ </head>
20
+ EOS
@@ -1,3 +1,3 @@
1
1
  module MathJaxYard
2
- VERSION = "0.1.0"
2
+ VERSION = "1.0.1"
3
3
  end
data/mathjax-yard.gemspec CHANGED
@@ -11,7 +11,7 @@ Gem::Specification.new do |spec|
11
11
 
12
12
  spec.summary = %q{mathjax-yard provides mathjax extention to yard.}
13
13
  spec.description = %q{mathjax-yard provides mathjax extention to yard.}
14
- spec.homepage = "http://nishitani0.kwansei.ac.jp/Open/mathjax-yad"
14
+ spec.homepage = "https://github.com/daddygongon/mathjax-yard"
15
15
  spec.license = "MIT"
16
16
 
17
17
  # Prevent pushing this gem to RubyGems.org by setting 'allowed_push_host', or
@@ -27,8 +27,10 @@ Gem::Specification.new do |spec|
27
27
  spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
28
28
  spec.require_paths = ["lib"]
29
29
 
30
+ spec.required_ruby_version = ">= 2.0.0"
30
31
  spec.add_development_dependency "bundler", "~> 1.11"
31
32
  spec.add_development_dependency "rake", "~> 10.0"
32
33
  spec.add_development_dependency "rspec", "~> 3.0"
33
34
  spec.add_development_dependency "yard", "~> 0.8"
35
+ spec.add_runtime_dependency "systemu"
34
36
  end
data/mathjax.yml CHANGED
@@ -1,5 +1,5 @@
1
1
  ---
2
- lib/../docs/atom.md:
2
+ lib/../mathjax-yard.wiki/atom.md:
3
3
  "$MATHJAX1$": "$i$"
4
4
  "$MATHJAX2$": |-
5
5
  $$E_i = \sum_j\phi \left( r_j \right) + f(\rho)
@@ -20,8 +20,8 @@ lib/../docs/atom.md:
20
20
  $$E_v = -\frac{E_c}{2} \frac{2-poq}{1-poq}
21
21
  $$
22
22
  "$MATHJAX14$": "$q$"
23
- lib/../docs/potential2.md:
24
- "$MATHJAX15$": "$$ F(s)=\\int_{0}^{\\infty}f(t)e^{-st}dt $$"
23
+ lib/../mathjax-yard.wiki/potential2.md:
24
+ "$MATHJAX15$": "$$ F(s)=\\int_{0}^{\\infty}f(t)e^{-st}dt $"
25
25
  "$MATHJAX16$": |-
26
26
  $$
27
27
  r_1=r/r_0
data/mathjax.yml.bk ADDED
@@ -0,0 +1,28 @@
1
+ ---
2
+ lib/../mathjax-yard.wiki/atom.md:
3
+ "$MATHJAX1$": "$i$"
4
+ "$MATHJAX2$": |-
5
+ $$E_i = \sum_j\phi \left( r_j \right) + f(\rho)
6
+ $$
7
+ "$MATHJAX3$": "$r_j$"
8
+ "$MATHJAX4$": "$j$"
9
+ "$MATHJAX5$": "$E_i$"
10
+ "$MATHJAX6$": "$i$"
11
+ "$MATHJAX7$": |-
12
+ $$f(\rho) =\sqrt{\rho}=\sqrt{\sum_j h^2 \left( r_j \right) }
13
+ $$
14
+ "$MATHJAX8$": "$\\rho$"
15
+ "$MATHJAX9$": "$NPT$"
16
+ "$MATHJAX10$": "$E-V$"
17
+ "$MATHJAX11$": "$T=0.1$"
18
+ "$MATHJAX12$": "$E_v$"
19
+ "$MATHJAX13$": |-
20
+ $$E_v = -\frac{E_c}{2} \frac{2-poq}{1-poq}
21
+ $$
22
+ "$MATHJAX14$": "$q$"
23
+ lib/../mathjax-yard.wiki/potential2.md:
24
+ "$MATHJAX15$": "$$ F(s)=\\int_{0}^{\\infty}f(t)e^{-st}dt $"
25
+ "$MATHJAX16$": |-
26
+ $$r_1=r/r_0 \\
27
+ \frac{ d_0 \left( r_1^{-n}m- r_1^{-m} n \right) }{ -n + m }
28
+ $$
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: mathjax-yard
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0
4
+ version: 1.0.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Shigeto R. Nishitani
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2016-06-21 00:00:00.000000000 Z
11
+ date: 2016-06-23 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -66,6 +66,20 @@ dependencies:
66
66
  - - "~>"
67
67
  - !ruby/object:Gem::Version
68
68
  version: '0.8'
69
+ - !ruby/object:Gem::Dependency
70
+ name: systemu
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - ">="
74
+ - !ruby/object:Gem::Version
75
+ version: '0'
76
+ type: :runtime
77
+ prerelease: false
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - ">="
81
+ - !ruby/object:Gem::Version
82
+ version: '0'
69
83
  description: mathjax-yard provides mathjax extention to yard.
70
84
  email:
71
85
  - shigeto_nishitani@me.com
@@ -85,15 +99,34 @@ files:
85
99
  - Rakefile
86
100
  - bin/console
87
101
  - bin/setup
88
- - docs/README_ja.md
89
- - docs/atom.md
90
- - docs/potential2.md
102
+ - doc/MathJaxYard.html
103
+ - doc/MathJaxYard/Command.html
104
+ - doc/_index.html
105
+ - doc/class_list.html
106
+ - doc/css/common.css
107
+ - doc/css/full_list.css
108
+ - doc/css/style.css
109
+ - doc/file.Home.html
110
+ - doc/file.README.html
111
+ - doc/file.README_ja.html
112
+ - doc/file.atom.html
113
+ - doc/file.potential2.html
114
+ - doc/file_list.html
115
+ - doc/frames.html
116
+ - doc/index.html
117
+ - doc/js/app.js
118
+ - doc/js/full_list.js
119
+ - doc/js/jquery.js
120
+ - doc/method_list.html
121
+ - doc/top-level-namespace.html
91
122
  - exe/mathjax-yard
92
123
  - lib/mathjax-yard.rb
124
+ - lib/mathjax-yard/script.rb
93
125
  - lib/mathjax-yard/version.rb
94
126
  - mathjax-yard.gemspec
95
127
  - mathjax.yml
96
- homepage: http://nishitani0.kwansei.ac.jp/Open/mathjax-yad
128
+ - mathjax.yml.bk
129
+ homepage: https://github.com/daddygongon/mathjax-yard
97
130
  licenses:
98
131
  - MIT
99
132
  metadata: {}
@@ -105,7 +138,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
105
138
  requirements:
106
139
  - - ">="
107
140
  - !ruby/object:Gem::Version
108
- version: '0'
141
+ version: 2.0.0
109
142
  required_rubygems_version: !ruby/object:Gem::Requirement
110
143
  requirements:
111
144
  - - ">="
data/docs/README_ja.md DELETED
@@ -1,77 +0,0 @@
1
- # MathJaxYard
2
-
3
- mathjax-yardはyardによるmarkdown変換においてmathjaxを使えるようにする拡張機能です.
4
-
5
- ## Installation
6
-
7
- Add this line to your application's Gemfile:
8
-
9
- ```ruby
10
- gem 'mathjax-yard'
11
- ```
12
-
13
- And then execute:
14
-
15
- $ bundle
16
-
17
- Or install it yourself as:
18
-
19
- $ gem install mathjax-yard
20
-
21
- ## Usage
22
-
23
- mathjax-yardはcommand line toolとしての使用を意図して作られています.例えば,Rakefileでの使用例は次の通りです.
24
-
25
- ```
26
- desc "make documents by yard"
27
- task :yard do
28
- system('mathjax-yard')
29
- YARD::Rake::YardocTask.new
30
- end
31
-
32
- desc "make documents with yardmath"
33
- task :mathjax do
34
- system('mathjax-yard --post')
35
- end
36
- ```
37
-
38
- yardのデフォルトでの動作をなぞって,動作するように作られています.
39
- * mathjax-yardは./*/*.mdを探索し,それらの中に'$...$'あるいは'$$...$$'があると$MATHJAX**$というタグに付け替え,
40
- * *.md.backとしたファイルに元ファイルのバックアップを取り,*.mdにタグ付け替えした内容を保存します.
41
- *また,同時に, 'mathjax.yml'にそれらのhash関係をyaml形式で保存します.
42
- * 通常のrake yardで変換したのち,
43
- * 'mathjax-yard --post'によって,'doc/file.*.html'に残されたtagを元に戻します.
44
- * また同時に,backファイルを元に戻します.
45
-
46
- yardのoptionは,.yardoptsに
47
-
48
- ```
49
- -t mathjax -p templates
50
- -
51
- spec/*.md
52
- ```
53
-
54
- としています.また,htmlのhead部分にmathjaxのscriptを埋め込んだlayoutを用意しています.
55
-
56
- ```csh
57
- bob% bundle exec exe/mathjax-yard --help
58
- Usage: yardmath [options] [DIRECTORY]
59
- -v, --version show program Version.
60
- -r, --revert revert mjx file to orig file.
61
- -p, --post post operation.
62
- ```
63
-
64
- ## Development
65
-
66
- After checking out the repo, run `bin/setup` to install dependencies. Then, run `rake spec` to run the tests. You can also run `bin/console` for an interactive prompt that will allow you to experiment. Run `bundle exec mathjax-yard` to use the gem in this directory, ignoring other installed copies of this gem.
67
-
68
- To install this gem onto your local machine, run `bundle exec rake install`. To release a new version, update the version number in `version.rb`, and then run `bundle exec rake release`, which will create a git tag for the version, push git commits and tags, and push the `.gem` file to [rubygems.org](https://rubygems.org).
69
-
70
- ## Contributing
71
-
72
- Bug reports and pull requests are welcome on GitHub at https://github.com/[USERNAME]/mathjax-yard. This project is intended to be a safe, welcoming space for collaboration, and contributors are expected to adhere to the [Contributor Covenant](http://contributor-covenant.org) code of conduct.
73
-
74
-
75
- ## License
76
-
77
- The gem is available as open source under the terms of the [MIT License](http://opensource.org/licenses/MIT).
data/docs/atom.md DELETED
@@ -1,121 +0,0 @@
1
- # 概要
2
- # EAM
3
- EAM(Embedded atom method)は1980年代以降に,盛んに使われるようになった経験的原子間ポテンシャルである.
4
-
5
- ## エネルギー表記
6
- EAMは原子$i$のエネルギーを
7
-
8
- $$
9
- E_i = \sum_j\phi \left( r_j \right) + f(\rho)
10
- $$
11
-
12
- と表記する.右辺第1項は単なる2体間の相互作用を表わす.
13
- 右辺第2項が多体項と呼ばれるEAMに特徴的な項である.
14
- この工夫によって原子空孔を初め多くの金属物性を
15
- うまく表現することが可能となった.詳しくは西谷・赤本参照.
16
-
17
- さて,$r_j$はこの場合原子$j$との距離を意味しており,$E_i$は原子$i$の周りの原子との和によって求まる.多体項は,一般的に
18
-
19
- $$
20
- f(\rho) =\sqrt{\rho}=\sqrt{\sum_j h^2 \left( r_j \right) }
21
- $$
22
-
23
- によって求められる.$\rho$は強結合(tight binding)理論の2次モーメント近似と捉えると,電子密度を表わすとされている.
24
-
25
- ## 具体例
26
- ### for phi(r0)=-3.39, Ev=0.8, p=3.0 at r0=2.8577
27
- ```maple
28
-
29
- A0,B0,P,POQ,Q:=69.1378255, 12.47431958,
30
- 2.148157653, 2.893854749, 0.7423170267;
31
-
32
- -3.39*32;
33
- -108.48
34
- ```
35
- ```
36
- n:=12;
37
- ene:=r->n*A0*exp(-P*r);
38
- h:=r->B0*exp(-Q*r);
39
- rho:=r->12*h(r)^2;
40
- plot(ene(r)-sqrt(rho(r)),r=2..4);
41
- ```
42
- ![](eam_ev_plot.gif)
43
- ```
44
- r0:=fsolve(diff(ene(r)-sqrt(rho(r)),r),r=3);
45
- 2.857701344
46
- evalf(subs(r=r0,ene(r)-sqrt(rho(r))));
47
- -3.390000002
48
- ```
49
- ```math
50
- E_i = \sum _ j\phi \left( r_{{j}} \right) + \h \left( r_{{j}} \right)
51
- ```
52
-
53
- # LJ
54
- LJ(Lennard-Jones)はもっとも簡単な2体のポテンシャル.
55
-
56
- ## エネルギー表記
57
-
58
- ## 具体例
59
- ```maple
60
- A0:=1.587401051*0.7071067812/2.857701314;
61
- E0:=-1*4.0/12.0;
62
-
63
- A:=18.19007708;
64
- B:=89.22765864;
65
- phi:=r-> 12*(-A*(1/r**3)+B*(1/r**5));
66
- r0:=fsolve(diff(phi(r),r),r=3);
67
- 2.859281101
68
- phi(r0);
69
- -3.735125644
70
- ```
71
-
72
- ![](lj_ev_plot.gif)
73
-
74
- # EAM fitting
75
-
76
- EAM potentialの種々の構築手法を詳解する.
77
- ## background
78
- MCにおいて$NPT$一定の計算がうまくいっていない.
79
- - 覚埜式の$E-V$プロットをすると小体積でのエネルギの上がりが低い.
80
- - $T=0.1$[eV]で融けているよう
81
- なので,もう少し精密にEAMポテンシャルを構築してみる.
82
-
83
- ## poq fixed
84
-
85
- EAM potentialにおいて単原子空孔の生成エネルギ$E_v$は
86
-
87
- $$
88
- E_v = -\frac{E_c}{2} \frac{2-poq}{1-poq}
89
- $$
90
-
91
- の関係がある.したがって,
92
- ```maple
93
- Ev:=0.8;
94
- Ec:=3.39;
95
- eq1:=Ev=Ec/2*(2-poq)/(1-poq);
96
- solve(eq1,poq);
97
- 2.893854749
98
- ```
99
-
100
- さらにこの値を使ってポテンシャルのパラメータを求めるのは以下の通り.ここで,$q$を設定している.
101
-
102
- ```
103
- phi:=r->12.0*A*exp(-p*r)-sqrt(12.0*(B*exp(-q*r))^2);
104
- poq:=2.893854749;
105
- q:=3.00*0.2474390089;
106
- a0:=8.0828/2;
107
- r0:=evalf(a0*sqrt(2)/2.0); #2.857701345
108
- eq1:=phi(r0)=-3.39;
109
- s2:=solve(eq1,A);
110
- p:=poq*q; #2.148157653
111
- eq2:=subs(r=r0,diff(phi(r),r));
112
- #plot(subs(A=s2,eq2),B=0..20);
113
- b0:=fsolve(subs(A=s2,eq2),B=10);
114
- a0:=subs(B=b0,s2);
115
- phi0:=unapply(subs({A=a0,B=b0},phi(r)),r);
116
- plot(phi0(r),r=2..5);
117
- phi0(r0);
118
- a0,b0,p,poq,q;
119
- #69.1378255, 12.47431958, 2.148157653, 2.893854749, 0.7423170267
120
- ```
121
- ![](eam_ev.png)