summaryrefslogtreecommitdiff
path: root/scripts
diff options
context:
space:
mode:
Diffstat (limited to 'scripts')
-rw-r--r--scripts/context/ruby/base/tex.rb32
-rw-r--r--scripts/context/ruby/ctxtools.rb2
-rw-r--r--scripts/context/ruby/texexec.rb5
3 files changed, 29 insertions, 10 deletions
diff --git a/scripts/context/ruby/base/tex.rb b/scripts/context/ruby/base/tex.rb
index 61701e501..dc1362e90 100644
--- a/scripts/context/ruby/base/tex.rb
+++ b/scripts/context/ruby/base/tex.rb
@@ -8,8 +8,11 @@
# info : j.hagen@xs4all.nl
# www : www.pragma-ade.com
-# todo: write systemcall for mpost to file so that it can be run
-# faster
+# todo:
+#
+# - write systemcall for mpost to file so that it can be run faster
+# - use -8bit and -progname
+#
# report ?
@@ -83,6 +86,7 @@ class TEX
['tex','pdftex','pdfetex','standard'] .each do |e| @@texengines[e] = 'pdfetex' end
['aleph','omega'] .each do |e| @@texengines[e] = 'aleph' end
['xetex'] .each do |e| @@texengines[e] = 'xetex' end
+ ['luatex'] .each do |e| @@texengines[e] = 'luatex' end
['metapost','mpost', 'standard'] .each do |e| @@mpsengines[e] = 'mpost' end
@@ -118,7 +122,7 @@ class TEX
['plain','mpost'] .each do |f| @@mpsformats[f] = 'plain' end
['metafun','context','standard'] .each do |f| @@mpsformats[f] = 'metafun' end
- ['pdfetex','aleph','omega'] .each do |p| @@prognames[p] = 'context' end
+ ['pdfetex','aleph','omega','xetex','luatex'] .each do |p| @@prognames[p] = 'context' end
['mpost'] .each do |p| @@prognames[p] = 'metafun' end
['plain','default','standard','mptopdf'] .each do |f| @@texmethods[f] = 'plain' end
@@ -138,6 +142,8 @@ class TEX
# @@runoptions['xetex'] = ['--output-driver \\\"-d 4 -V 5\\\"'] # we need the pos pass
@@runoptions['xetex'] = ['--no-pdf'] # from now on we assume (x)dvipdfmx to be used
+ @@runoptions['luatex'] = ['--progname=pdftex']
+
@@booleanvars = [
'batchmode', 'nonstopmode', 'fast', 'fastdisabled', 'silentmode', 'final',
'paranoid', 'notparanoid', 'nobanner', 'once', 'allpatterns',
@@ -338,7 +344,7 @@ class TEX
def prefixed(format,engine)
case engine
- when /etex|eetex|pdfetex|pdfeetex|pdfxtex|xpdfetex|eomega|aleph|xetex/io then
+ when /etex|eetex|pdfetex|pdfeetex|pdfxtex|xpdfetex|eomega|aleph|xetex|luatex/io then
"*#{format}"
else
format
@@ -730,13 +736,23 @@ class TEX
bomdone = true
end
if str =~ /^\%\s*(.*)/o then
- vars = Hash.new
+ # we only accept lines with key=value pairs
+ vars, ok = Hash.new, true
$1.split(/\s+/o).each do |s|
k, v = s.split('=')
- vars[k] = v
+ if k && v then
+ vars[k] = v
+ else
+ ok = false
+ break
+ end
end
- @@preamblekeys.each do |v|
- setvariable(v[1],vars[v[0]]) if vars.key?(v[0])
+ if ok then
+ # we have a valid line
+ @@preamblekeys.each do |v|
+ setvariable(v[1],vars[v[0]]) if vars.key?(v[0]) && vars[v[0]]
+ end
+ break
end
else
break
diff --git a/scripts/context/ruby/ctxtools.rb b/scripts/context/ruby/ctxtools.rb
index ee967ec31..69c6885b4 100644
--- a/scripts/context/ruby/ctxtools.rb
+++ b/scripts/context/ruby/ctxtools.rb
@@ -2373,7 +2373,7 @@ commandline.registeraction('brandfiles' , 'add context copyright notice [
commandline.registeraction('platformize' , 'replace line-endings [--recurse --force] [pattern]')
commandline.registeraction('dependencies' , 'analyze depedencies witin context [--compact] [rootfile]')
commandline.registeraction('updatecontext' , 'download latest version and remake formats')
-commandline.registeraction('disarmutfbom' , 'remove utf bom [==force]')
+commandline.registeraction('disarmutfbom' , 'remove utf bom [--force]')
commandline.registervalue('type','')
diff --git a/scripts/context/ruby/texexec.rb b/scripts/context/ruby/texexec.rb
index 06e74812d..4194874e9 100644
--- a/scripts/context/ruby/texexec.rb
+++ b/scripts/context/ruby/texexec.rb
@@ -490,13 +490,15 @@ class Commands
job.setvariable('texengine','xetex')
elsif @commandline.oneof('aleph') then
job.setvariable('texengine','aleph')
+ elsif @commandline.oneof('luatex') then
+ job.setvariable('texengine','luatex')
else
job.setvariable('texengine','standard')
end
if (str = @commandline.option('backend')) && ! str.standard? && ! str.empty? then
job.setvariable('backend',str)
- elsif @commandline.oneof('pdfetex','pdftex','pdf') then
+ elsif @commandline.oneof('pdfetex','pdftex','pdf','luatex') then
job.setvariable('backend','pdftex')
elsif @commandline.oneof('dvipdfmx','dvipdfm','dpx','dpm') then
job.setvariable('backend','dvipdfmx')
@@ -511,6 +513,7 @@ class Commands
else
case job.getvariable('texengine')
when 'pdfetex' then job.setvariable('backend','pdftex')
+ when 'luatex' then job.setvariable('backend','pdftex')
when 'xetex' then job.setvariable('backend','xetex')
when 'aleph' then job.setvariable('backend','dvipdfmx')
else