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