texlab 0.1.1 → 0.2.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,9 @@
1
+ require "easystats"
2
+
3
+ # Average method for array with uncertainty calculation
4
+ class Array
5
+ def average
6
+ m = mean
7
+ m.pm(Math.sqrt(m.delta**2 + (standard_deviation*3)**2))
8
+ end
9
+ end
@@ -0,0 +1,54 @@
1
+ # table generation
2
+ #
3
+
4
+ def table title, settings={}
5
+ @_table = {}
6
+ yield
7
+ entries = @_table
8
+
9
+ unless @_tables
10
+ $_latexfile.table(entries, title, settings)
11
+ else
12
+ @_tables << [entries, title, settings]
13
+ end
14
+ end
15
+
16
+ def column title
17
+ @_table_columns << (@_table_columns.last[title] || {})
18
+
19
+ result = (yield if block_given?)
20
+ subcolumns = @_table_columns.pop
21
+
22
+ if not subcolumns.empty?
23
+ @_table_columns.last[title] = subcolumns
24
+ elsif result
25
+ if @_table_columns.last[title]
26
+ @_table_columns.last[title] = *@_table_columns.last[title], *result
27
+ else
28
+ @_table_columns.last[title] = *result
29
+ end
30
+ else
31
+ @_table_columns.last[title] ||= nil
32
+ end
33
+
34
+ end
35
+
36
+ def row title
37
+ @_table_columns = [@_table[title] || {}]
38
+ yield
39
+ @_table[title] = @_table_columns.first
40
+ end
41
+
42
+ def tables *args
43
+ opts = args.extract_options!
44
+ caption = args.shift
45
+
46
+ @_tables = []
47
+ yield
48
+
49
+ $_latexfile.tables(@_tables, caption, opts)
50
+
51
+ @_tables = nil
52
+ end
53
+
54
+
@@ -0,0 +1,6 @@
1
+ # tikz
2
+ def tikz *libs
3
+ $_erbout << "\\usepackage{tikz}\n"
4
+ $_erbout << "\\usetikzlibrary{#{libs.join(",")}}\n" if libs.any?
5
+ end
6
+
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: texlab
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.1
4
+ version: 0.2.0
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,77 +9,88 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2012-04-09 00:00:00.000000000Z
12
+ date: 2012-04-10 00:00:00.000000000Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: rake4latex
16
- requirement: &88161580 !ruby/object:Gem::Requirement
16
+ requirement: &89182830 !ruby/object:Gem::Requirement
17
17
  none: false
18
18
  requirements:
19
- - - ! '>='
19
+ - - =
20
20
  - !ruby/object:Gem::Version
21
- version: '0'
21
+ version: 0.1.3
22
22
  type: :runtime
23
23
  prerelease: false
24
- version_requirements: *88161580
24
+ version_requirements: *89182830
25
25
  - !ruby/object:Gem::Dependency
26
26
  name: plusminus
27
- requirement: &87952960 !ruby/object:Gem::Requirement
27
+ requirement: &89182540 !ruby/object:Gem::Requirement
28
28
  none: false
29
29
  requirements:
30
- - - ! '>='
30
+ - - =
31
31
  - !ruby/object:Gem::Version
32
- version: '0'
32
+ version: 0.2.0
33
33
  type: :runtime
34
34
  prerelease: false
35
- version_requirements: *87952960
35
+ version_requirements: *89182540
36
36
  - !ruby/object:Gem::Dependency
37
37
  name: easystats
38
- requirement: &87952470 !ruby/object:Gem::Requirement
38
+ requirement: &89182230 !ruby/object:Gem::Requirement
39
39
  none: false
40
40
  requirements:
41
- - - ! '>='
41
+ - - =
42
42
  - !ruby/object:Gem::Version
43
- version: '0'
43
+ version: 0.1.0
44
44
  type: :runtime
45
45
  prerelease: false
46
- version_requirements: *87952470
46
+ version_requirements: *89182230
47
47
  - !ruby/object:Gem::Dependency
48
48
  name: to_latex
49
- requirement: &87952090 !ruby/object:Gem::Requirement
49
+ requirement: &89181980 !ruby/object:Gem::Requirement
50
50
  none: false
51
51
  requirements:
52
- - - ! '>='
52
+ - - =
53
53
  - !ruby/object:Gem::Version
54
- version: '0'
54
+ version: 0.4.0
55
55
  type: :runtime
