erb_latex 0.3.0 → 1.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.
- checksums.yaml +4 -4
- data/README.md +20 -9
- data/erb_latex.gemspec +5 -5
- data/lib/erb_latex/context.rb +3 -3
- data/lib/erb_latex/file_access.rb +6 -4
- data/lib/erb_latex/template.rb +6 -3
- data/lib/erb_latex/version.rb +1 -1
- data/test/erb_latex_test.rb +12 -2
- data/test/fixtures/custom_context.tex.erb +4 -0
- data/test/fixtures/lastpage.sty +283 -0
- data/test/fixtures/lastpage209.sty +70 -0
- data/test/helper.rb +6 -0
- metadata +29 -23
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: e8b825b8d2a9b6081794d78c2e7fc175e5421137
|
4
|
+
data.tar.gz: 38dcda7203964f63909e59ac7db46066ed853bfc
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 0db92f74e5ef160be972bd6a3452ebb158b5725b852429ef8794cebe3f043a469b81da7ff56ce2b493260bfedea08bdbe946484e4690df5edac8a76caff077b1
|
7
|
+
data.tar.gz: f685266897821c197c3bd724bfbfb01e3b91077d601b37b75cf5932d02e7cc82d2eafe988f2a7df86a1f7ae9d8cffe143d449c3773f7b489a02382bc9e0f84dd
|
data/README.md
CHANGED
@@ -1,8 +1,8 @@
|
|
1
1
|
# ERB LaTeX
|
2
2
|
|
3
|
-
Applies ERB template processing to a LaTeX file and compiles it to a PDF.
|
3
|
+
Applies ERB template processing to a LaTeX file and compiles it to a PDF using xelatex.
|
4
4
|
|
5
|
-
Supports layouts, partials, and
|
5
|
+
Supports layouts, partials, string escaping and packages installed in custom directories.
|
6
6
|
|
7
7
|
Also supplies a Guard task to watch for modifications and auto-building files.
|
8
8
|
|
@@ -11,14 +11,12 @@ Also supplies a Guard task to watch for modifications and auto-building files.
|
|
11
11
|
[Argosity](http://argosity.com/) uses this for several different projects
|
12
12
|
|
13
13
|
* I originally used a bare-bones & hacky version to generate my resume in both HTML & PDF
|
14
|
-
* [Stockor](http://stockor.org/),
|
14
|
+
* [Stockor](http://stockor.org/), my open-source ERP platform. It's used for building all the form that output as PDF.
|
15
15
|
* Generating proposals for client projects. Hit me up with a consulting request and you'll probably receive one!
|
16
16
|
|
17
17
|
## Links
|
18
18
|
|
19
|
-
API docs
|
20
|
-
|
21
|
-
The source is on github at [github.com/nathanstitt/erb_latex](https://github.com/nathanstitt/erb_latex)
|
19
|
+
[API docs](http://www.rubydoc.info/gems/erb_latex), Source on github at [github.com/nathanstitt/erb_latex](https://github.com/nathanstitt/erb_latex)
|
22
20
|
|
23
21
|
## Installation
|
24
22
|
|
@@ -36,6 +34,16 @@ Or install it yourself as:
|
|
36
34
|
|
37
35
|
$ gem install erb_latex
|
38
36
|
|
37
|
+
## Configuration
|
38
|
+
|
39
|
+
```ruby
|
40
|
+
ErbLatex.configure do | config |
|
41
|
+
config.file_extesion = '.tex' # defaults to .tex.erb
|
42
|
+
config.verbose_logs = true # will output failure diagnostics to STDERR when enabled
|
43
|
+
config.xelatex_path = '/opt/texlive/bin/xelatex' # for cases where xelatex is not located in PATH
|
44
|
+
end
|
45
|
+
```
|
46
|
+
|
39
47
|
## Usage
|
40
48
|
|
41
49
|
Given a LaTeX layout template: ``layout.tex``
|
@@ -66,10 +74,12 @@ and a simple LaTeX body: ``body.tex``
|
|
66
74
|
|
67
75
|
```latex
|
68
76
|
\lettrine[lines=2]{T}{hank} you for your your consideration.
|
69
|
-
Please let us know if we can help you
|
77
|
+
Please let us know if we can help you!
|
70
78
|
|
71
79
|
<%=q @message %>
|
72
80
|
|
81
|
+
So long and thanks for all the fish.
|
82
|
+
|
73
83
|
Thank you,
|
74
84
|
<%=q @author %>
|
75
85
|
```
|
@@ -106,12 +116,13 @@ guard :erb_latex do
|
|
106
116
|
end
|
107
117
|
```
|
108
118
|
|
109
|
-
While the one below would compile the hypothetical body.tex file above
|
119
|
+
While the one below would compile the hypothetical body.tex file above.
|
110
120
|
|
111
121
|
```ruby
|
112
122
|
require 'erb_latex/guard'
|
113
123
|
|
114
|
-
|
124
|
+
data = {:author=>'Nathan Stitt', :message=>'Buy low, Sell High!'}
|
125
|
+
guard :erb_latex, :layout=>'proposal.tex', :data => data do
|
115
126
|
watch 'body.tex'
|
116
127
|
end
|
117
128
|
```
|
data/erb_latex.gemspec
CHANGED
@@ -18,9 +18,9 @@ Gem::Specification.new do |spec|
|
|
18
18
|
spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
|
19
19
|
spec.require_paths = ["lib"]
|
20
20
|
|
21
|
-
spec.add_development_dependency "rake"
|
22
|
-
spec.add_development_dependency "bundler"
|
23
|
-
spec.add_development_dependency "yard"
|
24
|
-
spec.add_development_dependency "guard"
|
25
|
-
spec.add_development_dependency "guard-minitest"
|
21
|
+
spec.add_development_dependency "rake"
|
22
|
+
spec.add_development_dependency "bundler"
|
23
|
+
spec.add_development_dependency "yard"
|
24
|
+
spec.add_development_dependency "guard"
|
25
|
+
spec.add_development_dependency "guard-minitest"
|
26
26
|
end
|
data/lib/erb_latex/context.rb
CHANGED
@@ -30,13 +30,13 @@ module ErbLatex
|
|
30
30
|
|
31
31
|
# include another latex file into the current template
|
32
32
|
def partial( template, data={} )
|
33
|
-
context =
|
33
|
+
context = self.class.new( @directory, data )
|
34
34
|
ErbLatex::File.evaluate(Pathname.new(template), context.getBinding, @directory)
|
35
35
|
end
|
36
36
|
|
37
|
-
# convert newline characters into latex '\\
|
37
|
+
# convert newline characters into latex '\\linebreak'
|
38
38
|
def break_lines( txt )
|
39
|
-
q(txt.to_s).gsub("\n",'\\
|
39
|
+
q(txt.to_s).gsub("\n",'\\linebreak ')
|
40
40
|
end
|
41
41
|
|
42
42
|
# return a reference to the instance's scope or 'binding'
|
@@ -5,15 +5,17 @@ module ErbLatex
|
|
5
5
|
# simualar to File.read, except:
|
6
6
|
# * Will search in_directory for file if given, otherwise expects file to be an absolute path
|
7
7
|
# * appends ErbLatex.config.file_extension to the file if it's not found as-is.
|
8
|
-
def self.read(
|
8
|
+
def self.read(requested_file, in_directory = nil)
|
9
|
+
file = requested_file
|
9
10
|
if in_directory
|
10
11
|
file = Pathname.new(in_directory.to_s).join(file)
|
11
12
|
end
|
12
|
-
|
13
|
-
file = Pathname.new(file.to_s + ErbLatex.config.file_extension)
|
13
|
+
if file.to_s !~ /#{ErbLatex.config.file_extension}$/ && !file.exist?
|
14
|
+
file = Pathname.new(file.to_s + ErbLatex.config.file_extension)
|
14
15
|
end
|
15
16
|
unless file.exist?
|
16
|
-
msg = "Unable to read from #{
|
17
|
+
msg = "Unable to read from #{requested_file}."
|
18
|
+
msg << " Also tried extension #{file}" if file != requested_file
|
17
19
|
raise LatexError.new(msg)
|
18
20
|
end
|
19
21
|
file.read
|
data/lib/erb_latex/template.rb
CHANGED
@@ -34,10 +34,13 @@ module ErbLatex
|
|
34
34
|
# create a new Template
|
35
35
|
# @param view_file [String] path to the latex template
|
36
36
|
# @option options [String] :layout path to a latex template that calls yield
|
37
|
-
# @option options [Hash]
|
37
|
+
# @option options [Hash] :data an instance variable will be created in the view for each key/value pair
|
38
|
+
# @option context [Class] : a class that will be instantiated to provide helper methods to ERB templates. Defaults to ErbLatex:Context
|
39
|
+
|
38
40
|
def initialize( view_file, options={} )
|
39
41
|
@data = options[:data] || {}
|
40
42
|
@layout = options[:layout]
|
43
|
+
@context = options[:context] || ErbLatex::Context
|
41
44
|
@packages_path = options[:packages_path]
|
42
45
|
@partials_path = options[:partials_path]
|
43
46
|
@view = Pathname.new( view_file )
|
@@ -113,14 +116,14 @@ module ErbLatex
|
|
113
116
|
# @raise [LatexError] if the xelatex process does not complete successfully
|
114
117
|
def compile_latex
|
115
118
|
begin
|
116
|
-
context =
|
119
|
+
context = @context.new( @partials_path || @view.dirname, @data )
|
117
120
|
content = ErbLatex::File.evaluate(@view, context.getBinding)
|
118
121
|
if layout
|
119
122
|
ErbLatex::File.evaluate(layout_file, context.getBinding{ content })
|
120
123
|
else
|
121
124
|
content
|
122
125
|
end
|
123
|
-
rescue
|
126
|
+
rescue LocalJumpError=>e
|
124
127
|
raise LatexError.new( "ERB compile raised #{e.class} on #{@view}", e.backtrace )
|
125
128
|
end
|
126
129
|
end
|
data/lib/erb_latex/version.rb
CHANGED
data/test/erb_latex_test.rb
CHANGED
@@ -27,7 +27,10 @@ class ErbLatexTest < MiniTest::Test
|
|
27
27
|
end
|
28
28
|
|
29
29
|
def test_multiple_runs
|
30
|
-
tmpl = ErbLatex::Template.new(
|
30
|
+
tmpl = ErbLatex::Template.new(
|
31
|
+
document(:multi_page),
|
32
|
+
packages_path: Pathname.new(__FILE__).dirname.join('fixtures')
|
33
|
+
)
|
31
34
|
tmpl.to_file tmp_output_file
|
32
35
|
assert_equal 2, tmpl.pass_count
|
33
36
|
text = text_output
|
@@ -48,5 +51,12 @@ class ErbLatexTest < MiniTest::Test
|
|
48
51
|
assert_match "a test ’ of a partial", text_output
|
49
52
|
end
|
50
53
|
|
51
|
-
|
54
|
+
def test_custom_context
|
55
|
+
tmpl = ErbLatex::Template.new(
|
56
|
+
document('custom_context.tex.erb'),
|
57
|
+
context: CustomContext
|
58
|
+
)
|
59
|
+
tmpl.to_file tmp_output_file
|
60
|
+
assert_match "custom helper method", text_output
|
61
|
+
end
|
52
62
|
end
|
@@ -0,0 +1,283 @@
|
|
1
|
+
%%
|
2
|
+
%% This is file `lastpage.sty',
|
3
|
+
%% generated with the docstrip utility.
|
4
|
+
%%
|
5
|
+
%% The original source files were:
|
6
|
+
%%
|
7
|
+
%% lastpage.dtx (with options: `package')
|
8
|
+
%%
|
9
|
+
%% This is a generated file.
|
10
|
+
%%
|
11
|
+
%% Project: lastpage
|
12
|
+
%% Version: 2015/03/29 v1.2m
|
13
|
+
%%
|
14
|
+
%% Copyright (C) 2010 - 2015 by
|
15
|
+
%% H.-Martin M"unch <Martin dot Muench at Uni-Bonn dot de>
|
16
|
+
%% Portions of code copyrighted by other people as marked.
|
17
|
+
%%
|
18
|
+
%% The usual disclaimer applies:
|
19
|
+
%% If it doesn't work right that's your problem.
|
20
|
+
%% (Nevertheless, send an e-mail to the maintainer
|
21
|
+
%% when you find an error in this package.)
|
22
|
+
%%
|
23
|
+
%% This work may be distributed and/or modified under the
|
24
|
+
%% conditions of the LaTeX Project Public License, either
|
25
|
+
%% version 1.3c of this license or (at your option) any later
|
26
|
+
%% version. This version of this license is in
|
27
|
+
%% http://www.latex-project.org/lppl/lppl-1-3c.txt
|
28
|
+
%% and the latest version of this license is in
|
29
|
+
%% http://www.latex-project.org/lppl.txt
|
30
|
+
%% and version 1.3c or later is part of all distributions of
|
31
|
+
%% LaTeX version 2005/12/01 or later.
|
32
|
+
%%
|
33
|
+
%% This work has the LPPL maintenance status "maintained".
|
34
|
+
%%
|
35
|
+
%% The Current Maintainer of this work is H.-Martin Muench.
|
36
|
+
%%
|
37
|
+
%% This package was invented by
|
38
|
+
%% Jeffrey P. Goldberg (jeffrey+news at goldmark dot org).
|
39
|
+
%% I thought that a replacement was needed and therefore created the pageslts package,
|
40
|
+
%% https://www.ctan.org/pkg/pageslts
|
41
|
+
%% . Nevertheless, for compatibility with existing documents/packages as well as for
|
42
|
+
%% the low amount of resources needed by the lastpage package (no new counter!),
|
43
|
+
%% I updated this package.
|
44
|
+
%% Thanks go to Jeffrey P. Goldberg for allowing me to do this.
|
45
|
+
%%
|
46
|
+
%% This work consists of the main source file lastpage.dtx,
|
47
|
+
%% the README, and the derived files
|
48
|
+
%% lastpage.sty, lastpage.pdf,
|
49
|
+
%% lastpage.ins, lastpage.drv,
|
50
|
+
%% lastpage-example.tex, lastpage-example.pdf.
|
51
|
+
%%
|
52
|
+
%% In memoriam
|
53
|
+
%% Claudia Simone Barth + 1996/01/30
|
54
|
+
%% Tommy Muench + 2014/01/02
|
55
|
+
%% Hans-Klaus Muench + 2014/08/24
|
56
|
+
%%
|
57
|
+
\NeedsTeXFormat{LaTeX2e}[2014/05/01]
|
58
|
+
\ProvidesPackage{lastpage}%
|
59
|
+
[2015/03/29 v1.2m Refers to last page's name (HMM; JPG)]%
|
60
|
+
|
61
|
+
%% lastpage may work with earlier versions of LaTeX,
|
62
|
+
%% but this was not tested. Please consider updating
|
63
|
+
%% your LaTeX (and packages) to the most recent version
|
64
|
+
%% (if it is/they are not already the most recent version).
|
65
|
+
|
66
|
+
%% Allows for things like
|
67
|
+
%% Page \thepage{} of \pageref{LastPage}
|
68
|
+
%% to get
|
69
|
+
%% 'Page 7 of 9'.
|
70
|
+
%% For LaTeX 2.09 use lastpage209.sty.
|
71
|
+
%% For LaTeX 2e maybe consider upgrading to the pageslts package.
|
72
|
+
%% lastpage may work with earlier versions of LaTeX2e,
|
73
|
+
%% but this was not tested. Please consider updating your LaTeX
|
74
|
+
%% contribution to the most recent version (if it is not already
|
75
|
+
%% the most recent version).
|
76
|
+
|
77
|
+
%% The recent version of the endfloat package is v2.5d as of 2011/12/25.
|
78
|
+
%% The lastpage package is not fully compatible with version 2.0
|
79
|
+
%% (and earlier) of the endfloat package, because those versions
|
80
|
+
%% redefined the \enddocument command.
|
81
|
+
|
82
|
+
\def\lastpage@one{1}
|
83
|
+
\gdef\lastpage@hyper{0}
|
84
|
+
\gdef\lastpage@nameref{0}
|
85
|
+
\gdef\lastpage@LTS{0}
|
86
|
+
\def\lastpage@firstpage{1}
|
87
|
+
|
88
|
+
\AtBeginDocument{%
|
89
|
+
\@ifpackageloaded{tikz}{\gdef\lastpage@tikz{1}}{}%
|
90
|
+
\@ifpackageloaded{hyperref}{\gdef\lastpage@hyper{1}}{}%
|
91
|
+
\@ifpackageloaded{nameref}{\gdef\lastpage@nameref{1}}{}%
|
92
|
+
\@ifpackageloaded{pageslts}{%
|
93
|
+
\PackageWarning{lastpage}{Package pageslts found.\MessageBreak%
|
94
|
+
Therefore the lastpage package is no longer\MessageBreak%
|
95
|
+
necessary.%
|
96
|
+
}%
|
97
|
+
\gdef\lastpage@LTS{1}%
|
98
|
+
}{\PackageInfo{lastpage}{%
|
99
|
+
Please have a look at the pageslts package at\MessageBreak%
|
100
|
+
https://www.ctan.org/pkg/pageslts\MessageBreak%
|
101
|
+
!}%
|
102
|
+
}%
|
103
|
+
\@ifpackageloaded{pagesLTS}{%
|
104
|
+
\PackageWarning{lastpage}{%
|
105
|
+
Outdated pagesLTS package found.\MessageBreak%
|
106
|
+
Please replace by a recent version of\MessageBreak%
|
107
|
+
pageslts package, see e.g. at\MessageBreak%
|
108
|
+
https://www.ctan.org/pkg/pageslts\MessageBreak%
|
109
|
+
!\MessageBreak%
|
110
|
+
With pagesLTS as well as pageslts package\MessageBreak%
|
111
|
+
the lastpage package is no longer necessary.\MessageBreak%
|
112
|
+
}%
|
113
|
+
\gdef\lastpage@LTS{1}%
|
114
|
+
}{}%
|
115
|
+
\gdef\lastpage@putlabel{\relax}%
|
116
|
+
}
|
117
|
+
|
118
|
+
\newcommand{\lastpage@putl@bel}{%
|
119
|
+
\@ifundefined{Hy@Warning}{% hyperref not loaded
|
120
|
+
}{\gdef\lastpage@hyper{1}% hyperref loaded
|
121
|
+
}%
|
122
|
+
\ifx\lastpage@LTS\lastpage@one%
|
123
|
+
\else%
|
124
|
+
\ifx\lastpage@hyper\lastpage@one%
|
125
|
+
\lastpage@putlabelhyper%
|
126
|
+
\else%
|
127
|
+
\ifx\lastpage@nameref\lastpage@one%
|
128
|
+
\lastpage@putlabelNR%
|
129
|
+
\else%
|
130
|
+
\begingroup%
|
131
|
+
\addtocounter{page}{-1}%
|
132
|
+
\immediate\write\@auxout{\string\newlabel{LastPage}{{}{\thepage}}}%
|
133
|
+
\immediate\write\@auxout{\string\xdef\string\lastpage@lastpage{\thepage}}%
|
134
|
+
\immediate\write\@auxout{\string\gdef\string\lastpage@lastpageHy{}}%
|
135
|
+
\addtocounter{page}{+1}%
|
136
|
+
\endgroup%
|
137
|
+
\fi%
|
138
|
+
\fi%
|
139
|
+
\fi%
|
140
|
+
}
|
141
|
+
|
142
|
+
\newcommand{\lastpage@putlabelhyper}{%
|
143
|
+
\ifHy@pageanchor%
|
144
|
+
\else%
|
145
|
+
\PackageError{lastpage}{hyperref option pageanchor disabled}{%
|
146
|
+
The \string\pageref{LastPage} link doesn't work\MessageBreak%
|
147
|
+
using hyperref with disabled option `pageanchor'.\MessageBreak%
|
148
|
+
}%
|
149
|
+
\fi%
|
150
|
+
\begingroup%
|
151
|
+
\addtocounter{page}{-1}%
|
152
|
+
%% The following code is from the hyperref package %%
|
153
|
+
%% [2010/04/17 v6.80x; newer versions are available] %%
|
154
|
+
%% by Heiko Oberdiek (Big Thanks!). %%
|
155
|
+
\let\@number\@firstofone
|
156
|
+
\ifHy@pageanchor
|
157
|
+
\ifHy@hypertexnames
|
158
|
+
\ifHy@plainpages
|
159
|
+
\def\Hy@temp{\arabic{page}}%
|
160
|
+
\else
|
161
|
+
\Hy@unicodefalse
|
162
|
+
%% Code not from hyperref package: %%
|
163
|
+
%% The following lines are taken from the pageslts package, %%
|
164
|
+
%% which in turn got them from the hyperref package and %%
|
165
|
+
%% modified them. %%
|
166
|
+
%% Without the modification, after the first shipout "PD1" %%
|
167
|
+
%% is inserted each time |\pdfstringdef\Hy@temp{\thepage}| %%
|
168
|
+
%% is executed. %%
|
169
|
+
\ifnum \value{page}=1%
|
170
|
+
\ifx \lastpage@firstpage\lastpage@one
|
171
|
+
\def\Hy@temp{\thepage}%
|
172
|
+
\gdef\lastpage@firstpage{0}%
|
173
|
+
\else%
|
174
|
+
%% Code from hyperref package again: %%
|
175
|
+
\pdfstringdef\Hy@temp{\thepage}%
|
176
|
+
%% End of code from the hyperref package. %%
|
177
|
+
\fi%
|
178
|
+
%% The pageslts package would even check for fnsymbol page %%
|
179
|
+
%% numbering scheme and adapt the code correspondingly. %%
|
180
|
+
\else%
|
181
|
+
%% Code from hyperref package again: %%
|
182
|
+
\pdfstringdef\Hy@temp{\thepage}%
|
183
|
+
%% Code from pageslts package again: %%
|
184
|
+
\fi%
|
185
|
+
%% Code from hyperref package again: %%
|
186
|
+
\fi
|
187
|
+
\else
|
188
|
+
\def\Hy@temp{\the\Hy@pagecounter}%
|
189
|
+
\fi
|
190
|
+
\fi
|
191
|
+
\immediate\write\@auxout{%
|
192
|
+
\string\newlabel
|
193
|
+
{LastPage}{{}{\thepage}{}{%
|
194
|
+
\ifHy@pageanchor page.\Hy@temp\fi}{}}%
|
195
|
+
}%
|
196
|
+
%% End of code from the hyperref package. %%
|
197
|
+
\immediate\write\@auxout{%
|
198
|
+
\string\xdef\string\lastpage@lastpage{\thepage}}%
|
199
|
+
\ifHy@pageanchor%
|
200
|
+
\immediate\write\@auxout{%
|
201
|
+
\string\xdef\string\lastpage@lastpageHy{\Hy@temp}}%
|
202
|
+
\else%
|
203
|
+
\immediate\write\@auxout{%
|
204
|
+
\string\gdef\string\lastpage@lastpageHy{}}%
|
205
|
+
\fi%
|
206
|
+
\addtocounter{page}{+1}%
|
207
|
+
\endgroup%
|
208
|
+
}
|
209
|
+
|
210
|
+
\newcommand{\lastpage@putlabelNR}{%
|
211
|
+
\begingroup%
|
212
|
+
\addtocounter{page}{-1}%
|
213
|
+
\immediate\write\@auxout{\string\newlabel{LastPage}{{}{\thepage}{}{}{}}}%
|
214
|
+
\immediate\write\@auxout{\string\xdef\string\lastpage@lastpage{\thepage}}%
|
215
|
+
\immediate\write\@auxout{\string\gdef\string\lastpage@lastpageHy{}}%
|
216
|
+
\addtocounter{page}{+1}%
|
217
|
+
\endgroup%
|
218
|
+
}
|
219
|
+
|
220
|
+
\newcommand{\lastpage@fileswtest}[2]{%
|
221
|
+
\edef\lastpage@testa{#1}%
|
222
|
+
\edef\lastpage@testb{#2}%
|
223
|
+
\ifx\lastpage@testa\lastpage@testb% OK
|
224
|
+
\else%
|
225
|
+
\ifx\lastpage@tikz\lastpage@one%
|
226
|
+
\PackageWarning{lastpage}%
|
227
|
+
{The lastpage package was not allowed to write to an\MessageBreak%
|
228
|
+
.aux file. This package does not work without access\MessageBreak%
|
229
|
+
to an .aux file.\MessageBreak%
|
230
|
+
It is OK if the .aux file was already updated\MessageBreak%
|
231
|
+
by a previouse compiler run\MessageBreak%
|
232
|
+
and would not have changed anyway.\MessageBreak%
|
233
|
+
}%
|
234
|
+
\else%
|
235
|
+
\PackageError{lastpage}{No auxiliary file allowed}%
|
236
|
+
{The lastpage package was not allowed to write to an .aux file.\MessageBreak%
|
237
|
+
This package does not work without access to an .aux file.\MessageBreak%
|
238
|
+
Press Ctrl+Z to exit.\MessageBreak%
|
239
|
+
}%
|
240
|
+
\fi%
|
241
|
+
\fi%
|
242
|
+
}
|
243
|
+
\newcommand{\lastpage@fileswtestHy}{%
|
244
|
+
\ifHy@pageanchor%
|
245
|
+
\lastpage@fileswtest{\Hy@temp}{\lastpage@lastpageHy}%
|
246
|
+
\else%
|
247
|
+
\lastpage@fileswtest{\empty}{\lastpage@lastpageHy}%
|
248
|
+
\fi%
|
249
|
+
}
|
250
|
+
|
251
|
+
\AtEndDocument{%
|
252
|
+
\gdef\lastpage@putlabel{\relax}%
|
253
|
+
\ifx\lastpage@LTS\lastpage@one%
|
254
|
+
\else%
|
255
|
+
\@ifundefined{lastpage@lastpage}%
|
256
|
+
{\gdef\lastpage@lastpage{LastpagePackageError}%
|
257
|
+
% If there really is a page numbered (!) "LastpagePackageError",
|
258
|
+
% you will get the rerun warning whether it is necessary or not.
|
259
|
+
\PackageWarning{lastpage}{Rerun to get the references right}%
|
260
|
+
}{% already defined, nothing to be done.
|
261
|
+
}%
|
262
|
+
\@ifundefined{lastpage@lastpageHy}%
|
263
|
+
{\gdef\lastpage@lastpageHy{LastpagePackageError}%
|
264
|
+
}{% already defined, nothing to be done.
|
265
|
+
}%
|
266
|
+
\fi%
|
267
|
+
\if@filesw%
|
268
|
+
\message{^^JAED: lastpage setting LastPage^^J}%
|
269
|
+
\clearpage\lastpage@putl@bel%
|
270
|
+
\else%
|
271
|
+
\ifx\lastpage@LTS\lastpage@one%
|
272
|
+
\else%
|
273
|
+
\lastpage@fileswtest{\thepage}{\lastpage@lastpage}%
|
274
|
+
\ifx\lastpage@hyper\lastpage@one%
|
275
|
+
\lastpage@fileswtestHy%
|
276
|
+
\fi%
|
277
|
+
\fi%
|
278
|
+
\fi%
|
279
|
+
}
|
280
|
+
|
281
|
+
\endinput
|
282
|
+
%%
|
283
|
+
%% End of file `lastpage.sty'.
|
@@ -0,0 +1,70 @@
|
|
1
|
+
%%
|
2
|
+
%% This is file `lastpage209.sty',
|
3
|
+
%% generated with the docstrip utility.
|
4
|
+
%%
|
5
|
+
%% The original source files were:
|
6
|
+
%%
|
7
|
+
%% lastpage.dtx (with options: `lastpage209')
|
8
|
+
%%
|
9
|
+
%% This is a generated file.
|
10
|
+
%%
|
11
|
+
%% Project: lastpage
|
12
|
+
%% Version: 2015/03/29 v1.2m
|
13
|
+
%%
|
14
|
+
%% Copyright (C) 2010 - 2015 by
|
15
|
+
%% H.-Martin M"unch <Martin dot Muench at Uni-Bonn dot de>
|
16
|
+
%% Portions of code copyrighted by other people as marked.
|
17
|
+
%%
|
18
|
+
%% The usual disclaimer applies:
|
19
|
+
%% If it doesn't work right that's your problem.
|
20
|
+
%% (Nevertheless, send an e-mail to the maintainer
|
21
|
+
%% when you find an error in this package.)
|
22
|
+
%%
|
23
|
+
%% This work may be distributed and/or modified under the
|
24
|
+
%% conditions of the LaTeX Project Public License, either
|
25
|
+
%% version 1.3c of this license or (at your option) any later
|
26
|
+
%% version. This version of this license is in
|
27
|
+
%% http://www.latex-project.org/lppl/lppl-1-3c.txt
|
28
|
+
%% and the latest version of this license is in
|
29
|
+
%% http://www.latex-project.org/lppl.txt
|
30
|
+
%% and version 1.3c or later is part of all distributions of
|
31
|
+
%% LaTeX version 2005/12/01 or later.
|
32
|
+
%%
|
33
|
+
%% This work has the LPPL maintenance status "maintained".
|
34
|
+
%%
|
35
|
+
%% The Current Maintainer of this work is H.-Martin Muench.
|
36
|
+
%%
|
37
|
+
%% This package was invented by
|
38
|
+
%% Jeffrey P. Goldberg (jeffrey+news at goldmark dot org).
|
39
|
+
%% I thought that a replacement was needed and therefore created the pageslts package,
|
40
|
+
%% https://www.ctan.org/pkg/pageslts
|
41
|
+
%% . Nevertheless, for compatibility with existing documents/packages as well as for
|
42
|
+
%% the low amount of resources needed by the lastpage package (no new counter!),
|
43
|
+
%% I updated this package.
|
44
|
+
%% Thanks go to Jeffrey P. Goldberg for allowing me to do this.
|
45
|
+
%%
|
46
|
+
%% This work consists of the main source file lastpage.dtx,
|
47
|
+
%% the README, and the derived files
|
48
|
+
%% lastpage.sty, lastpage.pdf,
|
49
|
+
%% lastpage.ins, lastpage.drv,
|
50
|
+
%% lastpage-example.tex, lastpage-example.pdf.
|
51
|
+
%%
|
52
|
+
%% In memoriam
|
53
|
+
%% Claudia Simone Barth + 1996/01/30
|
54
|
+
%% Tommy Muench + 2014/01/02
|
55
|
+
%% Hans-Klaus Muench + 2014/08/24
|
56
|
+
%%
|
57
|
+
% FOR LaTeX 2.09 ONLY - FOR LaTeX 2e USE lastpage.sty OR pageslts.sty!
|
58
|
+
% This is lastpage209.sty invented by Jeffrey P. Goldberg
|
59
|
+
% (jeffrey+news at goldmark dot org), maintained by
|
60
|
+
% H.-Martin M\"{u}ench (Martin dot Muench at Uni-Bonn dot de).
|
61
|
+
\let\origenddocument=\enddocument%
|
62
|
+
\def\enddocument{\clearpage%
|
63
|
+
{\addtocounter{page}{-1}%
|
64
|
+
\immediate\write\@mainaux{\string\newlabel{LastPage}{{}{\thepage}}}}%
|
65
|
+
\addtocounter{page}{+1}%
|
66
|
+
\origenddocument%
|
67
|
+
}%
|
68
|
+
\endinput
|
69
|
+
%%
|
70
|
+
%% End of file `lastpage209.sty'.
|
data/test/helper.rb
CHANGED
@@ -9,6 +9,12 @@ $LOAD_PATH.unshift(File.join(File.dirname(__FILE__), '..', 'lib'))
|
|
9
9
|
$LOAD_PATH.unshift(File.dirname(__FILE__))
|
10
10
|
require 'erb_latex'
|
11
11
|
|
12
|
+
class CustomContext < ErbLatex::Context
|
13
|
+
def output_test_string
|
14
|
+
'A string from custom helper method'
|
15
|
+
end
|
16
|
+
end
|
17
|
+
|
12
18
|
class MiniTest::Test
|
13
19
|
|
14
20
|
def document( name )
|
metadata
CHANGED
@@ -1,85 +1,85 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: erb_latex
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 1.0.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Nathan Stitt
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2016-
|
11
|
+
date: 2016-06-04 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rake
|
15
15
|
requirement: !ruby/object:Gem::Requirement
|
16
16
|
requirements:
|
17
|
-
- - "
|
17
|
+
- - ">="
|
18
18
|
- !ruby/object:Gem::Version
|
19
|
-
version: '
|
19
|
+
version: '0'
|
20
20
|
type: :development
|
21
21
|
prerelease: false
|
22
22
|
version_requirements: !ruby/object:Gem::Requirement
|
23
23
|
requirements:
|
24
|
-
- - "
|
24
|
+
- - ">="
|
25
25
|
- !ruby/object:Gem::Version
|
26
|
-
version: '
|
26
|
+
version: '0'
|
27
27
|
- !ruby/object:Gem::Dependency
|
28
28
|
name: bundler
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
30
30
|
requirements:
|
31
|
-
- - "
|
31
|
+
- - ">="
|
32
32
|
- !ruby/object:Gem::Version
|
33
|
-
version: '
|
33
|
+
version: '0'
|
34
34
|
type: :development
|
35
35
|
prerelease: false
|
36
36
|
version_requirements: !ruby/object:Gem::Requirement
|
37
37
|
requirements:
|
38
|
-
- - "
|
38
|
+
- - ">="
|
39
39
|
- !ruby/object:Gem::Version
|
40
|
-
version: '
|
40
|
+
version: '0'
|
41
41
|
- !ruby/object:Gem::Dependency
|
42
42
|
name: yard
|
43
43
|
requirement: !ruby/object:Gem::Requirement
|
44
44
|
requirements:
|
45
|
-
- - "
|
45
|
+
- - ">="
|
46
46
|
- !ruby/object:Gem::Version
|
47
|
-
version: '0
|
47
|
+
version: '0'
|
48
48
|
type: :development
|
49
49
|
prerelease: false
|
50
50
|
version_requirements: !ruby/object:Gem::Requirement
|
51
51
|
requirements:
|
52
|
-
- - "
|
52
|
+
- - ">="
|
53
53
|
- !ruby/object:Gem::Version
|
54
|
-
version: '0
|
54
|
+
version: '0'
|
55
55
|
- !ruby/object:Gem::Dependency
|
56
56
|
name: guard
|
57
57
|
requirement: !ruby/object:Gem::Requirement
|
58
58
|
requirements:
|
59
|
-
- - "
|
59
|
+
- - ">="
|
60
60
|
- !ruby/object:Gem::Version
|
61
|
-
version: '
|
61
|
+
version: '0'
|
62
62
|
type: :development
|
63
63
|
prerelease: false
|
64
64
|
version_requirements: !ruby/object:Gem::Requirement
|
65
65
|
requirements:
|
66
|
-
- - "
|
66
|
+
- - ">="
|
67
67
|
- !ruby/object:Gem::Version
|
68
|
-
version: '
|
68
|
+
version: '0'
|
69
69
|
- !ruby/object:Gem::Dependency
|
70
70
|
name: guard-minitest
|
71
71
|
requirement: !ruby/object:Gem::Requirement
|
72
72
|
requirements:
|
73
|
-
- - "
|
73
|
+
- - ">="
|
74
74
|
- !ruby/object:Gem::Version
|
75
|
-
version: '
|
75
|
+
version: '0'
|
76
76
|
type: :development
|
77
77
|
prerelease: false
|
78
78
|
version_requirements: !ruby/object:Gem::Requirement
|
79
79
|
requirements:
|
80
|
-
- - "
|
80
|
+
- - ">="
|
81
81
|
- !ruby/object:Gem::Version
|
82
|
-
version: '
|
82
|
+
version: '0'
|
83
83
|
description: Applies ERB template processing to a Latex file and compiles it to a
|
84
84
|
PDF. Supports layouts, partials, and string escaping. Also supplies a Guard task
|
85
85
|
to watch for modifications and auto-building files.
|
@@ -108,6 +108,9 @@ files:
|
|
108
108
|
- lib/erb_latex/version.rb
|
109
109
|
- test/erb_latex_test.rb
|
110
110
|
- test/fixtures/body.tex.erb
|
111
|
+
- test/fixtures/custom_context.tex.erb
|
112
|
+
- test/fixtures/lastpage.sty
|
113
|
+
- test/fixtures/lastpage209.sty
|
111
114
|
- test/fixtures/layout.tex.erb
|
112
115
|
- test/fixtures/multi_page.tex.erb
|
113
116
|
- test/fixtures/partial.tex.erb
|
@@ -137,13 +140,16 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
137
140
|
version: '0'
|
138
141
|
requirements: []
|
139
142
|
rubyforge_project:
|
140
|
-
rubygems_version: 2.
|
143
|
+
rubygems_version: 2.5.1
|
141
144
|
signing_key:
|
142
145
|
specification_version: 4
|
143
146
|
summary: Applies ERB template processing to a Latex file and compiles it to a PDF
|
144
147
|
test_files:
|
145
148
|
- test/erb_latex_test.rb
|
146
149
|
- test/fixtures/body.tex.erb
|
150
|
+
- test/fixtures/custom_context.tex.erb
|
151
|
+
- test/fixtures/lastpage.sty
|
152
|
+
- test/fixtures/lastpage209.sty
|
147
153
|
- test/fixtures/layout.tex.erb
|
148
154
|
- test/fixtures/multi_page.tex.erb
|
149
155
|
- test/fixtures/partial.tex.erb
|