lib/erbtex/runner.rb in erbtex-0.4.3 vs lib/erbtex/runner.rb in erbtex-0.4.4
- old
+ new
@@ -55,29 +55,33 @@
# Run the TeX program on the erubis-processed output file, which is the
# input file to the TeX program. Return the exit status.
def self.run_tex(cmd, in_dir = nil)
# If the input file is located in another directory (in_dir), add that
# directory to TEXINPUTS if its not already there so that the input file
- # can \include or \input files using relative file names.
+ # can \include or \input files using relative file names. Place it after
+ # the current directory '.' so that an plain file name is still
+ # interpreted relative to the current working directory.
new_env = {}
if in_dir
in_dir = File.absolute_path(File.expand_path(in_dir))
ENV['TEXINPUTS'] ||= ''
unless ENV['TEXINPUTS'].split(File::PATH_SEPARATOR)
.reject { |p| p.strip.empty? }
.any? { |p| in_dir == File.absolute_path(File.expand_path(p)) }
- new_env['TEXINPUTS'] = "#{in_dir}:#{ENV['TEXINPUTS']}"
+ new_env['TEXINPUTS'] = ".:#{in_dir}:#{ENV['TEXINPUTS']}"
end
end
# Call cmd with the environment augmented by possibly expanded TEXINPUTS
# environment variable.
+ warn "TEXINPUTS set to: #{new_env['TEXINPUTS']}"
unless system(new_env, cmd)
warn "Call to '#{cmd}' failed."
exit $CHILD_STATUS
end
# Run a second time unless its latexmk
unless cmd =~ /\A *latexmk/
+ warn "TEXINPUTS set to: #{new_env['TEXINPUTS']}"
unless system(new_env, cmd)
warn "Call to '#{cmd}' failed."
exit $CHILD_STATUS
end
end
@@ -87,32 +91,38 @@
# Pre-process the input file with erubis, adding the in_dir to the front of
# the ruby load path if its not already in the load path so that requires in
# the input file can be found if they are in the in_dir. Return the name of
# the output file.
def self.erb_to_tex(in_file, in_dir = nil)
+ warn '================================================================'
+ warn 'Erubis phase of processing ...'
# Add input to ruby LOAD_PATH, $:,if its not already there.
if File.exist?(in_dir)
in_dir = File.absolute_path(File.expand_path(in_dir))
unless $LOAD_PATH
.any? { |p| in_dir == File.absolute_path(File.expand_path(p)) }
$LOAD_PATH.unshift(in_dir)
end
end
# Read the input
+ warn " Erubis reading from #{in_file}..."
in_contents = nil
File.open(in_file) do |f|
in_contents = f.read
end
# TODO: recurse through any \input or \include commands
pat = ENV['ERBTEX_PATTERN'] || '{: :}'
out_file = ErbTeX.out_file_name(in_file)
+ warn " Erubis writing to #{out_file}..."
File.open(out_file, 'w') do |f|
er = ::Erubis::Eruby.new(in_contents, pattern: pat)
f.write(er.result)
end
+ warn 'done'
+ warn '================================================================'
out_file
rescue SystemCallError => e
warn "Error: #{e}"
exit 1
rescue ScriptError => e