summaryrefslogtreecommitdiff
path: root/scripts/context/ruby
diff options
context:
space:
mode:
Diffstat (limited to 'scripts/context/ruby')
-rw-r--r--scripts/context/ruby/base/system.rb2
-rw-r--r--scripts/context/ruby/base/tex.rb10
-rw-r--r--scripts/context/ruby/base/texutil.rb7
-rw-r--r--scripts/context/ruby/graphics/inkscape.rb41
-rw-r--r--scripts/context/ruby/texexec.rb11
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')