diff options
Diffstat (limited to 'scripts/context/ruby')
-rw-r--r-- | scripts/context/ruby/base/system.rb | 2 | ||||
-rw-r--r-- | scripts/context/ruby/base/tex.rb | 10 | ||||
-rw-r--r-- | scripts/context/ruby/base/texutil.rb | 7 | ||||
-rw-r--r-- | scripts/context/ruby/graphics/inkscape.rb | 41 | ||||
-rw-r--r-- | scripts/context/ruby/texexec.rb | 11 |
5 files changed, 48 insertions, 23 deletions
diff --git a/scripts/context/ruby/base/system.rb b/scripts/context/ruby/base/system.rb index 267a22cb9..c3fb08645 100644 --- a/scripts/context/ruby/base/system.rb +++ b/scripts/context/ruby/base/system.rb @@ -30,7 +30,7 @@ module System def System.null - if @@mswindows then 'nul' else '/dev/null/' end + if @@mswindows then 'nul' else '/dev/null' end end def System.unix? diff --git a/scripts/context/ruby/base/tex.rb b/scripts/context/ruby/base/tex.rb index 54d5bc730..02683bd60 100644 --- a/scripts/context/ruby/base/tex.rb +++ b/scripts/context/ruby/base/tex.rb @@ -95,6 +95,7 @@ class TEX ['tex','etex','pdftex','pdfetex','standard'] .each do |e| @@texengines[e] = 'pdftex' end ['aleph','omega'] .each do |e| @@texengines[e] = 'aleph' end ['xetex'] .each do |e| @@texengines[e] = 'xetex' end + ['petex'] .each do |e| @@texengines[e] = 'petex' end ['luatex'] .each do |e| @@texengines[e] = 'luatex' end ['metapost','mpost', 'standard'] .each do |e| @@mpsengines[e] = 'mpost' end @@ -102,6 +103,7 @@ class TEX ['pdfetex','pdftex','pdf','pdftex','standard'] .each do |b| @@backends[b] = 'pdftex' end ['dvipdfmx','dvipdfm','dpx','dpm'] .each do |b| @@backends[b] = 'dvipdfmx' end ['xetex','xtx'] .each do |b| @@backends[b] = 'xetex' end + ['petex'] .each do |b| @@backends[b] = 'dvipdfmx' end ['aleph'] .each do |b| @@backends[b] = 'dvipdfmx' end ['dvips','ps','dvi'] .each do |b| @@backends[b] = 'dvips' end ['dvipsone'] .each do |b| @@backends[b] = 'dvipsone' end @@ -110,7 +112,7 @@ class TEX ['tex','standard'] .each do |b| @@mappaths[b] = 'dvips' end ['pdftex','pdfetex'] .each do |b| @@mappaths[b] = 'pdftex' end - ['aleph','omega','xetex'] .each do |b| @@mappaths[b] = 'dvipdfm' end + ['aleph','omega','xetex','petex'] .each do |b| @@mappaths[b] = 'dvipdfm' end ['dvipdfm', 'dvipdfmx', 'xdvipdfmx'] .each do |b| @@mappaths[b] = 'dvipdfm' end ['xdv','xdv2pdf'] .each do |b| @@mappaths[b] = 'dvips' end @@ -132,9 +134,7 @@ class TEX ['plain','mpost'] .each do |f| @@mpsformats[f] = 'plain' end ['metafun','context','standard'] .each do |f| @@mpsformats[f] = 'metafun' end - # no 'standard' progname ! / beware, when using texexec we always use the context/metafun values - - ['pdftex','pdfetex','aleph','omega', + ['pdftex','pdfetex','aleph','omega','petex', 'xetex','luatex'] .each do |p| @@prognames[p] = 'context' end ['mpost'] .each do |p| @@prognames[p] = 'metafun' end ['latex','pdflatex'] .each do |p| @@prognames[p] = 'latex' end @@ -158,6 +158,7 @@ class TEX @@runoptions['mpost'] = ['--8bit'] @@runoptions['pdfetex'] = ['--8bit'] # obsolete @@runoptions['pdftex'] = ['--8bit'] # pdftex is now pdfetex + # @@runoptions['petex'] = [] @@runoptions['xetex'] = ['--8bit','-output-driver="xdvipdfmx -E -d 4 -V 5"'] @@tcxflag['aleph'] = true @@ -165,6 +166,7 @@ class TEX @@tcxflag['mpost'] = true @@tcxflag['pdfetex'] = true @@tcxflag['pdftex'] = true + @@tcxflag['petex'] = false @@tcxflag['xetex'] = false @@draftoptions['pdftex'] = ['--draftmode'] diff --git a/scripts/context/ruby/base/texutil.rb b/scripts/context/ruby/base/texutil.rb index 4882404d5..063f67f2d 100644 --- a/scripts/context/ruby/base/texutil.rb +++ b/scripts/context/ruby/base/texutil.rb @@ -187,7 +187,14 @@ class TeXUtil # shortcut("\\\"e", 'ediaeresis') # shortcut("\\\'o", 'oacute') + def hextoutf(str) + str.gsub(/^(0x[A-F\d]+)$/) do + [$1.hex()].pack("U") + end + end + def shortcut(from,to) + from = hextoutf(from) replacer(from,to) expander(to) end diff --git a/scripts/context/ruby/graphics/inkscape.rb b/scripts/context/ruby/graphics/inkscape.rb index 4495c3070..8d3b26468 100644 --- a/scripts/context/ruby/graphics/inkscape.rb +++ b/scripts/context/ruby/graphics/inkscape.rb @@ -43,6 +43,10 @@ class InkScape def convert(logfile=System.null) + directpdf = false + + logfile = logfile.gsub(/\/+$/,"") + inpfilename = getvariable('inputfile').dup outfilename = getvariable('outputfile').dup outfilename = inpfilename.dup if outfilename.empty? @@ -62,11 +66,15 @@ class InkScape return false end - report("converting #{inpfilename} to #{tmpfilename}") - # we need to redirect the error info else we get a pop up console - resultpipe = "--without-gui --print=\">#{tmpfilename}\" 2>#{logfile}" + if directpdf then + report("converting #{inpfilename} to #{outfilename}") + resultpipe = "--without-gui --export-pdf=\"#{outfilename}\" 2>#{logfile}" + else + report("converting #{inpfilename} to #{tmpfilename}") + resultpipe = "--without-gui --print=\">#{tmpfilename}\" 2>#{logfile}" + end arguments = [resultpipe,inpfilename].join(' ').gsub(/\s+/,' ') @@ -76,8 +84,11 @@ class InkScape # should work # ok = System.run('inkscape',arguments) # does not work here # but 0.40 only works with this: - ok = system("inkscape #{arguments}") + command = "inkscape #{arguments}" + report(command) + ok = system(command) # and 0.41 fails with everything + # and 0.45 is better rescue report("aborted due to error") return false @@ -85,18 +96,16 @@ class InkScape return false unless ok end - ghostscript = GhostScript.new(@logger) - - ghostscript.setvariable('inputfile',tmpfilename) - ghostscript.setvariable('outputfile',outfilename) - - report("converting #{tmpfilename} to #{outfilename}") - - ghostscript.convert - - begin - File.delete(tmpfilename) - rescue + if not directpdf then + ghostscript = GhostScript.new(@logger) + ghostscript.setvariable('inputfile',tmpfilename) + ghostscript.setvariable('outputfile',outfilename) + report("converting #{tmpfilename} to #{outfilename}") + ghostscript.convert + begin + File.delete(tmpfilename) + rescue + end end end diff --git a/scripts/context/ruby/texexec.rb b/scripts/context/ruby/texexec.rb index d2c722438..a09572c6c 100644 --- a/scripts/context/ruby/texexec.rb +++ b/scripts/context/ruby/texexec.rb @@ -575,14 +575,16 @@ job.setvariable('given.backend',job.getvariable('backend')) if (str = @commandline.option('engine')) && ! str.standard? && ! str.empty? then job.setvariable('texengine',str) + elsif @commandline.oneof('luatex') then + job.setvariable('texengine','luatex') elsif @commandline.oneof('pdfetex','pdftex','pdf') then job.setvariable('texengine','pdftex') elsif @commandline.oneof('xetex','xtx') then job.setvariable('texengine','xetex') elsif @commandline.oneof('aleph') then job.setvariable('texengine','aleph') - elsif @commandline.oneof('luatex') then - job.setvariable('texengine','luatex') + elsif @commandline.oneof('petex') then + job.setvariable('texengine','petex') else job.setvariable('texengine','standard') end @@ -597,6 +599,8 @@ job.setvariable('given.backend',job.getvariable('backend')) job.setvariable('backend','xetex') elsif @commandline.oneof('aleph') then job.setvariable('backend','dvipdfmx') + elsif @commandline.oneof('petex') then + job.setvariable('backend','dvipdfmx') elsif @commandline.oneof('dvips','ps') then job.setvariable('backend','dvips') elsif @commandline.oneof('xdv') then @@ -607,6 +611,7 @@ job.setvariable('given.backend',job.getvariable('backend')) when 'pdftex' then job.setvariable('backend','pdftex') when 'luatex' then job.setvariable('backend','pdftex') when 'xetex' then job.setvariable('backend','xetex') + when 'petex' then job.setvariable('backend','dvipdfmx') when 'aleph' then job.setvariable('backend','dvipdfmx') else job.setvariable('backend','standard') @@ -760,6 +765,8 @@ commandline.registerflag('xdv') commandline.registerflag('aleph') +commandline.registerflag('petex') + commandline.registerflag('all') commandline.registerflag('fast') commandline.registerflag('sort') |