56
56
  prerelease: false
57
- version_requirements: *87952090
57
+ version_requirements: *89181980
58
58
  - !ruby/object:Gem::Dependency
59
59
  name: gnuplot
60
- requirement: &87951740 !ruby/object:Gem::Requirement
60
+ requirement: &89181660 !ruby/object:Gem::Requirement
61
61
  none: false
62
62
  requirements:
63
- - - ! '>='
63
+ - - ~>
64
64
  - !ruby/object:Gem::Version
65
- version: '0'
65
+ version: 2.4.1
66
66
  type: :runtime
67
67
  prerelease: false
68
- version_requirements: *87951740
68
+ version_requirements: *89181660
69
69
  - !ruby/object:Gem::Dependency
70
70
  name: latex
71
- requirement: &87951390 !ruby/object:Gem::Requirement
71
+ requirement: &89181360 !ruby/object:Gem::Requirement
72
72
  none: false
73
73
  requirements:
74
- - - ! '>='
74
+ - - =
75
75
  - !ruby/object:Gem::Version
76
- version: '0'
76
+ version: 0.1.3
77
+ type: :runtime
78
+ prerelease: false
79
+ version_requirements: *89181360
80
+ - !ruby/object:Gem::Dependency
81
+ name: nio-percent_fmt
82
+ requirement: &89180950 !ruby/object:Gem::Requirement
83
+ none: false
84
+ requirements:
85
+ - - =
86
+ - !ruby/object:Gem::Version
87
+ version: 0.0.0
77
88
  type: :runtime
78
89
  prerelease: false
79
- version_requirements: *87951390
90
+ version_requirements: *89180950
80
91
  - !ruby/object:Gem::Dependency
81
92
  name: rspec
82
- requirement: &87951050 !ruby/object:Gem::Requirement
93
+ requirement: &89180040 !ruby/object:Gem::Requirement
83
94
  none: false
84
95
  requirements:
85
96
  - - ~>
@@ -87,10 +98,10 @@ dependencies:
87
98
  version: 2.8.0
88
99
  type: :development
89
100
  prerelease: false
90
- version_requirements: *87951050
101
+ version_requirements: *89180040
91
102
  - !ruby/object:Gem::Dependency
92
103
  name: rdoc
93
- requirement: &87950720 !ruby/object:Gem::Requirement
104
+ requirement: &89179600 !ruby/object:Gem::Requirement
94
105
  none: false
95
106
  requirements:
96
107
  - - ~>
@@ -98,10 +109,10 @@ dependencies:
98
109
  version: '3.12'
99
110
  type: :development
100
111
  prerelease: false
101
- version_requirements: *87950720
112
+ version_requirements: *89179600
102
113
  - !ruby/object:Gem::Dependency
103
114
  name: bundler
104
- requirement: &87950450 !ruby/object:Gem::Requirement
115
+ requirement: &89179320 !ruby/object:Gem::Requirement
105
116
  none: false
106
117
  requirements:
107
118
  - - ~>
@@ -109,10 +120,10 @@ dependencies:
109
120
  version: 1.0.0
110
121
  type: :development
111
122
  prerelease: false
112
- version_requirements: *87950450
123
+ version_requirements: *89179320
113
124
  - !ruby/object:Gem::Dependency
114
125
  name: jeweler
115
- requirement: &87950100 !ruby/object:Gem::Requirement
126
+ requirement: &89179040 !ruby/object:Gem::Requirement
116
127
  none: false
117
128
  requirements:
118
129
  - - ~>
@@ -120,10 +131,10 @@ dependencies:
120
131
  version: 1.8.3
121
132
  type: :development
122
133
  prerelease: false
123
- version_requirements: *87950100
134
+ version_requirements: *89179040
124
135
  - !ruby/object:Gem::Dependency
125
136
  name: rcov
126
- requirement: &87949610 !ruby/object:Gem::Requirement
137
+ requirement: &89178770 !ruby/object:Gem::Requirement
127
138
  none: false
128
139
  requirements:
129
140
  - - ! '>='
@@ -131,7 +142,7 @@ dependencies:
131
142
  version: '0'
132
143
  type: :development
133
144
  prerelease: false
134
- version_requirements: *87949610
145
+ version_requirements: *89178770
135
146
  description: texlab a toolkit based on erb that for creating documents and doing calculations
136
147
  at the same time. It is capable to output the proper number of significant digits,
