Module: GraphKit::Writer

Included in:
GraphKit, MultiKit
Defined in:
lib/graphkit/gnuplot.rb

Instance Method Summary collapse

Instance Method Details

#gnuplot_write(file_name, options = {}) ⇒ Object



485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
# File 'lib/graphkit/gnuplot.rb', line 485

def gnuplot_write(file_name, options={})
	#logf :gnuplot_write
	old_gp_term = gp.term
	old_gp_output = gp.output
	if file_name
		gp.output = file_name
		unless gp.term or options[:terminal]
			case File.extname(file_name)
			when '.pdf'
				gp.term = 'pdf size 20cm,15cm'
			when '.ps'
				gp.term = 'post color'
			when '.eps'
				unless options[:latex]
					gp.term = %[post eps color enhanced size  #{options[:size] or "3.5in,2.33in"}]
				else
					gp.term ||= "epslatex color dashed size #{options[:size] or "3.5in,#{options[:height] or "2.0in"}"} colortext standalone 8"
					(gp.term += " header '#{options[:preamble].inspect.gsub(/\\\n/, "\\\\\\n")}'"; options.delete(:preamble)) if options[:preamble]
				end
			when '.jpg'
				gp.term = "jpeg size  #{options[:size] or "3.5in,2.33in"}"
			when '.png'
				gp.term = "png size  #{options[:size] or "640,480"}"
			when '.gif'
				gp.term = "gif size  #{options[:size] or "640,480"}"
			
			end
		end
	end
	
	gp.output = file_name.sub(/\.eps/, '.tex') if options[:latex]
	options.delete(:size)
	gnuplot(options)
	if options[:latex]
			name = file_name.sub(/\.eps$/, '')
			raise "No file output by gnuplot" unless FileTest.exist? name + '.tex'
			raise 'latex failed' unless system "latex #{name}.tex --interaction nonstopmode --halt-on-error -q"
			raise 'dvips failed' unless system "dvips #{name}.dvi"
			FileUtils.rm "#{name}.eps" if FileTest.exist? "#{name}.eps"
			raise 'ps2eps failed' unless system "ps2eps #{name}.ps"
	end
# 		ep file_name
   gp.term = old_gp_term
	gp.output = old_gp_output
	return File.basename(file_name, File.extname(file_name))
end