rtex 1.99.0 → 2.0.0
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/Manifest.txt +1 -3
- data/README.rdoc +2 -3
- data/Rakefile +3 -0
- data/lib/rtex.rb +9 -5
- data/lib/rtex/document.rb +22 -8
- data/lib/rtex/escaping.rb +2 -0
- data/lib/rtex/framework/merb.rb +2 -2
- data/lib/rtex/framework/rails.rb +2 -2
- data/lib/rtex/tempdir.rb +1 -1
- data/lib/rtex/version.rb +2 -4
- data/tasks/rubyforge.rake +57 -0
- data/tasks/setup.rb +1 -1
- metadata +5 -5
- data/test/tmp/rtex-071EE944-B2FA-4A3B-9764-1B5143833EB7/document.tex +0 -48
- data/test/tmp/rtex-592F93A7-6198-4B00-B638-33855344A29B/document.tex +0 -48
- data/test/tmp/rtex-96736595-5175-4602-9DC1-ABA096CC0E3D/document.tex +0 -48
data/Manifest.txt
CHANGED
@@ -16,6 +16,7 @@ tasks/doc.rake
|
|
16
16
|
tasks/gem.rake
|
17
17
|
tasks/manifest.rake
|
18
18
|
tasks/post_load.rake
|
19
|
+
tasks/rubyforge.rake
|
19
20
|
tasks/setup.rb
|
20
21
|
tasks/test.rake
|
21
22
|
test/document_test.rb
|
@@ -26,8 +27,5 @@ test/fixtures/fragment.tex.erb
|
|
26
27
|
test/fixtures/text.textile
|
27
28
|
test/tempdir_test.rb
|
28
29
|
test/test_helper.rb
|
29
|
-
test/tmp/rtex-071EE944-B2FA-4A3B-9764-1B5143833EB7/document.tex
|
30
|
-
test/tmp/rtex-592F93A7-6198-4B00-B638-33855344A29B/document.tex
|
31
|
-
test/tmp/rtex-96736595-5175-4602-9DC1-ABA096CC0E3D/document.tex
|
32
30
|
vendor/instiki/LICENSE
|
33
31
|
vendor/instiki/redcloth_for_tex.rb
|
data/README.rdoc
CHANGED
@@ -1,9 +1,8 @@
|
|
1
1
|
= RTeX: TeX/PDF Generation for Ruby
|
2
2
|
|
3
|
-
Project homepage: http://rtex.rubyforge.org
|
3
|
+
Project homepage (FAQ, manual, documentation, contact info): http://rtex.rubyforge.org
|
4
4
|
|
5
|
-
|
6
|
-
(in the Forum and the Tracker, respectively).
|
5
|
+
Source repository at: http://github.com/bruce/rtex
|
7
6
|
|
8
7
|
== Dependencies
|
9
8
|
|
data/Rakefile
CHANGED
@@ -12,6 +12,9 @@ PROJ.libs = %w[]
|
|
12
12
|
PROJ.ruby_opts = []
|
13
13
|
PROJ.test_opts = []
|
14
14
|
|
15
|
+
PROJ.rdoc_main = 'README.rdoc'
|
16
|
+
PROJ.rdoc_include.push 'README.rdoc', 'README_RAILS.rdoc'
|
17
|
+
|
15
18
|
PROJ.description = "LaTeX preprocessor for PDF generation; Rails plugin"
|
16
19
|
PROJ.summary = PROJ.description
|
17
20
|
|
data/lib/rtex.rb
CHANGED
@@ -4,25 +4,29 @@ require 'document'
|
|
4
4
|
require 'version'
|
5
5
|
|
6
6
|
module RTeX
|
7
|
-
|
7
|
+
|
8
|
+
# Load code to initialize RTeX for framework
|
8
9
|
def self.framework(name)
|
9
10
|
require File.dirname(__FILE__) << "/rtex/framework/#{name}"
|
10
11
|
framework = ::RTeX::Framework.const_get(name.to_s.capitalize)
|
11
12
|
framework.setup
|
12
13
|
end
|
13
14
|
|
15
|
+
def self.filters #:nodoc:
|
16
|
+
@filters ||= {}
|
17
|
+
end
|
18
|
+
|
14
19
|
def self.basic_layout #:nodoc:
|
15
20
|
"\\documentclass[12pt]{article}\n\\begin{document}\n<%= yield %>\n\\end{document}"
|
16
21
|
end
|
17
22
|
|
23
|
+
# Define a processing filter
|
24
|
+
# call-seq:
|
25
|
+
# filter(:name) { |text_to_transform| ... } # => result
|
18
26
|
def self.filter(name, &block)
|
19
27
|
filters[name.to_s] = block
|
20
28
|
end
|
21
29
|
|
22
|
-
def self.filters #:nodoc:
|
23
|
-
@filters ||= {}
|
24
|
-
end
|
25
|
-
|
26
30
|
filter :textile do |source|
|
27
31
|
require File.dirname(__FILE__) << '/../vendor/instiki/redcloth_for_tex'
|
28
32
|
RedClothForTex.new(source).to_tex
|
data/lib/rtex/document.rb
CHANGED
@@ -16,12 +16,17 @@ module RTeX
|
|
16
16
|
class GenerationError < ::StandardError; end
|
17
17
|
class ExecutableNotFoundError < ::StandardError; end
|
18
18
|
|
19
|
+
# Default options
|
20
|
+
# [+:preprocess+] Are we preprocessing? Default is +false+
|
21
|
+
# [+:preprocessor+] Executable to use during preprocessing (generating TOCs, etc). Default is +latex+
|
22
|
+
# [+:shell_redirect+] Option redirection for shell output (eg, +"> /dev/null 2>&1"+ ). Default is +nil+.
|
23
|
+
# [+:tmpdir+] Location of temporary directory (default: +Dir.tmpdir+)
|
19
24
|
def self.options
|
20
25
|
@options ||= {
|
21
26
|
:preprocessor => 'latex',
|
22
27
|
:preprocess => false,
|
23
28
|
:processor => 'pdflatex',
|
24
|
-
#
|
29
|
+
#
|
25
30
|
:shell_redirect => nil,
|
26
31
|
# Temporary Directory
|
27
32
|
:tempdir => Dir.tmpdir
|
@@ -37,13 +42,15 @@ module RTeX
|
|
37
42
|
end
|
38
43
|
end
|
39
44
|
|
40
|
-
|
45
|
+
# Get the source for the entire
|
46
|
+
def source(binding=nil) #:nodoc:
|
41
47
|
@source ||= wrap_in_layout do
|
42
48
|
filter @erb.result(binding)
|
43
49
|
end
|
44
50
|
end
|
45
51
|
|
46
|
-
|
52
|
+
# Process through defined filter
|
53
|
+
def filter(text) #:nodoc:
|
47
54
|
return text unless @options[:filter]
|
48
55
|
if (process = RTeX.filters[@options[:filter]])
|
49
56
|
process[text]
|
@@ -52,7 +59,8 @@ module RTeX
|
|
52
59
|
end
|
53
60
|
end
|
54
61
|
|
55
|
-
|
62
|
+
# Wrap content in optional layout
|
63
|
+
def wrap_in_layout #:nodoc:
|
56
64
|
if @options[:layout]
|
57
65
|
ERB.new(@options[:layout]).result(binding)
|
58
66
|
else
|
@@ -60,19 +68,23 @@ module RTeX
|
|
60
68
|
end
|
61
69
|
end
|
62
70
|
|
71
|
+
# Generate PDF from
|
72
|
+
# call-seq:
|
73
|
+
# to_pdf # => PDF in a String
|
74
|
+
# to_pdf { |filename| ... }
|
63
75
|
def to_pdf(binding=nil, &file_handler)
|
64
76
|
process_pdf_from(source(binding), &file_handler)
|
65
77
|
end
|
66
78
|
|
67
|
-
def processor
|
79
|
+
def processor #:nodoc:
|
68
80
|
@processor ||= check_path_for @options[:processor]
|
69
81
|
end
|
70
82
|
|
71
|
-
def preprocessor
|
83
|
+
def preprocessor #:nodoc:
|
72
84
|
@preprocessor ||= check_path_for @options[:preprocessor]
|
73
85
|
end
|
74
86
|
|
75
|
-
def system_path
|
87
|
+
def system_path #:nodoc:
|
76
88
|
ENV['PATH']
|
77
89
|
end
|
78
90
|
|
@@ -80,6 +92,7 @@ module RTeX
|
|
80
92
|
private
|
81
93
|
#######
|
82
94
|
|
95
|
+
# Verify existence of executable in search path
|
83
96
|
def check_path_for(command)
|
84
97
|
unless FileTest.executable?(command) || system_path.split(":").any?{ |path| FileTest.executable?(File.join(path, command))}
|
85
98
|
raise ExecutableNotFoundError, command
|
@@ -87,6 +100,7 @@ module RTeX
|
|
87
100
|
command
|
88
101
|
end
|
89
102
|
|
103
|
+
# Basic processing
|
90
104
|
def process_pdf_from(input, &file_handler)
|
91
105
|
Tempdir.open(@options[:tempdir]) do |tempdir|
|
92
106
|
prepare input
|
@@ -103,7 +117,7 @@ module RTeX
|
|
103
117
|
end
|
104
118
|
end
|
105
119
|
|
106
|
-
def process!
|
120
|
+
def process!
|
107
121
|
unless `#{processor} --interaction=nonstopmode '#{source_file}' #{@options[:shell_redirect]}`
|
108
122
|
raise GenerationError, "Could not generate PDF using #{processor}"
|
109
123
|
end
|
data/lib/rtex/escaping.rb
CHANGED
@@ -2,12 +2,14 @@ module RTeX
|
|
2
2
|
|
3
3
|
module Escaping
|
4
4
|
|
5
|
+
# Escape text using +replacements+
|
5
6
|
def escape(text)
|
6
7
|
replacements.inject(text) do |corpus, (pattern, replacement)|
|
7
8
|
corpus.gsub(pattern, replacement)
|
8
9
|
end
|
9
10
|
end
|
10
11
|
|
12
|
+
# List of replacements
|
11
13
|
def replacements
|
12
14
|
@replacements ||= [
|
13
15
|
[/([{}])/, '\\\1'],
|
data/lib/rtex/framework/merb.rb
CHANGED
data/lib/rtex/framework/rails.rb
CHANGED
data/lib/rtex/tempdir.rb
CHANGED
data/lib/rtex/version.rb
CHANGED
@@ -63,12 +63,10 @@ module RTeX
|
|
63
63
|
[@major, @minor, @tiny]
|
64
64
|
end
|
65
65
|
|
66
|
-
MAJOR =
|
67
|
-
MINOR =
|
66
|
+
MAJOR = 2
|
67
|
+
MINOR = 0
|
68
68
|
TINY = 0
|
69
69
|
|
70
|
-
DESCRIPTION = '2.0 Preview 1'
|
71
|
-
|
72
70
|
# The current version as a Version instance
|
73
71
|
CURRENT = new(MAJOR, MINOR, TINY)
|
74
72
|
# The current version as a String
|
@@ -0,0 +1,57 @@
|
|
1
|
+
# $Id$
|
2
|
+
|
3
|
+
if PROJ.rubyforge_name && HAVE_RUBYFORGE
|
4
|
+
|
5
|
+
require 'rubyforge'
|
6
|
+
require 'rake/contrib/sshpublisher'
|
7
|
+
|
8
|
+
namespace :gem do
|
9
|
+
desc 'Package and upload to RubyForge'
|
10
|
+
task :release => [:clobber, :package] do |t|
|
11
|
+
v = ENV['VERSION'] or abort 'Must supply VERSION=x.y.z'
|
12
|
+
abort "Versions don't match #{v} vs #{PROJ.version}" if v != PROJ.version
|
13
|
+
pkg = "pkg/#{PROJ.spec.full_name}"
|
14
|
+
|
15
|
+
if $DEBUG then
|
16
|
+
puts "release_id = rf.add_release #{PROJ.rubyforge_name.inspect}, #{PROJ.name.inspect}, #{PROJ.version.inspect}, \"#{pkg}.tgz\""
|
17
|
+
puts "rf.add_file #{PROJ.rubyforge_name.inspect}, #{PROJ.name.inspect}, release_id, \"#{pkg}.gem\""
|
18
|
+
end
|
19
|
+
|
20
|
+
rf = RubyForge.new
|
21
|
+
puts 'Logging in'
|
22
|
+
rf.login
|
23
|
+
|
24
|
+
c = rf.userconfig
|
25
|
+
c['release_notes'] = PROJ.description if PROJ.description
|
26
|
+
c['release_changes'] = PROJ.changes if PROJ.changes
|
27
|
+
c['preformatted'] = true
|
28
|
+
|
29
|
+
files = [(PROJ.need_tar ? "#{pkg}.tgz" : nil),
|
30
|
+
(PROJ.need_zip ? "#{pkg}.zip" : nil),
|
31
|
+
"#{pkg}.gem"].compact
|
32
|
+
|
33
|
+
puts "Releasing #{PROJ.name} v. #{PROJ.version}"
|
34
|
+
rf.add_release PROJ.rubyforge_name, PROJ.name, PROJ.version, *files
|
35
|
+
end
|
36
|
+
end # namespace :gem
|
37
|
+
|
38
|
+
|
39
|
+
namespace :doc do
|
40
|
+
desc "Publish RDoc to RubyForge"
|
41
|
+
task :release => %w(doc:clobber_rdoc doc:rdoc) do
|
42
|
+
config = YAML.load(
|
43
|
+
File.read(File.expand_path('~/.rubyforge/user-config.yml'))
|
44
|
+
)
|
45
|
+
|
46
|
+
host = "#{config['username']}@rubyforge.org"
|
47
|
+
remote_dir = "/var/www/gforge-projects/#{PROJ.rubyforge_name}/"
|
48
|
+
remote_dir << PROJ.rdoc_remote_dir if PROJ.rdoc_remote_dir
|
49
|
+
local_dir = PROJ.rdoc_dir
|
50
|
+
|
51
|
+
Rake::SshDirPublisher.new(host, remote_dir, local_dir).upload
|
52
|
+
end
|
53
|
+
end # namespace :doc
|
54
|
+
|
55
|
+
end # if HAVE_RUBYFORGE
|
56
|
+
|
57
|
+
# EOF
|
data/tasks/setup.rb
CHANGED
@@ -17,7 +17,7 @@ PROJ.email = nil
|
|
17
17
|
PROJ.url = nil
|
18
18
|
PROJ.version = ENV['VERSION'] || '0.0.0'
|
19
19
|
PROJ.rubyforge_name = nil
|
20
|
-
PROJ.exclude = %w(tmp$ bak$ ~$ CVS site .svn/ ^pkg/ ^doc/ ^\. ^rails-example/)
|
20
|
+
PROJ.exclude = %w(tmp$ bak$ ~$ CVS site .svn/ ^pkg/ ^doc/ ^\. ^rails-example/ ^test/tmp)
|
21
21
|
PROJ.release_name = ENV['RELEASE']
|
22
22
|
PROJ.history_file = 'HISTORY.rdoc'
|
23
23
|
PROJ.manifest_file = 'Manifest.txt'
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: rtex
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version:
|
4
|
+
version: 2.0.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Bruce Williams
|
@@ -10,7 +10,7 @@ autorequire:
|
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
12
|
|
13
|
-
date: 2008-
|
13
|
+
date: 2008-05-06 00:00:00 -05:00
|
14
14
|
default_executable:
|
15
15
|
dependencies: []
|
16
16
|
|
@@ -22,6 +22,8 @@ executables:
|
|
22
22
|
extensions: []
|
23
23
|
|
24
24
|
extra_rdoc_files:
|
25
|
+
- README.rdoc
|
26
|
+
- README_RAILS.rdoc
|
25
27
|
- bin/rtex
|
26
28
|
files:
|
27
29
|
- HISTORY.rdoc
|
@@ -42,6 +44,7 @@ files:
|
|
42
44
|
- tasks/gem.rake
|
43
45
|
- tasks/manifest.rake
|
44
46
|
- tasks/post_load.rake
|
47
|
+
- tasks/rubyforge.rake
|
45
48
|
- tasks/setup.rb
|
46
49
|
- tasks/test.rake
|
47
50
|
- test/document_test.rb
|
@@ -52,9 +55,6 @@ files:
|
|
52
55
|
- test/fixtures/text.textile
|
53
56
|
- test/tempdir_test.rb
|
54
57
|
- test/test_helper.rb
|
55
|
-
- test/tmp/rtex-071EE944-B2FA-4A3B-9764-1B5143833EB7/document.tex
|
56
|
-
- test/tmp/rtex-592F93A7-6198-4B00-B638-33855344A29B/document.tex
|
57
|
-
- test/tmp/rtex-96736595-5175-4602-9DC1-ABA096CC0E3D/document.tex
|
58
58
|
- vendor/instiki/LICENSE
|
59
59
|
- vendor/instiki/redcloth_for_tex.rb
|
60
60
|
has_rdoc: true
|
@@ -1,48 +0,0 @@
|
|
1
|
-
% This percent indicates a comment.
|
2
|
-
% This is a very simple latex article that introduces the way
|
3
|
-
% equations are typeset. Do this in linux:
|
4
|
-
%
|
5
|
-
% latex first.tex
|
6
|
-
% latex first.tex
|
7
|
-
% xdvi first.dvi
|
8
|
-
% dvips -o first.ps first.dvi
|
9
|
-
% gv first.ps
|
10
|
-
% lpr first.ps
|
11
|
-
% pdflatex first.tex
|
12
|
-
% acroread first.pdf
|
13
|
-
\documentclass[12pt]{article}
|
14
|
-
\title{First \LaTeX}
|
15
|
-
\author{Foo}
|
16
|
-
\date{\today}
|
17
|
-
|
18
|
-
\begin{document}
|
19
|
-
|
20
|
-
\maketitle
|
21
|
-
|
22
|
-
\abstract{This is a very simple example of using \LaTeX\ for typesetting.
|
23
|
-
The procedure for typesetting equations is introduced.}
|
24
|
-
|
25
|
-
\section{A few equations}
|
26
|
-
Equations can be typeset inline like so: $\vec{F}=m\vec{a}$ .
|
27
|
-
Equations can also be separated form the text: $$ \vec{F}=m\vec{a} \ . $$
|
28
|
-
Notice the punctuation, the ``.'', had to be included with the equation.
|
29
|
-
Equations can also have a number assigned and a label attached,
|
30
|
-
as in the following:
|
31
|
-
\begin{equation}
|
32
|
-
\frac{D\vec{\omega}}{Dt} =
|
33
|
-
( \vec{\omega} + \vec{\Omega}) \cdot \nabla \vec{U}
|
34
|
-
+ \frac{1}{\rho^2} \nabla \rho \times \nabla p
|
35
|
-
+ \nu \nabla^2 \vec{\omega}
|
36
|
-
\label{vorteq}
|
37
|
-
\end{equation}
|
38
|
-
The vorticity equation (\ref{vorteq}) is referenced by label,
|
39
|
-
not by number. The numbers may change as the document grows and
|
40
|
-
more equations are added.
|
41
|
-
|
42
|
-
New paragraphs are indicated with a blank line in the source code.
|
43
|
-
|
44
|
-
\section{The End}
|
45
|
-
|
46
|
-
Further examples of \LaTeX\ can be found at {\tt it.metr.ou.edu}
|
47
|
-
|
48
|
-
\end{document}
|
@@ -1,48 +0,0 @@
|
|
1
|
-
% This percent indicates a comment.
|
2
|
-
% This is a very simple latex article that introduces the way
|
3
|
-
% equations are typeset. Do this in linux:
|
4
|
-
%
|
5
|
-
% latex first.tex
|
6
|
-
% latex first.tex
|
7
|
-
% xdvi first.dvi
|
8
|
-
% dvips -o first.ps first.dvi
|
9
|
-
% gv first.ps
|
10
|
-
% lpr first.ps
|
11
|
-
% pdflatex first.tex
|
12
|
-
% acroread first.pdf
|
13
|
-
\documentclass[12pt]{article}
|
14
|
-
\title{First \LaTeX}
|
15
|
-
\author{}
|
16
|
-
\date{\today}
|
17
|
-
|
18
|
-
\begin{document}
|
19
|
-
|
20
|
-
\maketitle
|
21
|
-
|
22
|
-
\abstract{This is a very simple example of using \LaTeX\ for typesetting.
|
23
|
-
The procedure for typesetting equations is introduced.}
|
24
|
-
|
25
|
-
\section{A few equations}
|
26
|
-
Equations can be typeset inline like so: $\vec{F}=m\vec{a}$ .
|
27
|
-
Equations can also be separated form the text: $$ \vec{F}=m\vec{a} \ . $$
|
28
|
-
Notice the punctuation, the ``.'', had to be included with the equation.
|
29
|
-
Equations can also have a number assigned and a label attached,
|
30
|
-
as in the following:
|
31
|
-
\begin{equation}
|
32
|
-
\frac{D\vec{\omega}}{Dt} =
|
33
|
-
( \vec{\omega} + \vec{\Omega}) \cdot \nabla \vec{U}
|
34
|
-
+ \frac{1}{\rho^2} \nabla \rho \times \nabla p
|
35
|
-
+ \nu \nabla^2 \vec{\omega}
|
36
|
-
\label{vorteq}
|
37
|
-
\end{equation}
|
38
|
-
The vorticity equation (\ref{vorteq}) is referenced by label,
|
39
|
-
not by number. The numbers may change as the document grows and
|
40
|
-
more equations are added.
|
41
|
-
|
42
|
-
New paragraphs are indicated with a blank line in the source code.
|
43
|
-
|
44
|
-
\section{The End}
|
45
|
-
|
46
|
-
Further examples of \LaTeX\ can be found at {\tt it.metr.ou.edu}
|
47
|
-
|
48
|
-
\end{document}
|
@@ -1,48 +0,0 @@
|
|
1
|
-
% This percent indicates a comment.
|
2
|
-
% This is a very simple latex article that introduces the way
|
3
|
-
% equations are typeset. Do this in linux:
|
4
|
-
%
|
5
|
-
% latex first.tex
|
6
|
-
% latex first.tex
|
7
|
-
% xdvi first.dvi
|
8
|
-
% dvips -o first.ps first.dvi
|
9
|
-
% gv first.ps
|
10
|
-
% lpr first.ps
|
11
|
-
% pdflatex first.tex
|
12
|
-
% acroread first.pdf
|
13
|
-
\documentclass[12pt]{article}
|
14
|
-
\title{First \LaTeX}
|
15
|
-
\author{Foo}
|
16
|
-
\date{\today}
|
17
|
-
|
18
|
-
\begin{document}
|
19
|
-
|
20
|
-
\maketitle
|
21
|
-
|
22
|
-
\abstract{This is a very simple example of using \LaTeX\ for typesetting.
|
23
|
-
The procedure for typesetting equations is introduced.}
|
24
|
-
|
25
|
-
\section{A few equations}
|
26
|
-
Equations can be typeset inline like so: $\vec{F}=m\vec{a}$ .
|
27
|
-
Equations can also be separated form the text: $$ \vec{F}=m\vec{a} \ . $$
|
28
|
-
Notice the punctuation, the ``.'', had to be included with the equation.
|
29
|
-
Equations can also have a number assigned and a label attached,
|
30
|
-
as in the following:
|
31
|
-
\begin{equation}
|
32
|
-
\frac{D\vec{\omega}}{Dt} =
|
33
|
-
( \vec{\omega} + \vec{\Omega}) \cdot \nabla \vec{U}
|
34
|
-
+ \frac{1}{\rho^2} \nabla \rho \times \nabla p
|
35
|
-
+ \nu \nabla^2 \vec{\omega}
|
36
|
-
\label{vorteq}
|
37
|
-
\end{equation}
|
38
|
-
The vorticity equation (\ref{vorteq}) is referenced by label,
|
39
|
-
not by number. The numbers may change as the document grows and
|
40
|
-
more equations are added.
|
41
|
-
|
42
|
-
New paragraphs are indicated with a blank line in the source code.
|
43
|
-
|
44
|
-
\section{The End}
|
45
|
-
|
46
|
-
Further examples of \LaTeX\ can be found at {\tt it.metr.ou.edu}
|
47
|
-
|
48
|
-
\end{document}
|