137
148
  generate tables and plots using gnuplot. It has a simple DSL.
@@ -144,8 +155,6 @@ extra_rdoc_files:
144
155
  - README.rdoc
145
156
  - README.txt
146
157
  files:
147
- - .document
148
- - .rspec
149
158
  - Gemfile
150
159
  - Gemfile.lock
151
160
  - LICENSE.txt
@@ -153,18 +162,24 @@ files:
153
162
  - README.txt
154
163
  - Rakefile
155
164
  - VERSION
165
+ - bin/texlab
156
166
  - bin/texlab-compile
157
167
  - bin/texlab-compile.tex
158
168
  - bin/texlab-console
159
- - doc/readme.texlab
160
169
  - lib/texlab.rb
161
- - lib/texlab/boot.rb
170
+ - lib/texlab/debug.rb
171
+ - lib/texlab/figure.rb
172
+ - lib/texlab/hash.rb
173
+ - lib/texlab/latex.rb
174
+ - lib/texlab/macro.rb
175
+ - lib/texlab/math.rb
176
+ - lib/texlab/plot.rb
177
+ - lib/texlab/stats.rb
178
+ - lib/texlab/table.rb
162
179
  - lib/texlab/texlabfile.rb
180
+ - lib/texlab/tikz.rb
163
181
  - spec/spec_helper.rb
164
182
  - spec/texlab_spec.rb
165
- - texlab
166
- - texlab.gemspec
167
- - vim/texlab.vim
168
183
  homepage: http://github.com/cie/texlab
169
184
  licenses:
170
185
  - MIT
@@ -180,7 +195,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
180
195
  version: '0'
181
196
  segments:
182
197
  - 0
183
- hash: -632676239
198
+ hash: 712927149
184
199
  required_rubygems_version: !ruby/object:Gem::Requirement
185
200
  none: false
186
201
  requirements:
