diff options
Diffstat (limited to 'scripts')
-rw-r--r-- | scripts/context/ruby/ctxtools.rb | 71 | ||||
-rw-r--r-- | scripts/context/ruby/graphics/gs.rb | 4 |
2 files changed, 48 insertions, 27 deletions
diff --git a/scripts/context/ruby/ctxtools.rb b/scripts/context/ruby/ctxtools.rb index 2104eebf7..ee967ec31 100644 --- a/scripts/context/ruby/ctxtools.rb +++ b/scripts/context/ruby/ctxtools.rb @@ -44,7 +44,7 @@ # it cannot do that (it tries to hyphenate as if the "ffi" was a # character), and the result is wrong hyphenation. -banner = ['CtxTools', 'version 1.3.2', '2004/2006', 'PRAGMA ADE/POD'] +banner = ['CtxTools', 'version 1.3.3', '2004/2006', 'PRAGMA ADE/POD'] unless defined? ownpath ownpath = $0.sub(/[\\\/][a-z0-9\-]*?\.rb/i,'') @@ -528,7 +528,7 @@ class Commands $forsuresuffixes = [ "tui", "tup", "ted", "tes", "top", "log", "tmp", "run", "bck", "rlg", - "mpt", "mpx", "mpd", "mpo" + "mpt", "mpx", "mpd", "mpo", "ctl", ] $texonlysuffixes = [ "dvi", "ps", "pdf" @@ -1775,45 +1775,63 @@ class Commands # document: <!DOCTYPE something SYSTEM "entities.xml"> def flushentities(handle,entities,doctype=nil) # 'stylesheet' - tab = if doctype then "\t" else "" end - handle.puts("<!DOCTYPE #{doctype} [") if doctype + if doctype then + tab = "\t" + handle << "<?xml version='1.0' encoding='utf-8'?>\n\n" + handle << "<!-- !DOCTYPE entities SYSTEM 'entities.xml' -->\n\n" + handle << "<!DOCTYPE #{doctype} [\n" + else + tab = "" + end entities.keys.sort.each do |k| - handle.puts("#{tab}<!ENTITY #{k} \"\&\##{entities[k]};\">") + handle << "#{tab}<!ENTITY #{k} \"\&\#x#{entities[k]};\">\n" + end + if doctype then + handle << "]>\n" end - handle.puts("]>") if doctype end def listentities - # filename = `texmfstart tmftools.rb --progname=context enco-uc.tex`.chomp - filename = `kpsewhich --progname=context enco-uc.tex`.chomp + filenames = ['enco-uc.tex','contextnames.txt'] outputname = @commandline.argument('first') - - if filename and not filename.empty? and FileTest.file?(filename) then - entities = Hash.new - IO.readlines(filename).each do |line| - if line =~ /\\definecharacter\s+([a-zA-Z]+)\s+\{\\uchar\{*(\d+)\}*\{(\d+)\}\}/o then - name, low, high = $1, $2.to_i, $3.to_i - entities[name] = low*256 + high + doctype = @commandline.option('doctype') + entities = Hash.new + + filenames.each do |filename| + # filename = `texmfstart tmftools.rb --progname=context #{filename}`.chomp + filename = `kpsewhich --progname=context #{filename}`.chomp + if filename and not filename.empty? and FileTest.file?(filename) then + report("loading #{filename.gsub(/\\/,'/')}") unless outputname.empty? + IO.readlines(filename).each do |line| + case line + when /^[\#\%]/io then + # skip comment line + when /\\definecharacter\s+([a-z]+)\s+\{\\uchar\{*(\d+)\}*\{(\d+)\}\}/io then + name, code = $1, ($2.to_i*256 + $3.to_i).to_s + entities[name] = code.rjust(4,'0') unless entities.key?(name) + when /^([A-F0-9]+)\;([a-z][a-z]+)\;(.*?)\;(.*?)\s*$/io then + code, name, adobe, comment = $1, $2, $3, $4 + entities[name] = code.rjust(4,'0') unless entities.key?(name) + end end end - if outputname and not outputname.empty? then - if f = File.open(outputname,'w') then - flushentities(f,entities) - f.close - else - flushentities($stdout,entities) - end + end + if outputname and not outputname.empty? then + if f = File.open(outputname,'w') then + report("saving #{entities.size} entities in #{outputname}") + flushentities(f,entities,doctype) + f.close else - flushentities($stdout,entities) + flushentities($stdout,entities,doctype) end + else + flushentities($stdout,entities,doctype) end - end end - class Commands include CommandBase @@ -2289,11 +2307,13 @@ class Commands begin system("unzip -uo #{archive}") rescue + report("fatal error, make sure that you have 'unzip' in your path") return false else return true end else + report("fatal error, '{archive}' has not been downloaded") return false end end @@ -2364,6 +2384,7 @@ commandline.registerflag('all') commandline.registerflag('xml') commandline.registerflag('log') commandline.registerflag('utf8') +commandline.registerflag('doctype') # general diff --git a/scripts/context/ruby/graphics/gs.rb b/scripts/context/ruby/graphics/gs.rb index 588ef2417..2c1079d1a 100644 --- a/scripts/context/ruby/graphics/gs.rb +++ b/scripts/context/ruby/graphics/gs.rb @@ -356,7 +356,7 @@ class GhostScript arguments = '' arguments << "\@gsprofile.ini " - arguments << "-q -sDEVICE=pdfwrite -dNOPAUSE -dNOCACHE -dBATCH -dSAFER" + arguments << "-q -sDEVICE=pdfwrite -dNOPAUSE -dNOCACHE -dBATCH -dSAFER " arguments << "#{gscolorswitch} " arguments << "#{gsdefaults} " arguments << "-sOutputFile=#{outfile} #{gsstream} -c quit " @@ -432,7 +432,7 @@ class GhostScript # -dEPSFitPage and -dEPSCrop behave weird (don't work) - arguments = "-sDEVICE=bbox -dSAFER -dNOPAUSE -dBATCH #{inpfile}" + arguments = "-sDEVICE=bbox -dSAFER -dNOPAUSE -dBATCH #{inpfile} " debug("ghostscript: #{arguments}") |