#!/usr/bin/env ruby # coding: cp932 $: << '~/src/eclipse/autopilot/common/ruby/' $stderr.puts "Usage: #{__FILE__} [options]" options = { :auto => true, :files => [], :clean => false, :no_clearpage => false, :recursive => false, :basename => File::basename(__FILE__, '.*')} ARGV.reject!{|item| next false unless item =~ /--([^=]+)=?/ k = $1.to_sym v = $' case k when :file then options[:auto] = false options[:files] << $' when :auto, :clean, :no_clearpage, :recursive then options[k] = v.empty? ? true : (eval(v) ? true : false) when :basename then options[k] = v when :filter options[k] = eval(v) end true } #epsファイル一覧の生成 eps_files = options[:files] eps_files.each{|file| unless File::exist?(file) then $stderr.puts "File not found!! #{file}" exit end } if options[:auto] then targets = ['*.eps', '*.png'] targets.collect!{|v| "**/#{v}"} if options[:recursive] eps_files = Dir::glob(targets) end eps_files.uniq! eps_files.reject!{|f| f !~ options[:filter]} if options[:filter] if eps_files.empty? then puts "No figure found!!" exit end #exit #TeXファイルの生成 tex_doc =<<-'__TEX_STRING__' \documentclass[disablejfam]{jsarticle} % pakages \usepackage{times, mathptmx} \usepackage{graphicx} \usepackage{makeidx} \usepackage{bm} \usepackage{amsmath, amssymb} \usepackage{tabularx} \usepackage{slashbox} \usepackage{enumerate} %\usepackage{hyperref} \usepackage{ascmac} \usepackage[dvipdfm,bookmarks=true,bookmarksnumbered=true,bookmarkstype=toc,colorlinks=true,linkcolor=blue]{hyperref} \begin{document} __TEX_STRING__ doc_title = `pwd`.chop! if doc_title =~ %r|/([^/]+)$| then doc_title = $1 end doc_title.gsub!(/_/, '\_') tex_doc +=<<-__TEX_STRING__ \\title{Directory #{doc_title} Figures} __TEX_STRING__ tex_doc +=<<-__TEX_STRING__ \\maketitle \\begin{center} \\begin{screen} #{FileTest::exist?('additional.tex') ? '\\input{additional}' : '\\vskip 100truemm'} \\end{screen} \\end{center} #{'\\clearpage' unless options[:no_clearpage]} \\parindent 0truemm __TEX_STRING__ eps_files.each{|file| opt = '' if File::extname(file) == '.png' then ebb_str = `ebb -O -x #{file}` ebb_str.each_line{|line| break if line =~ /%%BoundingBox:/ } opt += ",bb=#{$'.chomp}" end tex_doc +=<<-__TEX_STRING__ \\begin{minipage}{0.5\\textwidth} \\centering #{file.gsub(/\.[^\.]+$/, '').gsub(/_/, ' ')} \\includegraphics[width=80mm#{opt}]{#{file}} \\end{minipage} __TEX_STRING__ } tex_doc +=<<-'__TEX_STRING__' \end{document} __TEX_STRING__ ftex_name = "#{options[:basename]}.tex" open(ftex_name, 'w'){|io| io.print tex_doc} print `platex #{ftex_name}` print `platex #{ftex_name}` print `dvipdfmx #{ftex_name.gsub(/\.tex/, '.dvi')}` #print `rm *.eps` if options[:clean] then system("rm #{Dir::glob("#{options[:basename]}.*").reject{|fname| fname =~ /\.pdf$/}.join(' ')}") end