texlab 0.0.0
Sign up to get free protection for your applications and to get access to all the features.
- data/.document +5 -0
- data/.rspec +1 -0
- data/Gemfile +16 -0
- data/Gemfile.lock +54 -0
- data/LICENSE.txt +20 -0
- data/README.rdoc +19 -0
- data/README.txt +5 -0
- data/Rakefile +50 -0
- data/VERSION +1 -0
- data/bin/texlab-compile +48 -0
- data/bin/texlab-compile.tex +0 -0
- data/bin/texlab-console +49 -0
- data/doc/readme.texlab +284 -0
- data/lib/texlab.rake +7 -0
- data/lib/texlab.rb +20 -0
- data/lib/texlab/boot.rb +373 -0
- data/lib/texlab/texlabfile.rb +164 -0
- data/spec/spec_helper.rb +12 -0
- data/spec/texlab_spec.rb +7 -0
- data/texlab +3 -0
- data/texlab.gemspec +93 -0
- data/vim/texlab.vim +136 -0
- metadata +197 -0
data/.document
ADDED
data/.rspec
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
--color
|
data/Gemfile
ADDED
@@ -0,0 +1,16 @@
|
|
1
|
+
source "http://rubygems.org"
|
2
|
+
|
3
|
+
gem "rake4latex"
|
4
|
+
gem "plusminus"
|
5
|
+
gem "easystats"
|
6
|
+
gem "to_latex"
|
7
|
+
gem "gnuplot"
|
8
|
+
gem "latex"
|
9
|
+
|
10
|
+
group :development do
|
11
|
+
gem "rspec", "~> 2.8.0"
|
12
|
+
gem "rdoc", "~> 3.12"
|
13
|
+
gem "bundler", "~> 1.0.0"
|
14
|
+
gem "jeweler", "~> 1.8.3"
|
15
|
+
gem "rcov", ">= 0"
|
16
|
+
end
|
data/Gemfile.lock
ADDED
@@ -0,0 +1,54 @@
|
|
1
|
+
GEM
|
2
|
+
remote: http://rubygems.org/
|
3
|
+
specs:
|
4
|
+
diff-lcs (1.1.3)
|
5
|
+
easystats (0.1.0)
|
6
|
+
flt (1.3.0)
|
7
|
+
git (1.2.5)
|
8
|
+
gnuplot (2.4.1)
|
9
|
+
jeweler (1.8.3)
|
10
|
+
bundler (~> 1.0)
|
11
|
+
git (>= 1.2.5)
|
12
|
+
rake
|
13
|
+
rdoc
|
14
|
+
json (1.6.5)
|
15
|
+
knut_tools (0.1.0)
|
16
|
+
latex (0.1.3)
|
17
|
+
log4r (1.1.10)
|
18
|
+
nio (0.2.5)
|
19
|
+
flt (>= 1.0.0)
|
20
|
+
plusminus (0.1.0)
|
21
|
+
nio
|
22
|
+
rake (0.9.2.2)
|
23
|
+
rake4latex (0.1.3)
|
24
|
+
knut_tools
|
25
|
+
log4r
|
26
|
+
rake
|
27
|
+
rcov (1.0.0)
|
28
|
+
rdoc (3.12)
|
29
|
+
json (~> 1.4)
|
30
|
+
rspec (2.8.0)
|
31
|
+
rspec-core (~> 2.8.0)
|
32
|
+
rspec-expectations (~> 2.8.0)
|
33
|
+
rspec-mocks (~> 2.8.0)
|
34
|
+
rspec-core (2.8.0)
|
35
|
+
rspec-expectations (2.8.0)
|
36
|
+
diff-lcs (~> 1.1.2)
|
37
|
+
rspec-mocks (2.8.0)
|
38
|
+
to_latex (0.4.0)
|
39
|
+
|
40
|
+
PLATFORMS
|
41
|
+
ruby
|
42
|
+
|
43
|
+
DEPENDENCIES
|
44
|
+
bundler (~> 1.0.0)
|
45
|
+
easystats
|
46
|
+
gnuplot
|
47
|
+
jeweler (~> 1.8.3)
|
48
|
+
latex
|
49
|
+
plusminus
|
50
|
+
rake4latex
|
51
|
+
rcov
|
52
|
+
rdoc (~> 3.12)
|
53
|
+
rspec (~> 2.8.0)
|
54
|
+
to_latex
|
data/LICENSE.txt
ADDED
@@ -0,0 +1,20 @@
|
|
1
|
+
Copyright (c) 2012 Bernát Kalló
|
2
|
+
|
3
|
+
Permission is hereby granted, free of charge, to any person obtaining
|
4
|
+
a copy of this software and associated documentation files (the
|
5
|
+
"Software"), to deal in the Software without restriction, including
|
6
|
+
without limitation the rights to use, copy, modify, merge, publish,
|
7
|
+
distribute, sublicense, and/or sell copies of the Software, and to
|
8
|
+
permit persons to whom the Software is furnished to do so, subject to
|
9
|
+
the following conditions:
|
10
|
+
|
11
|
+
The above copyright notice and this permission notice shall be
|
12
|
+
included in all copies or substantial portions of the Software.
|
13
|
+
|
14
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
15
|
+
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
16
|
+
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
17
|
+
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
|
18
|
+
LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
|
19
|
+
OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
|
20
|
+
WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
data/README.rdoc
ADDED
@@ -0,0 +1,19 @@
|
|
1
|
+
= texlab
|
2
|
+
|
3
|
+
Description goes here.
|
4
|
+
|
5
|
+
== Contributing to texlab
|
6
|
+
|
7
|
+
* Check out the latest master to make sure the feature hasn't been implemented or the bug hasn't been fixed yet.
|
8
|
+
* Check out the issue tracker to make sure someone already hasn't requested it and/or contributed it.
|
9
|
+
* Fork the project.
|
10
|
+
* Start a feature/bugfix branch.
|
11
|
+
* Commit and push until you are happy with your contribution.
|
12
|
+
* Make sure to add tests for it. This is important so I don't break it in a future version unintentionally.
|
13
|
+
* Please try not to mess with the Rakefile, version, or history. If you want to have your own version, or is otherwise necessary, that is fine, but please isolate to its own commit so I can cherry-pick around it.
|
14
|
+
|
15
|
+
== Copyright
|
16
|
+
|
17
|
+
Copyright (c) 2012 Bernát Kalló. See LICENSE.txt for
|
18
|
+
further details.
|
19
|
+
|
data/README.txt
ADDED
data/Rakefile
ADDED
@@ -0,0 +1,50 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
|
3
|
+
require 'rubygems'
|
4
|
+
require 'bundler'
|
5
|
+
begin
|
6
|
+
Bundler.setup(:default, :development)
|
7
|
+
rescue Bundler::BundlerError => e
|
8
|
+
$stderr.puts e.message
|
9
|
+
$stderr.puts "Run `bundle install` to install missing gems"
|
10
|
+
exit e.status_code
|
11
|
+
end
|
12
|
+
require 'rake'
|
13
|
+
|
14
|
+
require 'jeweler'
|
15
|
+
Jeweler::Tasks.new do |gem|
|
16
|
+
# gem is a Gem::Specification... see http://docs.rubygems.org/read/chapter/20 for more options
|
17
|
+
gem.name = "texlab"
|
18
|
+
gem.homepage = "http://github.com/cie/texlab"
|
19
|
+
gem.license = "MIT"
|
20
|
+
gem.summary = %Q{a tool to create documents with latex and ruby}
|
21
|
+
gem.description = %Q{texlab a toolkit based on erb that for creating documents and doing calculations at the same time. It is capable to output the proper number of significant digits, generate tables and plots using gnuplot. It has a simple DSL.}
|
22
|
+
gem.email = "kallo.bernat@gmail.com"
|
23
|
+
gem.authors = ["Bernát Kalló"]
|
24
|
+
gem.executables = ["texlab-compile"]
|
25
|
+
# dependencies defined in Gemfile
|
26
|
+
end
|
27
|
+
Jeweler::RubygemsDotOrgTasks.new
|
28
|
+
|
29
|
+
require 'rspec/core'
|
30
|
+
require 'rspec/core/rake_task'
|
31
|
+
RSpec::Core::RakeTask.new(:spec) do |spec|
|
32
|
+
spec.pattern = FileList['spec/**/*_spec.rb']
|
33
|
+
end
|
34
|
+
|
35
|
+
RSpec::Core::RakeTask.new(:rcov) do |spec|
|
36
|
+
spec.pattern = 'spec/**/*_spec.rb'
|
37
|
+
spec.rcov = true
|
38
|
+
end
|
39
|
+
|
40
|
+
task :default => :spec
|
41
|
+
|
42
|
+
require 'rdoc/task'
|
43
|
+
Rake::RDocTask.new do |rdoc|
|
44
|
+
version = File.exist?('VERSION') ? File.read('VERSION') : ""
|
45
|
+
|
46
|
+
rdoc.rdoc_dir = 'rdoc'
|
47
|
+
rdoc.title = "texlab #{version}"
|
48
|
+
rdoc.rdoc_files.include('README*')
|
49
|
+
rdoc.rdoc_files.include('lib/**/*.rb')
|
50
|
+
end
|
data/VERSION
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
0.0.0
|
data/bin/texlab-compile
ADDED
@@ -0,0 +1,48 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
# encoding: ASCII-8bit
|
3
|
+
|
4
|
+
|
5
|
+
|
6
|
+
|
7
|
+
require 'erb'
|
8
|
+
require 'to_latex'
|
9
|
+
|
10
|
+
$: << File.expand_path(__FILE__+"/../../lib")
|
11
|
+
|
12
|
+
class TEXERB < ERB
|
13
|
+
end
|
14
|
+
|
15
|
+
begin
|
16
|
+
# load code
|
17
|
+
#
|
18
|
+
infile = ARGV[0] || fail
|
19
|
+
outfile = ARGV[1] || infile.sub(/(\.texlab)?$/, ".tex")
|
20
|
+
|
21
|
+
src = nil
|
22
|
+
File.open infile do |f|
|
23
|
+
src = f.read
|
24
|
+
end
|
25
|
+
fail if !src
|
26
|
+
|
27
|
+
rescue
|
28
|
+
STDERR.puts File.basename($0) + " <inputfile> <outputfile>"
|
29
|
+
STDERR.puts <<EOU
|
30
|
+
Compile texlab inputfile to tex.
|
31
|
+
EOU
|
32
|
+
|
33
|
+
else
|
34
|
+
|
35
|
+
# load boot code
|
36
|
+
File.open File.expand_path(__FILE__+"/../../lib/texlab/boot.rb") do |f|
|
37
|
+
src = "<%\n" << f.read << "\n%>\n" << src
|
38
|
+
end
|
39
|
+
|
40
|
+
# run erb
|
41
|
+
erb = TEXERB.new(src.untaint, nil, "%>", "$_erbout")
|
42
|
+
|
43
|
+
File.open outfile, "w" do |f|
|
44
|
+
f.print erb.result(TOPLEVEL_BINDING.taint)
|
45
|
+
end
|
46
|
+
|
47
|
+
end
|
48
|
+
|
File without changes
|
data/bin/texlab-console
ADDED
@@ -0,0 +1,49 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
|
3
|
+
|
4
|
+
require 'pp'
|
5
|
+
|
6
|
+
def get_binding
|
7
|
+
binding
|
8
|
+
end
|
9
|
+
|
10
|
+
begin
|
11
|
+
# load code
|
12
|
+
src = $<.read
|
13
|
+
fail unless src
|
14
|
+
rescue
|
15
|
+
STDERR.puts File.basename($0) + " [inputfile] [ > outputfile]"
|
16
|
+
STDERR.puts <<EOU
|
17
|
+
Debug texlab inputfile in console.
|
18
|
+
EOU
|
19
|
+
else
|
20
|
+
|
21
|
+
# load boot code
|
22
|
+
File.open File.expand_path(__FILE__+"/../../lib/texlab/boot.rb") do |f|
|
23
|
+
src = "<%\n" << f.read << "\n%>\n" << src
|
24
|
+
end
|
25
|
+
|
26
|
+
b = get_binding
|
27
|
+
|
28
|
+
# run erb
|
29
|
+
erb = ERB.new(src.untaint, nil, "%>", "$_erbout")
|
30
|
+
$_src = erb.src
|
31
|
+
b.eval $_src + expr
|
32
|
+
|
33
|
+
|
34
|
+
def getline
|
35
|
+
print "texlab> "
|
36
|
+
STDIN.gets
|
37
|
+
end
|
38
|
+
|
39
|
+
# run REPL
|
40
|
+
while s = getline do
|
41
|
+
begin
|
42
|
+
pp b.eval(s)
|
43
|
+
rescue
|
44
|
+
STDERR << $! << $!.backtrace.join("\n") << "\n"
|
45
|
+
end
|
46
|
+
end
|
47
|
+
|
48
|
+
end
|
49
|
+
|
data/doc/readme.texlab
ADDED
@@ -0,0 +1,284 @@
|
|
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}
|