data/.document DELETED
@@ -1,5 +0,0 @@
1
- lib/**/*.rb
2
- bin/*
3
- -
4
- features/**/*.feature
5
- LICENSE.txt
data/.rspec DELETED
@@ -1 +0,0 @@
1
- --color
@@ -1,284 +0,0 @@
1
- <%
2
- documentHeader :usePackages => {
3
- :babel => "magyar", :inputenc=>"utf8" }
4
- %>
5
- \begin{document}
6
-
7
-
8
- Helló!
9
-
10
- Ez a TEXLAB program rövid leírása.
11
-
12
- TEXLAB fájlból először tex fájlt kell csinálni a texlab-compile paranccsal, aztán lehet futtatni pdflatex-szel így:
13
-
14
- ruby "......./texlab-compile.rb" "..../a-te-fájlod.texlab"
15
-
16
- pdflatex "....../a-te-fájlod.tex"
17
-
18
-
19
- Ez, amit olvasol, egy TEXLAB fájl. A TEXLAB fájlban Ruby és LaTeX kódok váltogatják egymást. LaTeX kóddal kezdődik, és Ruby módba a kisebb-százalék jelekkel lehet átmenni, illetve a százalék-nagyobb jelekkel visszamenni.
20
-
21
- A százalékjelek között lehet ruby parancsokat adni. Az egyik ilyen parancs a documentHeader, amit a fájl elején látsz. Ez elkészíti a LaTeX fájl elejére írandó sorokat A paraméterei:
22
-
23
- usePackages: milyen csomagokat használjunk. A babel csomag a nyelvi speciális dolgokat csinálja. Az inputenc-nek kell megadni, hogy milyen formátumú a fájl. Ezeken kívül is jónéhány csomagot alapból betölt.
24
-
25
- twocolumn: ha true, akkor kéthasábos lesz a dokumentum
26
-
27
- fontsize: "12pt", "11pt" vagy "10pt" (default). a fontméret.
28
-
29
- landscape: true esetén a dokumentum fekvő lapon lesz.
30
-
31
-
32
-
33
-
34
-
35
-
36
-
37
-
38
- A másik parancs a puts, ami kiír egy kifejezést:
39
-
40
- <% puts "Helló" %>
41
-
42
- A sor elején lévő százalékjel is átvisz ruby módba.
43
-
44
- % puts ":)"
45
-
46
- Ha LaTeX megjegyzést szeretnél írni, akkor sajnos dupla százalékjelet kell írni:
47
-
48
- %% Ez egy latex megjegyzés, senki se fogja látni.
49
-
50
- A harmadik lehetőség, hogy ha egy Ruby kifejezés értékét szeretnéd betenni a fájlba, akkor a kisebb-százalék-egyenlő jellel kell nyitni:
51
-
52
- <%= "Helló" %>
53
-
54
- Ez lényegében ugyanolyan, mint a puts.
55
-
56
-
57
- A Rubyban lehet matematikai kifejezéseket írni. Pl. öt meg öt az <%= 5+5 %>. A hatványozás **, a tizedestörtekben pont van.
58
-
59
- Tudsz definiálni változókat:
60
- <% alma = 29*2 %>
61
-
62
- Most <%=alma%> darab almánk van.
63
-
64
- A konstansok nagybetűvel kezdődnek. Két konstansunk is van, <%= E %> és <%=PI%>. Te is definiálhatsz konstast:
65
- <% R=8.314 %>
66
-
67
- A számokra meg lehet adni a pm (pluszminusz) metódussal hibahatárt: <%= 12.5.pm(0.00005).to_latex%>. Ilyenkor kézzel kell konvertálni Latex képletté a to\_latex metódussal, különben az eredeti szám jelenik meg. Ha puts-t használsz, akkor nem kell, mert automatikusan megcsinálja.
68
- <% puts 13.5.pm(0.000005) %>
69
-
70
- Relatíve is meg lehet adni a hibát <%= 0.5.pm_rel(0.01).to_latex %>
71
-
72
- Szép exponenciális alakokat tud csinálni: <%= 0.00000000012.pm_rel(0.01).to_latex%>.
73
-
74
-
75
-
76
-
77
- Vannak függvényeink. 90 fok az <%=radians(90)%> radián, ennek a szinusza <%=sin(radians(90))%>. Ha egyértelmű, hogy mit akarsz, akkor nem muszáj kiírni a zárójeleket, hanem írhatod pl., hogy <%=sin radians 90%>. De ha erre nagyon rászoksz, még sok gondot fog okozni :).
78
-
79
- Te is definiálhatsz füvvgényeket:
80
- <%
81
- def cosh(x)
82
- (E**x + E**(-x))/2
83
- end
84
- %>
85
- cosh 4 = <%=cosh(4)%>
86
- De ez a függvény már amúgy is létezik.
87
-
88
- Az adatokat néha érdemes listában tárolni:
89
- <%
90
- adatok = [1,2,3]
91
- %>
92
- <%=adatok%>
93
-
94
- Ezeken végig lehet menni kétféleképpen is:
95
-
96
- <%
97
- for a in adatok
98
- puts a
99
- puts " alma "
100
- end
101
- %>
102
-
103
- vagy
104
-
105
- <%
106
- adatok.each do |a|
107
- puts a
108
- puts " alma "
109
- end
110
- %>.
111
-
112
- Az adatokat néha érdemes hash-ben tárolni:
113
-
114
- <%
115
- test = {
116
- m: 9.1,
117
- V: 8.1
118
- }
119
- %>
120
- A test tömege <%=test.m%>, térfogata <%=test.V%>, sűrűsége <%=test.m/test.V%>.
121
-
122
- A program tud számolni hibaterjedést, úgyhogy érdemes megadni minden adatban a hibahatárt, hogy az eredmény szebb legyen:
123
-
124
- <%
125
- test = {
126
- m: 9.1.pm(0.05),
127
- V: 8.10.pm(0.02)
128
- }
129
- %>
130
- A test tömege <%=test.m.to_latex%>, térfogata <%=test.V.to_latex%>, sűrűsége <%=(test.m/test.V).to_latex%>.
131
-
132
-
133
- Táblázatokat lehet csinálni.
134
- <%
135
- table("cím") do
136
- row("sorcím") do
137
- column("oszlopcím") do
138
- "érték"
139
- end
140
- end
141
- end
142
- %>
143
-
144
- Lehet több oszlopot és sort is. A do..end helyett lehet kapcsos zárójelet használni
145
- <%
146
- table("állatok") do
147
- row("okos") do
148
- column("nagy") { "kutya" }
149
- column("kicsi") { "macska" }
150
- end
151
- row("buta") do
152
- column("nagy"){ "bálna" }
153
- column("kicsi"){ "egér" }
154
- end
155
- end
156
- %>
157
-
158
- Lehet több szintű oszlopokat is, de többszintű sorokat (még) nem.
159
- <%
160
- table("adatok") do
161
- row("test1") do
162
- column("tömeg") do
163
- column("előtte"){ 90.0.pm(1) }
164
- column("utána"){ 0.00075.pm_rel(0.05) }
165
- end
166
- end
167
- end
168
- %>
169
-
170
- Figyeld meg, hogy a .to\_latex automatikusan megtörténik, tehát itt sem kell kiírni, akárcsak a puts-nál. Azt is figyeld meg, hogy mindig table, row, column a sorrend az egymásba ágyazásnál.
171
-
172
- Érdemes az adatokat ciklusból táblázatba konvertálni:
173
- <%
174
- table("számolás") do
175
- adatok.each do |a|
176
- row(a) do
177
- column("kétszerese") { a*2 }
178
- end
179
- end
180
- end
181
- %>
182
-
183
- A rowTitle opcióval lehet megadni, hogy mi legyen a sarokban. Így lehet csinálni szorzótáblát:
184
- <%
185
- table("Szorzótábla", rowTitle: "x") do
186
- (1..10).each do |i|
187
- row(i) do
188
- (1..10).each do |j|
189
- column(j) { i*j }
190
- end
191
- end
192
- end
193
- end
194
- %>
195
-
196
- A lehetséges beállítások: \\
197
- placement: "H" - legyen a táblázat pont itt, és ne külön lapon. \\
198
- rowTitle: a sarokban mi legyen \\
199
- a többit lásd http://rubydoc.info/gems/latex/LatexFile:table
200
-
201
- Összetett táblázatok:
202
- <%
203
- tables("Táblák") do
204
- table("Első") do
205
- row("h") do
206
- column("valami") {"k"}
207
- end
208
- end
209
- table("Második") do
210
- row("x") do
211
- column("semmi") {"o"}
212
- end
213
- end
214
- end
215
- %>
216
-
217
- Grafikonok:
218
-
219
- <%
220
- plot "$x^2$ függvény" do
221
- dataset "x**2"
222
- end
223
- %>
224
-
225
- Adatpontok:
226
- <%
227
- plot "adatok", xlabel: "$x$", ylabel: "$x^2$" do
228
- dataset do
229
- data(0, 0**2)
230
- data(1, 1**2)
231
- data(2, 2**2)
232
- data(3, 3**2)
233
- data(4, 4**2)
234
- data(5, 5**2)
235
- end
236
- end
237
- %>
238
-
239
- Illesztés:
240
- <%
241
- a,b = fit "a*x+b", via: "a,b" do
242
- dataset do
243
- data(0, 0**2)
244
- data(1, 1**2)
245
- data(2, 2**2)
246
- data(3, 3**2)
247
- data(4, 4**2)
248
- data(5, 5**2)
249
- end
250
- end
251
- %>
252
- $<%=a.to_latex%>x+<%=b.to_latex%>$
253
-
254
- Illesztett egyenes a grafikonon:
255
- <%
256
- plot "adatok", xlabel: "$x$", ylabel: "$x^2$" do
257
- dataset do
258
- data(0, 0**2)
259
- data(1, 1**2)
260
- data(2, 2**2)
261
- data(3, 3**2)
262
- data(4, 4**2)
263
- data(5, 5**2)
264
- end
265
- dataset "#{a}*x+#{b}", title: "illesztett egyenes"
266
- end
267
- %>
268
-
269
- Változók használata szövegben: <%= "Helló, #{a}!" %>
270
-
271
-
272
- Makrók:
273
-
274
- <%
275
- macro kij: "k_{ij}"
276
- %>
277
-
278
- Használata: Latexben: \kij a négyzeten vagy $\kij^2$, rubyban: <%= $kij %> a négyzeten vagy <%= :kij.to_latex %> a négyzeten vagy <%= :kij + "^2" %> vagy <%= "$ #{$kij} ^ 2 $" %> vagy ennek a rövidítése: <%= "$ #$kij ^ 2 $" %>. Szóval mindenféle krix-kraxszal elő lehet hozni.
279
-
280
- Az egész csak akkor működik rendesen, ha a makró nevében CSAK BETŰK vannak.
281
-
282
- Figyeld meg, hogy a makró automatikusan átmegy math módba, úgyhogy mindegy hogy dollárjelek közé teszed vagy nem. A :kij + valami egy bónusz egyszerűsítés, ez is magától átmegy math módba.
283
-
284
- \end{document}