summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorHans Hagen <pragma@wxs.nl>2006-03-20 10:19:00 +0100
committerHans Hagen <pragma@wxs.nl>2006-03-20 10:19:00 +0100
commitdfbbcbbdb6e3a3681b7c853ac5e213c1933b385c (patch)
tree01725632d89dba9263028b167f5bb1ef5bb3783f
parentfdd3cea7faff04a5b62069ac88895817288a5199 (diff)
downloadcontext-dfbbcbbdb6e3a3681b7c853ac5e213c1933b385c.tar.gz
stable 2006.03.20 10:19
-rw-r--r--scripts/context/perl/texutil.pl28
-rw-r--r--scripts/context/ruby/base/kpse.rb9
-rw-r--r--scripts/context/ruby/base/kpsedirect.rb30
-rw-r--r--scripts/context/ruby/base/kpsefast.rb436
-rw-r--r--scripts/context/ruby/base/kpseremote.rb104
-rw-r--r--scripts/context/ruby/base/kpserunner.rb87
-rw-r--r--scripts/context/ruby/base/switch.rb24
-rw-r--r--scripts/context/ruby/base/system.rb2
-rw-r--r--scripts/context/ruby/base/tex.rb117
-rw-r--r--scripts/context/ruby/base/texutil.rb5
-rw-r--r--scripts/context/ruby/base/variables.rb87
-rw-r--r--scripts/context/ruby/ctxtools.rb391
-rw-r--r--scripts/context/ruby/newtexexec.rb2
-rw-r--r--scripts/context/ruby/runtools.rb2
-rw-r--r--scripts/context/ruby/texmfstart.rb283
-rw-r--r--scripts/context/ruby/tmftools.rb61
-rw-r--r--tex/context/base/cont-log.tex2
-rw-r--r--tex/context/base/cont-new.tex9
-rw-r--r--tex/context/base/context.tex2
-rw-r--r--tex/context/base/core-fig.tex110
-rw-r--r--tex/context/base/core-fld.tex34
-rw-r--r--tex/context/base/core-mis.tex18
-rw-r--r--tex/context/base/core-nav.tex75
-rw-r--r--tex/context/base/core-sec.tex45
-rw-r--r--tex/context/base/core-spa.tex2
-rw-r--r--tex/context/base/core-sys.tex2
-rw-r--r--tex/context/base/core-ver.tex21
-rw-r--r--tex/context/base/enco-037.tex276
-rw-r--r--tex/context/base/m-cweb.tex4
-rw-r--r--tex/context/base/mult-con.tex4
-rw-r--r--tex/context/base/page-bck.tex2
-rw-r--r--tex/context/base/page-flt.tex8
-rw-r--r--tex/context/base/page-lin.tex40
-rw-r--r--tex/context/base/page-lyr.tex2
-rw-r--r--tex/context/base/page-mul.tex147
-rw-r--r--tex/context/base/page-set.tex3
-rw-r--r--tex/context/base/page-sid.tex18
-rw-r--r--tex/context/base/prop-lay.tex8
-rw-r--r--tex/context/base/regi-utf.tex12
-rw-r--r--tex/context/base/spec-dpx.tex20
-rw-r--r--tex/context/base/spec-tpd.tex2
-rw-r--r--tex/context/base/supp-mis.tex4
-rw-r--r--tex/context/base/supp-mpe.tex3
-rw-r--r--tex/context/base/supp-vis.tex4
-rw-r--r--tex/context/base/unic-037.tex278
-rw-r--r--tex/context/base/verb-ini.tex36
-rw-r--r--tex/context/interface/cont-cz.xml23
-rw-r--r--tex/context/interface/cont-de.xml23
-rw-r--r--tex/context/interface/cont-en.xml17
-rw-r--r--tex/context/interface/cont-fr.xml23
-rw-r--r--tex/context/interface/cont-it.xml23
-rw-r--r--tex/context/interface/cont-nl.xml23
-rw-r--r--tex/context/interface/cont-ro.xml23
-rw-r--r--tex/context/interface/keys-cz.xml3
-rw-r--r--tex/context/interface/keys-de.xml3
-rw-r--r--tex/context/interface/keys-en.xml3
-rw-r--r--tex/context/interface/keys-fr.xml3
-rw-r--r--tex/context/interface/keys-it.xml3
-rw-r--r--tex/context/interface/keys-nl.xml3
-rw-r--r--tex/context/interface/keys-ro.xml3
60 files changed, 2403 insertions, 632 deletions
diff --git a/scripts/context/perl/texutil.pl b/scripts/context/perl/texutil.pl
index 0a0d29753..a20a7f6aa 100644
--- a/scripts/context/perl/texutil.pl
+++ b/scripts/context/perl/texutil.pl
@@ -44,7 +44,7 @@ eval '(exit $?0)' && eval 'exec perl -S $0 ${1+"$@"}' && eval 'exec perl -S $0 $
#D binary version, like scanning illustrations other than \EPS.
#D I would suggest to keep an eye on the version number:
-$Program = "TeXUtil 9.0.0 - ConTeXt / PRAGMA ADE 1992-2004" ;
+$Program = "TeXUtil 9.0.1 - ConTeXt / PRAGMA ADE 1992-2006" ;
#D By the way, this is my first \PERL\ script, which means
#D that it will be improved as soon as I find new and/or more
@@ -54,6 +54,11 @@ $Program = "TeXUtil 9.0.0 - ConTeXt / PRAGMA ADE 1992-2004" ;
#D users in english as well as some other languages. One can
#D set his favourite language by saying something like:
+#D This one has a real old date, 1992. This is because it is
+#D a converted modula program that was used in the very early
+#D days of our \TEX\ history (macros for proper inclusion of
+#D graphics were among the first thatwe wrote).
+
#D \starttypen
#D perl texutil.pl --int=de --fig *.eps *.tif *.pdf *.png *.jpg
#D \stoptypen
@@ -823,7 +828,7 @@ sub InitializeKeys
{ my $filename = $ARGV[0] ;
return unless (open(TEX,"$filename.tex")) ;
for ($i=0;$i<=255;$i++)
- { @Filter[$i] = $i }
+ { $Filter[$i] = $i }
if ($TcXPath eq '')
{ foreach (@paths)
{ my $p = checked_path($_) . 'kpsewhich' ;
@@ -848,7 +853,7 @@ sub InitializeKeys
{ Report ("LoadedFilter", $Translation) ;
while (<ASC>)
{ if (/^(\d+)\s*(\d+)/)
- { @Filter[$2] = $1 } }
+ { $Filter[$2] = $1 } }
close (ASC) }
elsif ($TcXPath ne '')
{ Report ("WrongFilterPath", $TcXPath) }
@@ -861,7 +866,7 @@ sub HandleKey
{ ++$SortN ;
$RestOfLine =~ s/\{(.*)\}/$1/o ;
my ($lan, $enc, $str, $chr, $map, $alf) = split(/\}\s*\{/, $RestOfLine) ;
- if ($str =~ /^(\d+)/) { $str = ''.chr(@Filter[$1]) }
+ if ($str =~ /^(\d+)/) { $str = ''.chr($Filter[$1]) }
$map = chr(ord($MAP[$i])+128) ;
$STR[$SortN] = $str ;
$CHR[$SortN] = $chr ;
@@ -1279,8 +1284,8 @@ sub HandleRegister # the } { makes sure that local {} is ok
#
if ($Key eq "")
{ $Key = SanitizedString($Entry) }
- if ($SortMethod ne '')
- { $ProcessHigh = 0 }
+ # if ($SortMethod ne '')
+ # { $ProcessHigh = 0 }
if ($ProcessHigh)
{ $Key = HighConverted($Key) }
$KeyTag = substr $Key, 0, 1 ;
@@ -2075,7 +2080,7 @@ sub SaveFigurePresets
{ $Figures[$NOfFigures] .= ",t=\{$FTit\}" }
if ($FCre)
{ $Figures[$NOfFigures] .= ",c=\{$FCre\}" }
- $Figures[$NOfFigures] .= ",s=$FSiz]\n" } }
+ $Figures[$NOfFigures] .= ",s=$FSiz]" } }
#D The \EPS\ to \PDF\ conversion pipe to \GHOSTSCRIPT\ is
#D inspired by a script posted by Sebastian Ratz at the
@@ -2580,8 +2585,10 @@ sub FlushFigures
open ( TUF, ">$OutputFile" ) ;
print TUF "%\n" . "% $Program / Figures\n" . "%\n" ;
print TUF "\\thisisfigureversion\{1996.06.01\}\n" . "%\n" ;
+ # a joins is nicer
for ($n=1 ; $n<=$NOfFigures ; ++$n)
- { print TUF $Figures[$n] }
+ { print TUF "$Figures[$n]%\n" }
+ print TUF "\\endinput";
close (TUF) ;
if ($NOfFigures)
{ Report("OutputFile", $OutputFile ) }
@@ -2772,7 +2779,9 @@ if ($PurgeAllFiles)
{ push @forsuresuffixes, @texnonesuffixes ; @texnonesuffixes = [] }
sub PurgeFiles # no my in foreach
- { my $pattern = $ARGV[0] ; my $strippedname, $basename ;
+ { my $pattern = $ARGV[0] ;
+ my $strippedname ;
+ my $basename ;
my @files = () ;
if ($pattern eq '')
{ $pattern = "*.*" ;
@@ -2895,7 +2904,6 @@ elsif ($PurgeFiles ) { PurgeFiles }
elsif ($PurgeAllFiles ) { PurgeFiles }
elsif ($AnalyzeFile ) { AnalyzeFile }
elsif ($FilterPages ) { FilterPages }
-elsif ($SciteApi ) { GenerateSciteApi }
elsif ($ProcessHelp ) { ShowHelpInfo } # redundant
else { ShowHelpInfo }
diff --git a/scripts/context/ruby/base/kpse.rb b/scripts/context/ruby/base/kpse.rb
index adeaacbe1..d05600b8f 100644
--- a/scripts/context/ruby/base/kpse.rb
+++ b/scripts/context/ruby/base/kpse.rb
@@ -43,6 +43,7 @@ module Kpse
else
@@usekpserunner = true
require 'base/kpsefast'
+ require 'base/kpserunner'
end
if @@crossover then
@@ -120,12 +121,10 @@ module Kpse
begin
if @@problems then
results = ''
+ elsif @@usekpserunner then
+ results = KpseRunner.kpsewhich(arguments).chomp
else
- if @@usekpserunner then
- results = KpseRunner.kpsewhich(arguments).chomp
- else
- results = `kpsewhich #{arguments}`.chomp
- end
+ results = `kpsewhich #{arguments}`.chomp
end
rescue
puts "unable to run kpsewhich" if @@tracing
diff --git a/scripts/context/ruby/base/kpsedirect.rb b/scripts/context/ruby/base/kpsedirect.rb
new file mode 100644
index 000000000..d38e892b1
--- /dev/null
+++ b/scripts/context/ruby/base/kpsedirect.rb
@@ -0,0 +1,30 @@
+class KpseDirect
+
+ attr_accessor :progname, :format, :engine
+
+ def initialize
+ @progname = ''
+ @format = ''
+ @engine = ''
+ end
+
+ def expand_path(str)
+ `kpsewhich -expand-path=#{str}`.chomp
+ end
+
+ def expand_var(str)
+ `kpsewhich -expand-var=#{str}`.chomp
+ end
+
+ def find_file(str)
+ `kpsewhich #{_progname_} #{_format_} #{str}`.chomp
+ end
+
+ def _progname_
+ if @progname.empty? then '' else "-progname=#{@progname}" end
+ end
+ def _format_
+ if @format.empty? then '' else "-format=\"#{@format}\"" end
+ end
+
+end
diff --git a/scripts/context/ruby/base/kpsefast.rb b/scripts/context/ruby/base/kpsefast.rb
index 52ab28d0f..231c6221c 100644
--- a/scripts/context/ruby/base/kpsefast.rb
+++ b/scripts/context/ruby/base/kpsefast.rb
@@ -37,7 +37,49 @@ class File
end
-class KPSEFAST
+module KpseUtil
+
+ @@texmfcnf = 'texmf.cnf'
+
+ def KpseUtil::identify
+ ownpath = File.expand_path($0)
+ if ownpath.gsub!(/texmf.*?$/o, '') then
+ ENV['SELFAUTOPARENT'] = ownpath
+ else
+ ENV['SELFAUTOPARENT'] = '.'
+ end
+ filenames = Array.new
+ if ENV['TEXMFCNF'] and not ENV['TEXMFCNF'].empty? then
+ ENV['TEXMFCNF'].split(File::PATH_SEPARATOR).each do |path|
+ filenames << File.join(path,@@texmfcnf)
+ end
+ elsif ENV['SELFAUTOPARENT'] == '.' then
+ filenames << File.join('.',@@texmfcnf)
+ else
+ ['texmf-local','texmf'].each do |tree|
+ filenames << File.join(ENV['SELFAUTOPARENT'],tree,'web2c',@@texmfcnf)
+ end
+ end
+ loop do
+ busy = false
+ filenames.collect! do |f|
+ f.gsub(/\$([a-zA-Z0-9\_\-]*)/o) do
+ busy = true
+ ENV[$1] || ("$#{$1}")
+ end
+ end
+ break unless busy
+ end
+ return filenames
+ end
+
+ def KpseUtil::environment
+ Hash.new.merge(ENV)
+ end
+
+end
+
+class KpseFast
# formats are an incredible inconsistent mess
@@ -45,6 +87,8 @@ class KPSEFAST
@@formats = Hash.new
@@suffixmap = Hash.new
+ @@texmfcnf = 'texmf.cnf'
+
@@suffixes['gf'] = ['.<resolution>gf'] # todo
@@suffixes['pk'] = ['.<resolution>pk'] # todo
@@suffixes['tfm'] = ['.tfm']
@@ -121,7 +165,7 @@ class KPSEFAST
@@formats['bst'] = ''
@@formats['cnf'] = ''
@@formats['ls-R'] = ''
- @@formats['fmt'] = ''
+ @@formats['fmt'] = 'TEXFORMATS'
@@formats['map'] = 'TEXFONTMAPS'
@@formats['mem'] = 'MPMEMS'
@@formats['mf'] = 'MFINPUTS'
@@ -170,27 +214,41 @@ class KPSEFAST
@@cacheversion = '1'
def initialize
- @rootpath = ''
- @treepath = ''
- @progname = 'kpsewhich'
- @engine = 'pdfetex'
- @variables = Hash.new
- @expansions = Hash.new
- @files = Hash.new
- @found = Hash.new
- @kpsevars = Hash.new
- @lsrfiles = Array.new
- @cnffiles = Array.new
- @verbose = true
- @remember = true
- @scandisk = true
- @diskcache = true
- @renewcache = false
- @isolate = false
-
- @diskcache = false
- @cachepath = nil
- @cachefile = 'tmftools.log'
+ @rootpath = ''
+ @treepath = ''
+ @progname = 'kpsewhich'
+ @engine = 'pdfetex'
+ @variables = Hash.new
+ @expansions = Hash.new
+ @files = Hash.new
+ @found = Hash.new
+ @kpsevars = Hash.new
+ @lsrfiles = Array.new
+ @cnffiles = Array.new
+ @verbose = true
+ @remember = true
+ @scandisk = true
+ @diskcache = true
+ @renewcache = false
+ @isolate = false
+
+ @diskcache = false
+ @cachepath = nil
+ @cachefile = 'tmftools.log'
+
+ @environment = ENV
+ end
+
+ def set(key,value)
+ case key
+ when 'progname' then @progname = value
+ when 'engine' then @engine = value
+ when 'format' then @format = value
+ end
+ end
+
+ def push_environment(env)
+ @environment = env
end
# {$SELFAUTOLOC,$SELFAUTODIR,$SELFAUTOPARENT}{,{/share,}/texmf{-local,}/web2c}
@@ -201,36 +259,41 @@ class KPSEFAST
#
# since we live in scriptpath we need a slightly different method
- def load_cnf
- ownpath = File.expand_path($0)
- if ownpath.gsub!(/texmf.*?$/o, '') then
- ENV['SELFAUTOPARENT'] = ownpath
- else
- ENV['SELFAUTOPARENT'] = '.'
- end
- unless @treepath.empty? then
+ def load_cnf(filenames=nil)
+ unless filenames then
+ ownpath = File.expand_path($0)
+ if ownpath.gsub!(/texmf.*?$/o, '') then
+ @environment['SELFAUTOPARENT'] = ownpath
+ else
+ @environment['SELFAUTOPARENT'] = '.'
+ end
+ unless @treepath.empty? then
+ unless @rootpath.empty? then
+ @treepath = @treepath.split(',').collect do |p| File.join(@rootpath,p) end.join(',')
+ end
+ @environment['TEXMF'] = @treepath
+ @environment['TEXMFCNF'] = File.join(@treepath.split(',').first,'texmf/web2c')
+ end
unless @rootpath.empty? then
- @treepath = @treepath.split(',').collect do |p| File.join(@rootpath,p) end.join(',')
+ @environment['TEXMFCNF'] = File.join(@rootpath,'texmf/web2c')
+ @environment['SELFAUTOPARENT'] = @rootpath
+ @isolate = true
end
- ENV['TEXMF'] = @treepath
- ENV['TEXMFCNF'] = File.join(@treepath.split(',').first,'texmf/web2c')
- end
- unless @rootpath.empty? then
- ENV['TEXMFCNF'] = File.join(@rootpath,'texmf/web2c')
- ENV['SELFAUTOPARENT'] = @rootpath
- @isolate = true
- end
- filenames = Array.new
- if ENV['TEXMFCNF'] and not ENV['TEXMFCNF'].empty? then
- filenames << File.join(ENV['TEXMFCNF'],'texmf.cnf')
- elsif ENV['SELFAUTOPARENT'] == '.' then
- filenames << File.join('.','texmf.cnf')
- else
- ['texmf-local','texmf'].each do |tree|
- filenames << File.join(ENV['SELFAUTOPARENT'],tree,'web2c','texmf.cnf')
+ filenames = Array.new
+ if @environment['TEXMFCNF'] and not @environment['TEXMFCNF'].empty? then
+ @environment['TEXMFCNF'].split(File::PATH_SEPARATOR).each do |path|
+ filenames << File.join(path,@@texmfcnf)
+ end
+ elsif @environment['SELFAUTOPARENT'] == '.' then
+ filenames << File.join('.',@@texmfcnf)
+ else
+ ['texmf-local','texmf'].each do |tree|
+ filenames << File.join(@environment['SELFAUTOPARENT'],tree,'web2c',@@texmfcnf)
+ end
end
end
# <root>/texmf/web2c/texmf.cnf
+ filenames = _expanded_path_(filenames)
@rootpath = filenames.first
3.times do
@rootpath = File.dirname(@rootpath)
@@ -280,9 +343,9 @@ class KPSEFAST
@files = Hash.new
if @diskcache then
['HOME','TEMP','TMP','TMPDIR'].each do |key|
- if ENV[key] then
- if FileTest.directory?(ENV[key]) then
- @cachepath = ENV[key]
+ if @environment[key] then
+ if FileTest.directory?(@environment[key]) then
+ @cachepath = @environment[key]
@cachefile = [@rootpath.gsub(/[^A-Z0-9]/io, '-').gsub(/\-+/,'-'),File.basename(@cachefile)].join('-')
break
end
@@ -342,14 +405,14 @@ class KPSEFAST
def expand_variables
@expansions = Hash.new
if @isolate then
- @variables['TEXMFCNF'] = ENV['TEXMFCNF'].dup
- @variables['SELFAUTOPARENT'] = ENV['SELFAUTOPARENT'].dup
+ @variables['TEXMFCNF'] = @environment['TEXMFCNF'].dup
+ @variables['SELFAUTOPARENT'] = @environment['SELFAUTOPARENT'].dup
else
- ENV.keys.each do |e|
+ @environment.keys.each do |e|
if e =~ /^([a-zA-Z]+)\_(.*)\s*$/o then
- @expansions["#{$1}.#{$2}"] = ENV[e].dup
+ @expansions["#{$1}.#{$2}"] = (@environment[e] ||'').dup
else
- @expansions[e] = ENV[e].dup
+ @expansions[e] = (@environment[e] ||'').dup
end
end
end
@@ -465,7 +528,8 @@ class KPSEFAST
end
end
pathlist = pathlist.uniq.collect do |path|
- p = path.gsub(/^\/+/o) do '' end
+ p = path
+ # p.gsub(/^\/+/o) do '' end
# p.gsub!(/(.)\/\/(.)/o) do "#{$1}/#{$2}" end
# p.gsub!(/\/\/+$/o) do '//' end
p.gsub!(/\/\/+/o) do '//' end
@@ -485,8 +549,8 @@ class KPSEFAST
end
def var_of_format_or_suffix(str)
- if @@formats.key?(@format) then
- @@formats[@format]
+ if @@formats.key?(str) then
+ @@formats[str]
elsif @@suffixmap.key?(File.extname(str)) then # extname includes .
@@formats[@@suffixmap[File.extname(str)]] # extname includes .
else
@@ -496,7 +560,7 @@ class KPSEFAST
end
-class KPSEFAST
+class KpseFast
# test things
@@ -543,7 +607,7 @@ class KPSEFAST
end
-class KPSEFAST
+class KpseFast
# kpse stuff
@@ -560,7 +624,8 @@ class KPSEFAST
end
def show_path(str) # output search path for file type NAME
- expanded_path(var_of_format(str)).join(File::PATH_SEPARATOR)
+ # expanded_path(var_of_format(str)).join(File::PATH_SEPARATOR)
+ expanded_path(str).join(File::PATH_SEPARATOR)
end
def var_value(str) # output the value of variable $STRING.
@@ -569,97 +634,117 @@ class KPSEFAST
end
-class KPSEFAST
+class KpseFast
+
+ def _is_cnf_?(filename)
+ filename == File.basename((@cnffiles.first rescue @@texmfcnf))
+ end
def find_file(filename)
- find_files(filename,true)
+ if _is_cnf_?(filename) then
+ @cnffiles.first rescue ''
+ else
+ [find_files(filename,true)].flatten.first || ''
+ end
end
def find_files(filename,first=false)
- if @remember then
- stamp = "#{filename}--#{@format}--#{@engine}--#{@progname}"
- return @found[stamp] if @found.key?(stamp)
- end
- pathlist = expanded_path(filename)
- result = []
- filelist = if @files.key?(filename) then @files[filename].uniq else nil end
- done = false
- pathlist.each do |path|
- doscan = if path =~ /^\!\!/o then false else true end
- recurse = if path =~ /\/\/$/o then true else false end
- pathname = path.dup
- pathname.gsub!(/^\!+/o, '')
+ if _is_cnf_?(filename) then
+ result = @cnffiles.dup
+ else
+ if @remember then
+ # stamp = "#{filename}--#{@format}--#{@engine}--#{@progname}"
+ stamp = "#{filename}--#{@engine}--#{@progname}"
+ return @found[stamp] if @found.key?(stamp)
+ end
+ pathlist = expanded_path(filename)
+ result = []
+ filelist = if @files.key?(filename) then @files[filename].uniq else nil end
done = false
- if not done and filelist then
- # checking for exact match
- if filelist.include?(pathname) then
- result << pathname
+ if pathlist.size == 0 then
+ if FileTest.file?(filename) then
done = true
+ result << '.'
end
- if not done and recurse then
- # checking for fuzzy //
- pathname.gsub!(/\/+$/o, '/.*')
- # pathname.gsub!(/\/\//o,'/[\/]*/')
- pathname.gsub!(/\/\//o,'/.*?/')
- re = /^#{pathname}/
- filelist.each do |f|
- if re =~ f then
- result << f # duplicates will be filtered later
+ else
+ pathlist.each do |path|
+ doscan = if path =~ /^\!\!/o then false else true end
+ recurse = if path =~ /\/\/$/o then true else false end
+ pathname = path.dup
+ pathname.gsub!(/^\!+/o, '')
+ done = false
+ if not done and filelist then
+ # checking for exact match
+ if filelist.include?(pathname) then
+ result << pathname
+ done = true
+ end
+ if not done and recurse then
+ # checking for fuzzy //
+ pathname.gsub!(/\/+$/o, '/.*')
+ # pathname.gsub!(/\/\//o,'/[\/]*/')
+ pathname.gsub!(/\/\//o,'/.*?/')
+ re = /^#{pathname}/
+ filelist.each do |f|
+ if re =~ f then
+ result << f # duplicates will be filtered later
+ done = true
+ end
+ break if done
+ end
+ end
+ end
+ if not done and doscan then
+ # checking for path itself
+ pname = pathname.sub(/\.\*$/,'')
+ if not pname =~ /\*/o and FileTest.file?(File.join(pname,filename)) then
+ result << pname
done = true
end
- break if done
end
+ break if done and first
end
end
- if not done and doscan then
- # checking for path itself
- pname = pathname.sub(/\.\*$/,'')
- if not pname =~ /\*/o and FileTest.file?(File.join(pname,filename)) then
- result << pname
- done = true
- end
- end
- break if done and first
- end
- if not done and @scandisk then
- pathlist.each do |path|
- pathname = path.dup
- unless pathname.gsub!(/^\!+/o, '') then # !! prevents scan
- recurse = pathname.gsub!(/\/+$/o, '')
- complex = pathname.gsub!(/\/\//o,'/*/')
- if recurse then
- if complex then
- if ok = File.glob_file("#{pathname}/**/#{filename}") then
+ if not done and @scandisk then
+ pathlist.each do |path|
+ pathname = path.dup
+ unless pathname.gsub!(/^\!+/o, '') then # !! prevents scan
+ recurse = pathname.gsub!(/\/+$/o, '')
+ complex = pathname.gsub!(/\/\//o,'/*/')
+ if recurse then
+ if complex then
+ if ok = File.glob_file("#{pathname}/**/#{filename}") then
+ result << File.dirname(ok)
+ done = true
+ end
+ elsif ok = File.locate_file(pathname,filename) then
result << File.dirname(ok)
done = true
end
- elsif ok = File.locate_file(pathname,filename) then
- result << File.dirname(ok)
- done = true
- end
- elsif complex then
- if ok = File.glob_file("#{pathname}/#{filename}") then
- result << File.dirname(ok)
+ elsif complex then
+ if ok = File.glob_file("#{pathname}/#{filename}") then
+ result << File.dirname(ok)
+ done = true
+ end
+ elsif FileTest.file?(File.join(pathname,filename)) then
+ result << pathname
done = true
end
- elsif FileTest.file?(File.join(pathname,filename)) then
- result << pathname
- done = true
+ break if done and first
end
- break if done and first
end
end
+ result = result.uniq.collect do |pathname|
+ File.join(pathname,filename)
+ end
+ @found[stamp] = result if @remember
end
- result = result.uniq.collect do |pathname|
- File.join(pathname,filename)
- end
- @found[stamp] = result if @remember
return result # redundant
end
end
-class KPSEFAST
+class KpseFast
class FileData
attr_accessor :tag, :name, :size, :date
@@ -673,12 +758,9 @@ class KPSEFAST
end
def report
case @tag
- when 1
- "deleted | #{@size.to_s.rjust(8)} | #{@date.strftime('%m/%d/%Y %I:%M')} | #{@name}"
- when 2
- "present | #{@size.to_s.rjust(8)} | #{@date.strftime('%m/%d/%Y %I:%M')} | #{@name}"
- when 3
- "obsolete | #{' '*8} | #{' '*16} | #{@name}"
+ when 1 then "deleted | #{@size.to_s.rjust(8)} | #{@date.strftime('%m/%d/%Y %I:%M')} | #{@name}"
+ when 2 then "present | #{@size.to_s.rjust(8)} | #{@date.strftime('%m/%d/%Y %I:%M')} | #{@name}"
+ when 3 then "obsolete | #{' '*8} | #{' '*16} | #{@name}"
end
end
end
@@ -769,88 +851,16 @@ class KPSEFAST
end
-module KpseRunner
-
- @@kpse = nil
-
- def KpseRunner.kpsewhich(arg='')
- options, arguments = split_args(arg)
- unless @@kpse then
- @@kpse = KPSEFAST.new
- @@kpse.load_cnf
- @@kpse.progname = options['progname'] || ''
- @@kpse.engine = options['engine'] || ''
- @@kpse.format = options['format'] || ''
- @@kpse.expand_variables
- @@kpse.load_lsr
- else
- @@kpse.progname = options['progname'] || ''
- @@kpse.engine = options['engine'] || ''
- @@kpse.format = options['format'] || ''
- @@kpse.expand_variables
- end
- if option = options['expand-braces'] and not option.empty? then
- @@kpse.expand_braces(option)
- elsif option = options['expand-path'] and not option.empty? then
- @@kpse.expand_path(option)
- elsif option = options['expand-var'] and not option.empty? then
- @@kpse.expand_var(option)
- elsif option = options['show-path'] and not option.empty? then
- @@kpse.show_path(option)
- elsif option = options['var-value'] and not option.empty? then
- @@kpse.expand_var(option)
- elsif arguments.size > 0 then
- files = Array.new
- arguments.each do |option|
- if file = @@kpse.find_file(option) and not file.empty? then
- files << file
- end
- end
- files.join("\n")
- else
- ''
- end
- end
-
- def KpseRunner.kpsereset
- @@kpse = nil
- end
-
- private
-
- def KpseRunner.split_args(arg)
- vars, args = Hash.new, Array.new
- arg.gsub!(/([\"\'])(.*?)\1/o) do
- $2.gsub(' ','<space/>')
- end
- arg = arg.split(/\s+/o)
- arg.collect! do |a|
- a.gsub('<space/>',' ')
- end
- arg.each do |a|
- if a =~ /^(.*?)\=(.*?)$/o then
- k, v = $1, $2
- vars[k.sub(/^\-+/,'')] = v
- else
- args << a
- end
- end
- # puts vars.inspect
- # puts args.inspect
- return vars, args
- end
-
-end
+# if false then
-if false then
+ # k = KpseFast.new # (root)
+ # k.set_test_patterns
+ # k.load_cnf
+ # k.expand_variables
+ # k.load_lsr
- k = KPSEFAST.new # (root)
- k.set_test_patterns
- k.load_cnf
- k.expand_variables
- k.load_lsr
+ # k.show_test_patterns
- k.show_test_patterns
# puts k.list_variables
# puts k.list_expansions
# k.list_lsr
@@ -876,6 +886,6 @@ if false then
# puts "expand value $TEXINPUTS.context"
# puts k.var_value("$TEXINPUTS.context")
- exit
+ # exit
-end
+# end
diff --git a/scripts/context/ruby/base/kpseremote.rb b/scripts/context/ruby/base/kpseremote.rb
new file mode 100644
index 000000000..f5a72b712
--- /dev/null
+++ b/scripts/context/ruby/base/kpseremote.rb
@@ -0,0 +1,104 @@
+require 'base/kpsefast'
+
+class KpseRemote
+
+ case ENV['KPSEMETHOD']
+ when /soap/o then require 'base/kpse/soap'
+ when /drb/o then require 'base/kpse/drb'
+ else require 'base/kpse/drb'
+ end
+
+ @@port = ENV['KPSEPORT'] || 7000
+
+ def KpseRemote::available?
+ ENV['KPSEMETHOD'] && ENV['KPSEPORT']
+ end
+
+ def KpseRemote::start_server(port=nil)
+ kpse = KpseServer.new(port || @@port)
+ kpse.start
+ end
+
+ def KpseRemote::start_client(port=nil) # keeps object in server
+ kpseclient = KpseClient.new(port || @@port)
+ kpseclient.start
+ kpse = kpseclient.object
+ tree = kpse.choose(KpseUtil::identify, KpseUtil::environment)
+ [kpse, tree]
+ end
+
+ def KpseRemote::fetch(port=nil) # no need for defining methods but slower, send whole object
+ kpseclient = KpseClient.new(port || @@port)
+ kpseclient.start
+ kpseclient.object.fetch(KpseUtil::identify, KpseUtil::environment) rescue nil
+ end
+
+ def initialize(port=nil)
+ begin
+ @kpse, @tree = KpseRemote::start_client(port)
+ rescue
+ @kpse, @tree = nil, nil
+ end
+ end
+
+ def progname=(value)
+ @kpse.set(@tree,'progname',value)
+ end
+ def format=(value)
+ @kpse.set(@tree,'format',value)
+ end
+ def engine=(value)
+ @kpse.set(@tree,'engine',value)
+ end
+
+ def progname
+ @kpse.get(@tree,'progname')
+ end
+ def format
+ @kpse.get(@tree,'format')
+ end
+ def engine
+ @kpse.get(@tree,'engine')
+ end
+
+ def load
+ @kpse.load(KpseUtil::identify, KpseUtil::environment)
+ end
+ def okay?
+ @kpse && @tree
+ end
+ def set(key,value)
+ @kpse.set(@tree,key,value)
+ end
+ def load_cnf
+ @kpse.load_cnf(@tree)
+ end
+ def load_lsr
+ @kpse.load_lsr(@tree)
+ end
+ def expand_variables
+ @kpse.expand_variables(@tree)
+ end
+ def expand_braces(str)
+ @kpse.expand_braces(@tree,str)
+ end
+ def expand_path(str)
+ @kpse.expand_path(@tree,str)
+ end
+ def expand_var(str)
+ @kpse.expand_var(@tree,str)
+ end
+ def show_path(str)
+ @kpse.show_path(@tree,str)
+ end
+ def var_value(str)
+ @kpse.var_value(@tree,str)
+ end
+ def find_file(filename)
+ @kpse.find_file(@tree,filename)
+ end
+ def find_files(filename,first=false)
+ @kpse.find_files(@tree,filename,first)
+ end
+
+end
diff --git a/scripts/context/ruby/base/kpserunner.rb b/scripts/context/ruby/base/kpserunner.rb
new file mode 100644
index 000000000..cfc2ad4fb
--- /dev/null
+++ b/scripts/context/ruby/base/kpserunner.rb
@@ -0,0 +1,87 @@
+require 'base/kpsefast'
+
+module KpseRunner
+
+ @@kpse = nil
+
+ def KpseRunner.kpsewhich(arg='')
+ options, arguments = split_args(arg)
+ unless @@kpse then
+ if ENV['KPSEMETHOD'] && ENV['KPSEPORT'] then
+ require 'base/kpseremote'
+ @@kpse = KpseRemote.new
+ else
+ @@kpse = nil
+ end
+ if @@kpse && @@kpse.okay? then
+ @@kpse.progname = options['progname'] || ''
+ @@kpse.engine = options['engine'] || ''
+ @@kpse.format = options['format'] || ''
+ else
+ require 'base/kpsefast'
+ @@kpse = KpseFast.new
+ @@kpse.load_cnf
+ @@kpse.progname = options['progname'] || ''
+ @@kpse.engine = options['engine'] || ''
+ @@kpse.format = options['format'] || ''
+ @@kpse.expand_variables
+ @@kpse.load_lsr
+ end
+ else
+ @@kpse.progname = options['progname'] || ''
+ @@kpse.engine = options['engine'] || ''
+ @@kpse.format = options['format'] || ''
+ @@kpse.expand_variables
+ end
+ if option = options['expand-braces'] and not option.empty? then
+ @@kpse.expand_braces(option)
+ elsif option = options['expand-path'] and not option.empty? then
+ @@kpse.expand_path(option)
+ elsif option = options['expand-var'] and not option.empty? then
+ @@kpse.expand_var(option)
+ elsif option = options['show-path'] and not option.empty? then
+ @@kpse.show_path(option)
+ elsif option = options['var-value'] and not option.empty? then
+ @@kpse.expand_var(option)
+ elsif arguments.size > 0 then
+ files = Array.new
+ arguments.each do |option|
+ if file = @@kpse.find_file(option) and not file.empty? then
+ files << file
+ end
+ end
+ files.join("\n")
+ else
+ ''
+ end
+ end
+
+ def KpseRunner.kpsereset
+ @@kpse = nil
+ end
+
+ private
+
+ def KpseRunner.split_args(arg)
+ vars, args = Hash.new, Array.new
+ arg.gsub!(/([\"\'])(.*?)\1/o) do
+ $2.gsub(' ','<space/>')
+ end
+ arg = arg.split(/\s+/o)
+ arg.collect! do |a|
+ a.gsub('<space/>',' ')
+ end
+ arg.each do |a|
+ if a =~ /^(.*?)\=(.*?)$/o then
+ k, v = $1, $2
+ vars[k.sub(/^\-+/,'')] = v
+ else
+ args << a
+ end
+ end
+ # puts vars.inspect
+ # puts args.inspect
+ return vars, args
+ end
+
+end
diff --git a/scripts/context/ruby/base/switch.rb b/scripts/context/ruby/base/switch.rb
index 64d518bd4..160b50aba 100644
--- a/scripts/context/ruby/base/switch.rb
+++ b/scripts/context/ruby/base/switch.rb
@@ -493,15 +493,21 @@ class CommandLine
unless foundkey then
@registered.each do |option, shortcut, kind|
n = 0
- if option =~ /^#{key}/i then
- case n
- when 0
- foundkey, foundkind = option, kind
- n = 1
- when 1
- # ambiguous matches, like --fix => --fixme --fixyou
- foundkey, foundkind = nil, nil
- break
+ begin
+ re = /^#{key}/i
+ rescue
+ key = key.inspect.sub(/^\"(.*)\"$/) do $1 end
+ re = /^#{key}/i
+ ensure
+ if option =~ re then
+ case n
+ when 0
+ foundkey, foundkind, n = option, kind, 1
+ when 1
+ # ambiguous matches, like --fix => --fixme --fixyou
+ foundkey, foundkind = nil, nil
+ break
+ end
end
end
end
diff --git a/scripts/context/ruby/base/system.rb b/scripts/context/ruby/base/system.rb
index ed8c2756e..50173a72d 100644
--- a/scripts/context/ruby/base/system.rb
+++ b/scripts/context/ruby/base/system.rb
@@ -74,7 +74,7 @@ module System
end
program = program + ' ' + arguments if ! arguments.empty?
program.gsub!(/\s+/io, ' ')
- program.gsub!(/(\.\/)+/io, '')
+ #program.gsub!(/(\/\.\/)+/io, '/')
program.gsub!(/\\/io, '/')
return program
end
diff --git a/scripts/context/ruby/base/tex.rb b/scripts/context/ruby/base/tex.rb
index 481d0eb12..1aee93fb1 100644
--- a/scripts/context/ruby/base/tex.rb
+++ b/scripts/context/ruby/base/tex.rb
@@ -129,7 +129,7 @@ class TEX
'forcetexutil', 'texutil',
'globalfile', 'autopath',
'purge', 'purgeall', 'keep', 'autopdf', 'xpdf', 'simplerun', 'verbose',
- 'nooptionfile'
+ 'nooptionfile', 'nobackend'
]
@@stringvars = [
'modefile', 'result', 'suffix', 'response', 'path',
@@ -223,6 +223,7 @@ class TEX
if ! name || name.empty? then
name = [booleanvars,stringvars,standardvars,knownvars]
end
+ str = '' # allocate
[name].flatten.each do |n|
if str = getvariable(n) then
unless (str.class == String) && str.empty? then
@@ -855,7 +856,7 @@ class TEX
end
end
- def makeoptionfile(rawname, jobname, jobsuffix, finalrun, fastdisabled, kindofrun)
+ def makeoptionfile(rawname, jobname, jobsuffix, finalrun, fastdisabled, kindofrun, currentrun=1)
begin
# jobsuffix = orisuffix
if topname = File.suffixed(rawname,'top') and opt = File.open(topname,'w') then
@@ -863,7 +864,7 @@ class TEX
# local handies
opt << "\% #{topname}\n"
opt << "\\unprotect\n"
- opt << "\\setupsystem[\\c!n=#{kindofrun}]\n"
+ opt << "\\setupsystem[\\c!n=#{kindofrun},\\c!m=#{currentrun}]\n"
opt << "\\def\\MPOSTformatswitch\{#{prognameflag('metafun')} #{formatflag('mpost')}=\}\n"
if getvariable('batchmode') then
opt << "\\batchmode\n"
@@ -973,7 +974,7 @@ class TEX
else
pagelist = Array.new
str.split(/\,/).each do |page|
- pagerange = page.split(/(\:|\.\.)/o )
+ pagerange = page.split(/\D+/o)
if pagerange.size > 1 then
pagerange.first.to_i.upto(pagerange.last.to_i) do |p|
pagelist << p.to_s
@@ -1050,12 +1051,13 @@ class TEX
end
end
- def runmp(filename)
+ def runmp(filename,mpx=false)
mpsengine = validmpsengine(getvariable('mpsengine'))
mpsformat = validmpsformat(getarrayvariable('mpsformats').first)
progname = validprogname(getvariable('progname'))
if mpsengine && mpsformat && progname then
command = [quoted(mpsengine),prognameflag(progname),formatflag(mpsengine,mpsformat),runoptions(mpsengine),filename,mpsprocextras(mpsformat)].join(' ')
+ ENV["MPXCOMMAND"] = "0" unless mpx
report(command) if getvariable('verbose')
system(command)
else
@@ -1150,30 +1152,32 @@ class TEX
end
def runbackend(rawname)
- case validbackend(getvariable('backend'))
- when 'dvipdfmx' then
- fixbackendvars('dvipdfm')
- system("dvipdfmx -d 4 #{File.unsuffixed(rawname)}")
- when 'xetex' then
- fixbackendvars('xetex')
- system("xdv2pdf #{File.suffixed(rawname,'xdv')}")
- when 'dvips' then
- fixbackendvars('dvips')
- mapfiles = ''
- begin
- if tuifile = File.suffixed(rawname,'tui') and FileTest.file?(tuifile) then
- IO.read(tuifile).scan(/^c \\usedmapfile\{.\}\{(.*?)\}\s*$/o) do
- mapfiles += "-u +#{$1} " ;
+ unless getvariable('nobackend') then
+ case validbackend(getvariable('backend'))
+ when 'dvipdfmx' then
+ fixbackendvars('dvipdfm')
+ system("dvipdfmx -d 4 #{File.unsuffixed(rawname)}")
+ when 'xetex' then
+ fixbackendvars('xetex')
+ system("xdv2pdf #{File.suffixed(rawname,'xdv')}")
+ when 'dvips' then
+ fixbackendvars('dvips')
+ mapfiles = ''
+ begin
+ if tuifile = File.suffixed(rawname,'tui') and FileTest.file?(tuifile) then
+ IO.read(tuifile).scan(/^c \\usedmapfile\{.\}\{(.*?)\}\s*$/o) do
+ mapfiles += "-u +#{$1} " ;
+ end
end
+ rescue
+ mapfiles = ''
end
- rescue
- mapfiles = ''
- end
- system("dvips #{mapfiles} #{File.unsuffixed(rawname)}")
- when 'pdftex' then
- # no need for postprocessing
- else
- report("no postprocessing needed")
+ system("dvips #{mapfiles} #{File.unsuffixed(rawname)}")
+ when 'pdftex' then
+ # no need for postprocessing
+ else
+ report("no postprocessing needed")
+ end
end
end
@@ -1287,7 +1291,7 @@ class TEX
when 'context' then
if getvariable('simplerun') || runonce then
- makeoptionfile(rawname,jobname,orisuffix,true,true,3) unless getvariable('nooptionfile')
+ makeoptionfile(rawname,jobname,orisuffix,true,true,3,1) unless getvariable('nooptionfile')
ok = runtex(rawname)
if ok then
ok = runtexutil(rawname) if getvariable('texutil') || getvariable('forcetexutil')
@@ -1314,10 +1318,14 @@ class TEX
while ! stoprunning && (texruns < nofruns) && ok do
texruns += 1
report("TeX run #{texruns}")
- if texruns == 1 then
- makeoptionfile(rawname,jobname,orisuffix,false,false,1) unless getvariable('nooptionfile')
- else
- makeoptionfile(rawname,jobname,orisuffix,false,false,2) unless getvariable('nooptionfile')
+ unless getvariable('nooptionfile') then
+ if texruns == nofruns then
+ makeoptionfile(rawname,jobname,orisuffix,false,false,4,texruns) # last
+ elsif texruns == 1 then
+ makeoptionfile(rawname,jobname,orisuffix,false,false,1,texruns) # first
+ else
+ makeoptionfile(rawname,jobname,orisuffix,false,false,2,texruns) # unknown
+ end
end
ok = runtex(File.suffixed(rawname,jobsuffix))
if ok && (nofruns > 1) then
@@ -1332,7 +1340,7 @@ class TEX
end
ok = runtexutil(rawname) if (nofruns == 1) && getvariable('texutil')
if ok && finalrun && (nofruns > 1) then
- makeoptionfile(rawname,jobname,orisuffix,true,finalrun,4) unless getvariable('nooptionfile')
+ makeoptionfile(rawname,jobname,orisuffix,true,finalrun,4,texruns) unless getvariable('nooptionfile')
report("final TeX run #{texruns}")
ok = runtex(File.suffixed(rawname,jobsuffix))
end
@@ -1394,7 +1402,7 @@ class TEX
if mpdata = File.silentread(mpfile) then
mpdata.gsub!(/^\#.*\n/o,'')
File.silentrename(mpfile,mpcopy)
- texfound = mergebe || mpdata =~ /btex .*? etex/o
+ texfound = mergebe || mpdata =~ /btex .*? etex/mo
if mp = openedfile(mpfile) then
mpdata.gsub!(/(btex.*?)\;(.*?etex)/o) do "#{$1}@@@#{$2}" end
# mpdata.gsub!(/(\".*?)\;(.*?\")/o) do "#{$1}@@@#{$2}" end
@@ -1408,14 +1416,16 @@ class TEX
mpdata.gsub!(/beginfig\s*\((\d+)\)\s*\;(.*?)endfig\s*\;/o) do
n, str = $1, $2
if str =~ /(.*?)(verbatimtex.*?etex)\s*\;(.*)/o then
- "beginfig(#{n})\;\n$1$2\;\n#{mpbetex(n)}\n$3\;endfig\;\n"
+ "beginfig(#{n})\;\n#{$1}#{$2}\;\n#{mpbetex(n)}\n#{$3}\;endfig\;\n"
else
"beginfig(#{n})\;\n#{mpbetex(n)}\n#{str}\;endfig\;\n"
end
end
end
+ mpdata.gsub!(/\n+/mo, "\n")
+ mpdata.gsub!(/^\s*\;\s*\n/o, "")
unless mpdata =~ /beginfig\s*\(\s*0\s*\)/o then
- mp << mpbetex[0] if mpbetex.key?(0)
+ mp << mpbetex['0'] if mpbetex.key?('0')
end
mp << mpdata # ??
mp << "\n"
@@ -1443,7 +1453,7 @@ class TEX
end
f.close
end
- File.silentrename(mpfile,mpfile+'.keep')
+ File.silentrename(mpfile, mpfile+'.keep')
File.silentrename(mpcopy, mpfile)
end
end
@@ -1456,13 +1466,26 @@ class TEX
mptex = File.suffixed(mpname,'temp','tex')
mpdvi = File.suffixed(mpname,'temp','dvi')
mplog = File.suffixed(mpname,'temp','log')
- mpmpx = File.suffixed(mpname,'temp','mpx')
+ mpmpx = File.suffixed(mpname,'mpx')
ok = system("mpto #{mpname} > #{mptex}")
if ok && File.appended(mptex, "\\end\n") then
- if context then
- ok = RunConTeXtFile(mptex)
+ if localjob = TEX.new(@logger) then
+ localjob.setvariable('files',mptex)
+ localjob.setvariable('backend','dvips')
+ localjob.setvariable('engine',getvariable('engine')) unless getvariable('engine').empty?
+ localjob.setvariable('once',true)
+ localjob.setvariable('nobackend',true)
+ if context then
+ localjob.setvariable('texformats',[getvariable('interface')]) unless getvariable('interface').empty?
+ elsif getvariable('interface').empty? then
+ localjob.setvariable('texformats',['plain'])
+ else
+ localjob.setvariable('texformats',[getvariable('interface')])
+ end
+ localjob.processtex
+ ok = true # todo
else
- ok = RunSomeTeXFile(mptex)
+ ok = false
end
ok = ok && FileTest.file?(mpdvi) && system("dvitomp #{mpdvi} #{mpmpx}")
[mptex,mpdvi,mplog].each do |mpfil|
@@ -1508,18 +1531,22 @@ class TEX
if File.atleast?(mpname,10) && (mp = File.silentopen(mpname)) then
labels = Hash.new
while str = mp.gets do
- t = if str =~ /%\s*setup\s*:\s*(.*)/o then $1 else '' end
- if str =~ /%\s*figure\s*(\d+)\s*:\s*(.*)/o then
+ t = if str =~ /^%\s*setup\s*:\s*(.*)$/o then $1 else '' end
+ if str =~ /^%\s*figure\s*(\d+)\s*:\s*(.*)$/o then
labels[$1] = labels[$1] || ''
unless t.empty? then
labels[$1] += "#{t}\n"
t = ''
end
- labels[$1] += "$2\n"
+ labels[$1] += "#{$2}\n"
end
end
mp.close
- return labels if labels.size>0
+ if labels.size>0 then
+ return labels
+ else
+ return nil
+ end
end
return nil
end
diff --git a/scripts/context/ruby/base/texutil.rb b/scripts/context/ruby/base/texutil.rb
index 2c57702de..12337c643 100644
--- a/scripts/context/ruby/base/texutil.rb
+++ b/scripts/context/ruby/base/texutil.rb
@@ -823,8 +823,9 @@ class TeXUtil
def loaded(filename)
begin
- report("parsing file #{filename}")
- if f = open(File.suffixed(filename,'tui')) then
+ tuifile = File.suffixed(filename,'tui')
+ report("parsing file #{tuifile}")
+ if f = open(tuifile) then
f.each do |line|
case line.chomp
when /^f (.*)$/o then @plugins.reader('MyFiles', $1.splitdata)
diff --git a/scripts/context/ruby/base/variables.rb b/scripts/context/ruby/base/variables.rb
index 5cbc5ba53..403b57716 100644
--- a/scripts/context/ruby/base/variables.rb
+++ b/scripts/context/ruby/base/variables.rb
@@ -12,6 +12,89 @@
require 'base/tool'
+class Hash
+
+ def nothing?(id)
+ ! self[id] || self[id].empty?
+ end
+
+ def subset(pattern)
+ h = Hash.new
+ p = pattern.gsub(/([\.\:\-])/) do "\\#{$1}" end
+ r = /^#{p}/
+ self.keys.each do |k|
+ h[k] = self[k].dup if k =~ r
+ end
+ return h
+ end
+
+end
+
+class ExtendedHash < Hash
+
+ @@re_var_a = /\%(.*?)\%/
+ @@re_var_b = /\$\((.*?)\)/
+
+ def set(key,value='',resolve=true)
+ if value then
+ self[key] = if resolve then resolved(value.to_s) else value.to_s end
+ else
+ self[key] = ''
+ end
+ end
+
+ def replace(key,value='')
+ self[key] = value if self?(key)
+ end
+
+ def get(key,default='')
+ if self.key?(key) then self[key] else default end
+ end
+
+ def true?(key)
+ self[key] =~ /^(yes|on|true|enable|enabled|y|start)$/io rescue false
+ end
+
+ def resolved(str)
+ begin
+ str.to_s.gsub(@@re_var_a) do
+ self[$1] || ''
+ end.gsub(@@re_var_b) do
+ self[$1] || ''
+ end
+ rescue
+ str.to_s rescue ''
+ end
+ end
+
+ def check(key,default='')
+ if self.key?(key) then
+ if self[key].empty? then self[key] = (default || '') end
+ else
+ self[key] = (default || '')
+ end
+ end
+
+ def checked(key,default='')
+ if self.key?(key) then
+ if self[key].empty? then default else self[key] end
+ else
+ default
+ end
+ end
+
+ def empty?(key)
+ self[key].empty?
+ end
+
+ # def downcase(key)
+ # self[key].downcase!
+ # end
+
+end
+
+# the next one is obsolete so we need to replace things
+
module Variables
def setvariable(key,value='')
@@ -26,6 +109,10 @@ module Variables
if @variables.key?(key) then @variables[key] else default end
end
+ def truevariable(key)
+ @variables[key] =~ /^(yes|on|true)$/io rescue false
+ end
+
def checkedvariable(str,default='')
if @variables.key?(key) then
if @variables[key].empty? then default else @variables[key] end
diff --git a/scripts/context/ruby/ctxtools.rb b/scripts/context/ruby/ctxtools.rb
index 4c47d643e..a768264d9 100644
--- a/scripts/context/ruby/ctxtools.rb
+++ b/scripts/context/ruby/ctxtools.rb
@@ -15,7 +15,7 @@
# todo: move scite here
#
-# todo: move kpse call to kpse class/module
+# todo: move kpse call to kpse class/module, faster and better
banner = ['CtxTools', 'version 1.3.1', '2004/2006', 'PRAGMA ADE/POD']
@@ -1528,33 +1528,386 @@ class Commands
end
-logger = Logger.new(banner.shift)
-commandline = CommandLine.new
+class TexDeps
+
+ @@cs_tex = %q/
+ above abovedisplayshortskip abovedisplayskip
+ abovewithdelims accent adjdemerits advance afterassignment
+ aftergroup atop atopwithdelims
+ badness baselineskip batchmode begingroup
+ belowdisplayshortskip belowdisplayskip binoppenalty botmark
+ box boxmaxdepth brokenpenalty
+ catcode char chardef cleaders closein closeout clubpenalty
+ copy count countdef cr crcr csname
+ day deadcycles def defaulthyphenchar defaultskewchar
+ delcode delimiter delimiterfactor delimeters
+ delimitershortfall delimeters dimen dimendef discretionary
+ displayindent displaylimits displaystyle
+ displaywidowpenalty displaywidth divide
+ doublehyphendemerits dp dump
+ edef else emergencystretch end endcsname endgroup endinput
+ endlinechar eqno errhelp errmessage errorcontextlines
+ errorstopmode escapechar everycr everydisplay everyhbox
+ everyjob everymath everypar everyvbox exhyphenpenalty
+ expandafter
+ fam fi finalhyphendemerits firstmark floatingpenalty font
+ fontdimen fontname futurelet
+ gdef global group globaldefs
+ halign hangafter hangindent hbadness hbox hfil horizontal
+ hfill horizontal hfilneg hfuzz hoffset holdinginserts hrule
+ hsize hskip hss horizontal ht hyphenation hyphenchar
+ hyphenpenalty hyphen
+ if ifcase ifcat ifdim ifeof iffalse ifhbox ifhmode ifinner
+ ifmmode ifnum ifodd iftrue ifvbox ifvmode ifvoid ifx
+ ignorespaces immediate indent input inputlineno input
+ insert insertpenalties interlinepenalty
+ jobname
+ kern
+ language lastbox lastkern lastpenalty lastskip lccode
+ leaders left lefthyphenmin leftskip leqno let limits
+ linepenalty line lineskip lineskiplimit long looseness
+ lower lowercase
+ mag mark mathaccent mathbin mathchar mathchardef mathchoice
+ mathclose mathcode mathinner mathop mathopen mathord
+ mathpunct mathrel mathsurround maxdeadcycles maxdepth
+ meaning medmuskip message mkern month moveleft moveright
+ mskip multiply muskip muskipdef
+ newlinechar noalign noboundary noexpand noindent nolimits
+ nonscript scriptscript nonstopmode nulldelimiterspace
+ nullfont number
+ omit openin openout or outer output outputpenalty over
+ overfullrule overline overwithdelims
+ pagedepth pagefilllstretch pagefillstretch pagefilstretch
+ pagegoal pageshrink pagestretch pagetotal par parfillskip
+ parindent parshape parskip patterns pausing penalty
+ postdisplaypenalty predisplaypenalty predisplaysize
+ pretolerance prevdepth prevgraf
+ radical raise read relax relpenalty right righthyphenmin
+ rightskip romannumeral
+ scriptfont scriptscriptfont scriptscriptstyle scriptspace
+ scriptstyle scrollmode setbox setlanguage sfcode shipout
+ show showbox showboxbreadth showboxdepth showlists showthe
+ skewchar skip skipdef spacefactor spaceskip span special
+ splitbotmark splitfirstmark splitmaxdepth splittopskip
+ string
+ tabskip textfont textstyle the thickmuskip thinmuskip time
+ toks toksdef tolerance topmark topskip tracingcommands
+ tracinglostchars tracingmacros tracingonline tracingoutput
+ tracingpages tracingparagraphs tracingrestores tracingstats
+ uccode uchyph underline unhbox unhcopy unkern unpenalty
+ unskip unvbox unvcopy uppercase
+ vadjust valign vbadness vbox vcenter vfil vfill vfilneg
+ vfuzz voffset vrule vsize vskip vsplit vss vtop
+ wd widowpenalty write
+ xdef xleaders xspaceskip
+ year
+ /.split
+
+ @@cs_etex = %q/
+ beginL beginR botmarks
+ clubpenalties currentgrouplevel currentgrouptype
+ currentifbranch currentiflevel currentiftype
+ detokenize dimexpr displaywidowpenalties
+ endL endR eTeXrevision eTeXversion everyeof
+ firstmarks fontchardp fontcharht fontcharic fontcharwd
+ glueexpr glueshrink glueshrinkorder gluestretch
+ gluestretchorder gluetomu
+ ifcsname ifdefined iffontchar interactionmode
+ interactionmode interlinepenalties
+ lastlinefit lastnodetype
+ marks topmarks middle muexpr mutoglue
+ numexpr
+ pagediscards parshapedimen parshapeindent parshapelength
+ predisplaydirection
+ savinghyphcodes savingvdiscards scantokens showgroups
+ showifs showtokens splitdiscards splitfirstmarks
+ TeXXeTstate tracingassigns tracinggroups tracingifs
+ tracingnesting tracingscantokens
+ unexpanded unless
+ widowpenalties
+ /.split
+
+ @@cs_pdftex = %q/
+ pdfadjustspacing pdfannot pdfavoidoverfull
+ pdfcatalog pdfcompresslevel
+ pdfdecimaldigits pdfdest pdfdestmargin
+ pdfendlink pdfendthread
+ pdffontattr pdffontexpand pdffontname pdffontobjnum pdffontsize
+ pdfhorigin
+ pdfimageresolution pdfincludechars pdfinfo
+ pdflastannot pdflastdemerits pdflastobj
+ pdflastvbreakpenalty pdflastxform pdflastximage
+ pdflastximagepages pdflastxpos pdflastypos
+ pdflinesnapx pdflinesnapy pdflinkmargin pdfliteral
+ pdfmapfile pdfmaxpenalty pdfminpenalty pdfmovechars
+ pdfnames
+ pdfobj pdfoptionpdfminorversion pdfoutline pdfoutput
+ pdfpageattr pdfpageheight pdfpageresources pdfpagesattr
+ pdfpagewidth pdfpkresolution pdfprotrudechars
+ pdfrefobj pdfrefxform pdfrefximage
+ pdfsavepos pdfsnaprefpoint pdfsnapx pdfsnapy pdfstartlink
+ pdfstartthread
+ pdftexrevision pdftexversion pdfthread pdfthreadmargin
+ pdfuniqueresname
+ pdfvorigin
+ pdfxform pdfximage
+ /.split
+
+ @@cs_omega = %q/
+ odelimiter omathaccent omathchar oradical omathchardef omathcode odelcode
+ leftghost rightghost
+ charwd charht chardp charit
+ localleftbox localrightbox
+ localinterlinepenalty localbrokenpenalty
+ pagedir bodydir pardir textdir mathdir
+ boxdir nextfakemath
+ pagewidth pageheight pagerightoffset pagebottomoffset
+ nullocp nullocplist ocp externalocp ocplist pushocplist popocplist clearocplists ocptracelevel
+ addbeforeocplist addafterocplist removebeforeocplist removeafterocplist
+ OmegaVersion
+ InputTranslation OutputTranslation DefaultInputTranslation DefaultOutputTranslation
+ noInputTranslation noOutputTranslation
+ InputMode OutputMode DefaultInputMode DefaultOutputMode
+ noInputMode noOutputMode noDefaultInputMode noDefaultOutputMode
+ /.split
+
+ @@cs_plain = %q/
+ TeX
+ bgroup egroup endgraf space empty null
+ newcount newdimen newskip newmuskip newbox newtoks newhelp newread newwrite newfam newlanguage newinsert newif
+ maxdimen magstephalf magstep
+ frenchspacing nonfrenchspacing normalbaselines obeylines obeyspaces raggedright ttraggedright
+ thinspace negthinspace enspace enskip quad qquad
+ smallskip medskip bigskip removelastskip topglue vglue hglue
+ break nobreak allowbreak filbreak goodbreak smallbreak medbreak bigbreak
+ line leftline rightline centerline rlap llap underbar strutbox strut
+ cases matrix pmatrix bordermatrix eqalign displaylines eqalignno leqalignno
+ pageno folio tracingall showhyphens fmtname fmtversion
+ hphantom vphantom phantom smash
+ /.split
+
+ @@cs_eplain = %q/
+ eTeX
+ newmarks grouptype interactionmode nodetype iftype
+ tracingall loggingall tracingnone
+ /.split
+
+ # let's ignore \dimendef etc
+
+ @@primitives_def = "def|edef|xdef|gdef|let|newcount|newdimen|newskip|newbox|newtoks|newmarks|chardef|mathchardef|newconditional"
+
+ @@cs_global = [@@cs_tex,@@cs_etex,@@cs_pdftex,@@cs_omega].sort.flatten
+ @@types = [['invalid','*'],['okay','='],['forward','>'],['backward','<'],['unknown','?']]
+
+ def initialize(logger=nil)
+ @cs_local = Hash.new
+ @cs_new = Hash.new
+ @cs_defd = Hash.new
+ @cs_used = Hash.new
+ @filename = 'context.tex'
+ @files = Array.new # keep load order !
+ @compact = false
+ @logger = logger
+ end
-commandline.registeraction('touchcontextfile', 'update context version')
-commandline.registeraction('contextversion', 'report context version')
+ def load(filename='context.tex',omitlist=['mult-com.tex'])
+ begin
+ @filename = filename
+ File.open(filename) do |f|
+ f.each do |line|
+ if line =~ /^\\input\s+(\S+)\s*/o then
+ @files.push($1) unless omitlist.include?(File.basename($1))
+ end
+ end
+ end
+ rescue
+ @files = Array.new
+ end
+ end
-commandline.registeraction('jeditinterface', 'generate jedit syntax files [--pipe]')
-commandline.registeraction('bbeditinterface', 'generate bbedit syntax files [--pipe]')
-commandline.registeraction('sciteinterface', 'generate scite syntax files [--pipe]')
-commandline.registeraction('rawinterface', 'generate raw syntax files [--pipe]')
+ def analyze
+ @files.each do |filename|
+ if f = File.open(filename) then
+ @logger.report("loading #{filename}") if @logger
+ defs, uses, n = 0, 0, 0
+ f.each do |line|
+ n += 1
+ case line
+ when /^%/
+ # skip
+ when /\\newif\s*\\if([a-zA-Z@\?\!]+)/ then
+ pushdef(filename,n,"if:#{$1}")
+ when /\\([a-zA-Z@\?\!]+)(true|false)/ then
+ pushuse(filename,n,"if:#{$1}")
+ when /^\s*\\(#{@primitives_def})\\([a-zA-Z@\?\!]{3,})/o
+ pushdef(filename,n,$2)
+ when /\\([a-zA-Z@\?\!]{3,})/o
+ pushuse(filename,n,$1)
+ end
+ end
+ f.close
+ end
+ end
+ end
-commandline.registeraction('translateinterface', 'generate interface files (xml) [nl de ..]')
-commandline.registeraction('purgefiles', 'remove temporary files [--all --recurse] [basename]')
+ def feedback(compact=false)
+ begin
+ outputfile = File.basename(@filename).sub(/\.tex$/,'')+'.dep'
+ File.open(outputfile,'w') do |f|
+ @compact = compact
+ @logger.report("saving analysis in #{outputfile}") if @logger
+ list, len = @cs_local.keys.sort, 0
+ if @compact then
+ list.each do |cs|
+ if cs.length > len then len = cs.length end
+ end
+ len += 1
+ else
+ f.puts "<?xml version='1.0'?>\n"
+ f.puts "<dependencies xmlns='http://www.pragma-ade.com/schemas/texdeps.rng' rootfile='#{@filename}'>\n"
+ end
+ list.each do |cs|
+ if @cs_new.key?(cs) then
+ if @cs_new[cs] == @cs_local[cs] then
+ f.puts some_struc(cs,len,1,some_str(@cs_new,@cs_defd,cs))
+ elsif @cs_new[cs].first == @cs_local[cs].first then
+ f.puts some_struc(cs,len,2,some_str(@cs_new,@cs_defd,cs),some_str(@cs_local,@cs_used,cs))
+ else
+ f.puts some_struc(cs,len,3,some_str(@cs_new,@cs_defd,cs),some_str(@cs_local,@cs_used,cs))
+ end
+ else
+ f.puts some_struc(cs,len,4,some_str(@cs_local,@cs_used,cs))
+ end
+ end
+ if @compact then
+ # nothing
+ else
+ "</dependencies>\n" unless @compact
+ end
+ end
+ rescue
+ end
+ end
-commandline.registeraction('documentation', 'generate documentation [--type=] [filename]')
+ private
-commandline.registeraction('filterpages') # no help, hidden temporary feature
-commandline.registeraction('purgeallfiles') # no help, compatibility feature
+ def some_struc(cs,len,type=1,defstr='',usestr='')
+ if @compact then
+ "#{cs.ljust(len)} #{@@types[type][1]} #{defstr} #{usestr}"
+ else
+ "<macro name='#{cs}' type='#{type}'>\n" +
+ if defstr.empty? then " <defined/>\n" else " <defined>\n#{defstr} <\defined>\n" end +
+ if usestr.empty? then " <used/>\n" else " <used>#{usestr}\n <\used>\n" end +
+ "</macro>\n"
+ end
+ end
-commandline.registeraction('patternfiles', 'generate pattern files [--all --xml --utf8] [languagecode]')
+ def some_str(files, lines, cs)
+ return '' unless files[cs]
+ if @compact then
+ str = '[ '
+ files[cs].each do |c|
+ str += c
+ str += " (#{lines[cs][c].join(' ')}) " if lines[cs][c]
+ str += ' '
+ end
+ str += ']'
+ str.gsub(/ +/, ' ')
+ else
+ str = ''
+ files[cs].each do |c|
+ if lines[cs][c] then
+ str += " <file name='#{c}'>\n"
+ str += " "
+ lines[cs][c].each do |l|
+ # str += " <line n='#{l}'/>\n"
+ str += "<line n='#{l}'/>"
+ end
+ str += "\n"
+ str += " </file>\n"
+ else
+ str += " <file name='#{c}'/>\n"
+ end
+ end
+ str
+ end
+ end
+
+ def pushdef(filename,n,cs)
+ unless @cs_new.key?(cs) then
+ @cs_new[cs] = Array.new
+ @cs_defd[cs] = Hash.new unless @cs_defd.key?(cs)
+ end
+ @cs_defd[cs][filename] = Array.new unless @cs_defd[cs][filename]
+ @cs_new[cs].push(filename) unless @cs_new[cs].include?(filename)
+ @cs_defd[cs][filename] << n
+ end
+
+ def pushuse(filename,n,cs)
+ unless @@cs_global.include?(cs.to_s) then
+ unless @cs_local[cs] then
+ @cs_local[cs] = Array.new
+ @cs_used[cs] = Hash.new unless @cs_used.key?(cs)
+ end
+ @cs_used[cs][filename] = Array.new unless @cs_used[cs][filename]
+ @cs_local[cs].push(filename) unless @cs_local[cs].include?(filename)
+ @cs_used[cs][filename] << n
+ end
+ end
+
+end
+
+class Commands
+
+ include CommandBase
+
+ def dependencies
+
+ filename = if @commandline.arguments.empty? then 'context.tex' else @commandline.arguments.first end
+ compact = @commandline.option('compact')
+
+ ['progname=context',''].each do |progname|
+ unless FileTest.file?(filename) then
+ name = `kpsewhich #{progname} #{filename}`.chomp
+ if FileTest.file?(name) then
+ filename = name
+ break
+ end
+ end
+ end
-commandline.registeraction('dpxmapfiles', 'convert pdftex mapfiles to dvipdfmx [--force] [texmfroot]')
-commandline.registeraction('listentities', 'create doctype entity definition from enco-uc.tex')
+ if FileTest.file?(filename) && deps = TexDeps.new(logger) then
+ deps.load
+ deps.analyze
+ deps.feedback(compact)
+ else
+ report("unknown file #{filename}")
+ end
-commandline.registeraction('brandfiles', 'add context copyright notice [--force]')
+ end
+
+end
-commandline.registeraction('platformize', 'replace line-endings [--recurse --force] [pattern]')
+logger = Logger.new(banner.shift)
+commandline = CommandLine.new
+
+commandline.registeraction('touchcontextfile' , 'update context version')
+commandline.registeraction('contextversion' , 'report context version')
+commandline.registeraction('jeditinterface' , 'generate jedit syntax files [--pipe]')
+commandline.registeraction('bbeditinterface' , 'generate bbedit syntax files [--pipe]')
+commandline.registeraction('sciteinterface' , 'generate scite syntax files [--pipe]')
+commandline.registeraction('rawinterface' , 'generate raw syntax files [--pipe]')
+commandline.registeraction('translateinterface', 'generate interface files (xml) [nl de ..]')
+commandline.registeraction('purgefiles' , 'remove temporary files [--all --recurse] [basename]')
+commandline.registeraction('documentation' , 'generate documentation [--type=] [filename]')
+commandline.registeraction('filterpages' ) # no help, hidden temporary feature
+commandline.registeraction('purgeallfiles' ) # no help, compatibility feature
+commandline.registeraction('patternfiles' , 'generate pattern files [--all --xml --utf8] [languagecode]')
+commandline.registeraction('dpxmapfiles' , 'convert pdftex mapfiles to dvipdfmx [--force] [texmfroot]')
+commandline.registeraction('listentities' , 'create doctype entity definition from enco-uc.tex')
+commandline.registeraction('brandfiles' , 'add context copyright notice [--force]')
+commandline.registeraction('platformize' , 'replace line-endings [--recurse --force] [pattern]')
+commandline.registeraction('dependencies' , 'analyze depedencies witin context [--compact] [rootfile]')
commandline.registervalue('type','')
diff --git a/scripts/context/ruby/newtexexec.rb b/scripts/context/ruby/newtexexec.rb
index 86780e742..564205d2e 100644
--- a/scripts/context/ruby/newtexexec.rb
+++ b/scripts/context/ruby/newtexexec.rb
@@ -1,4 +1,4 @@
-banner = ['TeXExec', 'version 6.1.1', '1997-2006', 'PRAGMA ADE/POD']
+banner = ['TeXExec', 'version 6.1.2', '1997-2006', 'PRAGMA ADE/POD']
unless defined? ownpath
ownpath = $0.sub(/[\\\/][a-z0-9\-]*?\.rb/i,'')
diff --git a/scripts/context/ruby/runtools.rb b/scripts/context/ruby/runtools.rb
index f554057f6..9f6fd3328 100644
--- a/scripts/context/ruby/runtools.rb
+++ b/scripts/context/ruby/runtools.rb
@@ -456,7 +456,7 @@ class Job
end
end
else
- error("no setup file '#{setuptex}'")
+ warning("no setup file '#{setuptex}', tree not initialized") # no error
end
rescue
warning("error in setup: #{$!}")
diff --git a/scripts/context/ruby/texmfstart.rb b/scripts/context/ruby/texmfstart.rb
index 8c22d7d4a..dfc9b1a26 100644
--- a/scripts/context/ruby/texmfstart.rb
+++ b/scripts/context/ruby/texmfstart.rb
@@ -2,7 +2,7 @@
# program : texmfstart
# copyright : PRAGMA Advanced Document Engineering
-# version : 1.8.3 - 2003/2006
+# version : 1.8.5 - 2003/2006
# author : Hans Hagen
#
# project : ConTeXt / eXaMpLe
@@ -32,11 +32,16 @@
$ownpath = File.expand_path(File.dirname($0)) unless defined? $ownpath
+$: << $ownpath
+
require "rbconfig"
+require 'base/kpseremote'
+require 'base/kpsedirect'
+
$mswindows = Config::CONFIG['host_os'] =~ /mswin/
$separator = File::PATH_SEPARATOR
-$version = "1.8.3"
+$version = "1.8.5"
if $mswindows then
require "win32ole"
@@ -80,6 +85,9 @@ $predefined['mpstools'] = 'mpstools.rb'
$predefined['exatools'] = 'exatools.rb'
$predefined['xmltools'] = 'xmltools.rb'
+$predefined['newpstopdf'] = 'newpstopdf.rb'
+$predefined['newtexexec'] = 'newtexexec.rb'
+
$makelist = [
# context
'texexec',
@@ -132,6 +140,25 @@ end
$applications['htm'] = $applications['html']
$applications['eps'] = $applications['ps']
+$kpse = nil
+
+def check_kpse
+ if $kpse then
+ # already done
+ elsif KpseRemote::available? then
+ $kpse = KpseRemote.new
+ if $kpse.okay? then
+ puts("using remote kpse") if $verbose
+ else
+ $kpse = KpseDirect.new
+ puts("forcing direct kpse") if $verbose
+ end
+ else
+ $kpse = KpseDirect.new
+ puts("using direct kpse") if $verbose
+ end
+end
+
if $mswindows then
GetShortPathName = Win32API.new('kernel32', 'GetShortPathName', ['P','P','N'], 'N')
@@ -274,9 +301,11 @@ def expanded(arg) # no "other text files", too restricted
end . gsub(/(kpse|loc|file|path)\:([a-zA-Z\-\_\.0-9]+)/o) do # was: \S
method, original, resolved = $1, $2, ''
if $program && ! $program.empty? then
- pstrings = ["-progname=#{$program}"]
+ # pstrings = ["-progname=#{$program}"]
+pstrings = [$program]
else
- pstrings = ['','progname=context']
+ # pstrings = ['','-progname=context']
+pstrings = ['','context']
end
# auto suffix with texinputs as fall back
if ENV["_CTX_K_V_#{original}_"] then
@@ -284,22 +313,31 @@ def expanded(arg) # no "other text files", too restricted
report("environment provides #{original} as #{resolved}") unless $report
resolved
else
+ check_kpse
pstrings.each do |pstr|
if resolved.empty? then
- command = "kpsewhich #{pstr} #{original}"
- report("running #{command}")
+ # command = "kpsewhich #{pstr} #{original}"
+ # report("running #{command}")
+ report("locating '#{original}' in program space '#{pstr}'")
begin
- resolved = `#{command}`.chomp
+ # resolved = `#{command}`.chomp
+ $kpse.progname = pstr
+ $kpse.format = ''
+ resolved = $kpse.find_file(original)
rescue
resolved = ''
end
end
# elsewhere in the tree
if resolved.empty? then
- command = "kpsewhich #{pstr} -format=\"other text files\" #{original}"
- report("running #{command}")
+ # command = "kpsewhich #{pstr} -format=\"other text files\" #{original}"
+ # report("running #{command}")
+ report("locating '#{original}' in program space '#{pstr}' using format 'other text files'")
begin
- resolved = `#{command}`.chomp
+ # resolved = `#{command}`.chomp
+ $kpse.progname = pstr
+ $kpse.format = 'other text files'
+ resolved = $kpse.find_file(original)
rescue
resolved = ''
end
@@ -403,7 +441,7 @@ def usage
print("switches : --verbose --report --browser --direct --execute --locate --iftouched\n")
print(" --program --file --page --arguments --batch --edit --report --clear\n")
print(" --make --lmake --wmake --path --stubpath --indirect --before --after\n")
- print(" --tree --autotree --showenv\n")
+ print(" --tree --autotree --environment --showenv\n")
print("\n")
print("example : texmfstart pstopdf.rb cow.eps\n")
print(" texmfstart --locate examplex.rb\n")
@@ -416,10 +454,11 @@ def usage
print(" texmfstart bin:xsltproc env:somepreset path:somefile.xsl somefile.xml\n")
print(" texmfstart --iftouched=normal,lowres downsample.rb normal lowres\n")
print(" texmfstart texmfstart bin:scite kpse:texmf.cnf\n")
- print(" texmfstart texmfstart --exec bin:scite *.tex\n")
- print(" texmfstart texmfstart --edit texmf.cnf\n")
- print(" texmfstart texmfstart --stubpath=/usr/local/bin --make texexec\n")
- print(" texmfstart texmfstart --stubpath=auto --make all\n")
+ print(" texmfstart --exec bin:scite *.tex\n")
+ print(" texmfstart --edit texmf.cnf\n")
+ print(" texmfstart --stubpath=/usr/local/bin --make texexec\n")
+ print(" texmfstart --stubpath=auto --make all\n")
+ print(" texmfstart --serve\n")
end
# somehow registration does not work out (at least not under windows)
@@ -491,13 +530,16 @@ def find(filename,program)
end
# now we consult environment settings
fullname = nil
+ check_kpse
+ $kpse.progname = program
suffixlist.each do |suffix|
begin
break unless $suffixinputs[suffix]
environment = ENV[$suffixinputs[suffix]] || ENV[$suffixinputs[suffix]+".#{$program}"]
if ! environment || environment.empty? then
begin
- environment = `kpsewhich -expand-path=\$#{$suffixinputs[suffix]}`.chomp
+ # environment = `kpsewhich -expand-path=\$#{$suffixinputs[suffix]}`.chomp
+ environment = $kpse.expand_path("\$#{$suffixinputs[suffix]}")
rescue
environment = nil
else
@@ -536,7 +578,9 @@ def find(filename,program)
if suffix =~ /(#{$scriptlist})/ then
begin
report("using 'kpsewhich' to locate '#{filename}' in suffix space '#{suffix}' (1)")
- fullname = `kpsewhich -progname=#{program} -format=texmfscripts #{filename}.#{suffix}`.chomp
+ # fullname = `kpsewhich -progname=#{program} -format=texmfscripts #{filename}.#{suffix}`.chomp
+ $kpse.format = 'texmfscripts'
+ fullname = $kpse.find_file("#{filename}.#{suffix}")
rescue
report("kpsewhich cannot locate '#{filename}' in suffix space '#{suffix}' (1)")
fullname = nil
@@ -547,7 +591,9 @@ def find(filename,program)
# old TDS location: .../texmf/context/...
begin
report("using 'kpsewhich' to locate '#{filename}' in suffix space '#{suffix}' (2)")
- fullname = `kpsewhich -progname=#{program} -format="other text files" #{filename}.#{suffix}`.chomp
+ # fullname = `kpsewhich -progname=#{program} -format="other text files" #{filename}.#{suffix}`.chomp
+ $kpse.format = 'other text files'
+ fullname = $kpse.find_file("#{filename}.#{suffix}")
rescue
report("kpsewhich cannot locate '#{filename}' in suffix space '#{suffix}' (2)")
fullname = nil
@@ -572,7 +618,8 @@ def find(filename,program)
if (suffixlist.length == 1) && (suffixlist.first =~ /(#{$documentlist})/) then
report("aggressively locating '#{filename}' in document trees")
begin
- texroot = `kpsewhich -expand-var=$SELFAUTOPARENT`.chomp
+ # texroot = `kpsewhich -expand-var=$SELFAUTOPARENT`.chomp
+ texroot = $kpse.expand_var("$SELFAUTOPARENT")
rescue
texroot = ''
else
@@ -593,7 +640,8 @@ def find(filename,program)
end
report("aggressively locating '#{filename}' in tex trees")
begin
- textrees = `kpsewhich -expand-var=$TEXMF`.chomp
+ # textrees = `kpsewhich -expand-var=$TEXMF`.chomp
+ textrees = $kpse.expand_var("$TEXMF")
rescue
textrees = ''
end
@@ -719,7 +767,6 @@ def make(filename,windows=false,linux=false)
end
def process(&block)
-
if $iftouched then
files = $directives['iftouched'].split(',')
oldname, newname = files[0], files[1]
@@ -735,57 +782,74 @@ def process(&block)
else
yield
end
+end
+def checkenvironment(tree)
+ report('')
+ ENV['TMP'] = ENV['TMP'] || ENV['TEMP'] || ENV['TMPDIR'] || ENV['HOME']
+ case RUBY_PLATFORM
+ when /(mswin|bccwin|mingw|cygwin)/i then ENV['TEXOS'] = ENV['TEXOS'] || 'texmf-mswin'
+ when /(linux)/i then ENV['TEXOS'] = ENV['TEXOS'] || 'texmf-linux'
+ when /(darwin|rhapsody|nextstep)/i then ENV['TEXOS'] = ENV['TEXOS'] || 'texmf-macosx'
+ # when /(netbsd|unix)/i then # todo
+ else # todo
+ end
+ ENV['TEXOS'] = "#{ENV['TEXOS'].sub(/^[\\\/]*/, '').sub(/[\\\/]*$/, '')}"
+ ENV['TEXPATH'] = tree.sub(/\/+$/,'') # + '/'
+ ENV['TEXMFOS'] = "#{ENV['TEXPATH']}/#{ENV['TEXOS']}"
+ report('')
+ report("preset : TEXPATH => #{ENV['TEXPATH']}")
+ report("preset : TEXOS => #{ENV['TEXOS']}")
+ report("preset : TEXMFOS => #{ENV['TEXMFOS']}")
+ report("preset : TMP => #{ENV['TMP']}")
+ report('')
+end
+
+def loadfile(filename)
+ begin
+ IO.readlines(filename).each do |line|
+ case line.chomp
+ when /^[\#\%]/ then
+ # comment
+ when /^(.*?)\s*(\>|\=|\<)\s*(.*)\s*$/ then
+ # = assign | > prepend | < append
+ key, how, value = $1, $2, $3
+ begin
+ # $SAFE = 0
+ value.gsub!(/\%(.*?)\%/) do
+ ENV[$1] || ''
+ end
+ # value.gsub!(/\;/,$separator) if key =~ /PATH/i then
+ case how
+ when '=', '<<' then ENV[key] = value
+ when '?', '??' then ENV[key] = ENV[key] || value
+ when '<', '+=' then ENV[key] = (ENV[key] || '') + $separator + value
+ when '>', '=+' then ENV[key] = value + $separator + (ENV[key] ||'')
+ end
+ rescue
+ report("user set failed : #{key} (#{$!})")
+ else
+ report("user set : #{key} => #{ENV[key]}")
+ end
+ end
+ end
+ rescue
+ report("error in reading file '#{filename}'")
+ end
end
-def checktree(tree)
+def loadtree(tree)
begin
unless tree.empty? then
- setuptex = File.join(tree,'setuptex.tmf')
+ if File.directory?(tree) then
+ setuptex = File.join(tree,'setuptex.tmf')
+ else
+ setuptex = tree.dup
+ end
if FileTest.file?(setuptex) then
- report('')
- report("tex tree : #{setuptex}")
- ENV['TEXPATH'] = tree.sub(/\/+$/,'') # + '/'
- ENV['TMP'] = ENV['TMP'] || ENV['TEMP'] || ENV['TMPDIR'] || ENV['HOME']
- case RUBY_PLATFORM
- when /(mswin|bccwin|mingw|cygwin)/i then ENV['TEXOS'] = ENV['TEXOS'] || 'texmf-mswin'
- when /(linux)/i then ENV['TEXOS'] = ENV['TEXOS'] || 'texmf-linux'
- when /(darwin|rhapsody|nextstep)/i then ENV['TEXOS'] = ENV['TEXOS'] || 'texmf-macosx'
- # when /(netbsd|unix)/i then # todo
- else # todo
- end
- ENV['TEXMFOS'] = "#{ENV['TEXPATH']}/#{ENV['TEXOS']}"
- report('')
- report("preset : TEXPATH => #{ENV['TEXPATH']}")
- report("preset : TEXOS => #{ENV['TEXOS']}")
- report("preset : TEXMFOS => #{ENV['TEXMFOS']}")
- report("preset : TMP => #{ENV['TMP']}")
- report('')
- IO.readlines(File.join(tree,'setuptex.tmf')).each do |line|
- case line.chomp
- when /^[\#\%]/ then
- # comment
- when /^(.*?)\s*(\>|\=|\<)\s*(.*)\s*$/ then
- # = assign | > prepend | < append
- key, how, value = $1, $2, $3
- begin
- # $SAFE = 0
- value.gsub!(/\%(.*?)\%/) do
- ENV[$1] || ''
- end
- # value.gsub!(/\;/,$separator) if key =~ /PATH/i then
- case how
- when '=' then ENV[key] = value
- when '<' then ENV[key] = (ENV[key] ||'') + $separator + value
- when '>' then ENV[key] = value + $separator + (ENV[key] ||'')
- end
- rescue
- report("user set failed : #{key} (#{$!})")
- else
- report("user set : #{key} => #{ENV[key]}")
- end
- end
- end
+ report("tex tree definition: #{setuptex}")
+ checkenvironment(File.dirname(setuptex))
+ loadfile(setuptex)
else
report("no setup file '#{setuptex}'")
end
@@ -795,6 +859,22 @@ def checktree(tree)
end
end
+def loadenvironment(environment)
+ begin
+ unless environment.empty? then
+ filename = if $path.empty? then environment else File.expand_path(File.join($path,environment)) end
+ if FileTest.file?(filename) then
+ report("environment : #{environment}")
+ loadfile(filename)
+ else
+ report("no environment file '#{environment}'")
+ end
+ end
+ rescue
+ report("problem while loading '#{environment}'")
+ end
+end
+
def show_environment
if $showenv then
keys = ENV.keys.sort
@@ -816,43 +896,46 @@ def execute(arguments)
$directives = hashed(arguments)
- $help = $directives['help'] || false
- $batch = $directives['batch'] || false
- $filename = $directives['file'] || ''
- $program = $directives['program'] || 'context'
- $direct = $directives['direct'] || false
- $edit = $directives['edit'] || false
- $page = $directives['page'] || 0
- $browser = $directives['browser'] || false
- $report = $directives['report'] || false
- $verbose = $directives['verbose'] || false
- $arguments = $directives['arguments'] || ''
- $execute = $directives['execute'] || $directives['exec'] || false
- $locate = $directives['locate'] || false
+ $help = $directives['help'] || false
+ $batch = $directives['batch'] || false
+ $filename = $directives['file'] || ''
+ $program = $directives['program'] || 'context'
+ $direct = $directives['direct'] || false
+ $edit = $directives['edit'] || false
+ $page = $directives['page'] || 0
+ $browser = $directives['browser'] || false
+ $report = $directives['report'] || false
+ $verbose = $directives['verbose'] || false
+ $arguments = $directives['arguments'] || ''
+ $execute = $directives['execute'] || $directives['exec'] || false
+ $locate = $directives['locate'] || false
$autotree = if $directives['autotree'] then (ENV['TEXMFSTART_TREE'] || ENV['TEXMFSTARTTREE'] || '') else '' end
- $path = $directives['path'] || ''
- $tree = $directives['tree'] || $autotree || ''
+ $path = $directives['path'] || ''
+ $tree = $directives['tree'] || $autotree || ''
+ $environment = $directives['environment'] || ''
- $make = $directives['make'] || false
- $unix = $directives['unix'] || false
- $windows = $directives['windows'] || false
- $stubpath = $directives['stubpath'] || ''
- $indirect = $directives['indirect'] || false
+ $make = $directives['make'] || false
+ $unix = $directives['unix'] || false
+ $windows = $directives['windows'] || false
+ $stubpath = $directives['stubpath'] || ''
+ $indirect = $directives['indirect'] || false
- $before = $directives['before'] || ''
- $after = $directives['after'] || ''
+ $before = $directives['before'] || ''
+ $after = $directives['after'] || ''
- $iftouched = $directives['iftouched'] || false
+ $iftouched = $directives['iftouched'] || false
- $openoffice = $directives['oo'] || false
+ $openoffice = $directives['oo'] || false
$crossover = false if $directives['clear']
- $showenv = $directives['showenv'] || false
+ $showenv = $directives['showenv'] || false
$verbose = true if $showenv
+ $serve = $directives['serve'] || false
+
$verbose = true if (ENV['_CTX_VERBOSE_'] =~ /(y|yes|t|true|on)/io) && ! $locate && ! $report
ENV['_CTX_VERBOSE_'] = 'yes' if $verbose
@@ -875,15 +958,27 @@ def execute(arguments)
end
end
- if $help || ! $filename || $filename.empty? then
+ if $serve then
+ if ENV['KPSEMETHOD'] && ENV['KPSEPORT'] then
+ require 'base/kpseremote'
+ begin
+ KpseRemote::start_server
+ rescue
+ end
+ else
+ usage
+ end
+ elsif $help || ! $filename || $filename.empty? then
usage
- checktree($tree)
+ loadtree($tree)
+ loadenvironment($environment)
show_environment()
elsif $batch && $filename && ! $filename.empty? then
# todo, take commands from file and avoid multiple starts and checks
else
report("texmfstart version #{$version}")
- checktree($tree)
+ loadtree($tree)
+ loadenvironment($environment)
show_environment()
if $make then
if $filename == 'all' then
diff --git a/scripts/context/ruby/tmftools.rb b/scripts/context/ruby/tmftools.rb
index d125c5cae..56935b452 100644
--- a/scripts/context/ruby/tmftools.rb
+++ b/scripts/context/ruby/tmftools.rb
@@ -21,10 +21,11 @@
# tmftools --analyze > kpsewhat.log
# tmftools --analyze --strict > kpsewhat.log
# tmftools --analyze --delete --force "texmf-local/fonts/.*/somename"
+# tmftools --serve
# the real thing
-banner = ['TMFTools', 'version 1.0.0 (experimental, no help yet)', '2005', 'PRAGMA ADE/POD']
+banner = ['TMFTools', 'version 1.1.0 (experimental, no help yet)', '2005/2006', 'PRAGMA ADE/POD']
unless defined? ownpath
ownpath = $0.sub(/[\\\/][a-z0-9\-]*?\.rb/i,'')
@@ -33,27 +34,58 @@ end
require 'base/switch'
require 'base/logger'
-require 'base/kpsefast'
class Commands
include CommandBase
def init_kpse
- k = KPSEFAST.new
- k.rootpath = @commandline.option('rootpath')
- k.treepath = @commandline.option('treepath')
- k.progname = @commandline.option('progname')
- k.engine = @commandline.option('engine')
- k.format = @commandline.option('format')
- k.diskcache = @commandline.option('diskcache')
- k.renewcache = @commandline.option('renewcache')
- k.load_cnf
- k.expand_variables
- k.load_lsr
+ # require 'base/kpseremote'
+ # if KpseRemote::available? then
+ if ENV['KPSEMETHOD'] && ENV['KPSEPORT'] then
+ require 'base/kpseremote'
+ k = KpseRemote.new
+ else
+ k = nil
+ end
+ if k && k.okay? then
+ k.progname = @commandline.option('progname')
+ k.engine = @commandline.option('engine')
+ k.format = @commandline.option('format')
+ else
+ require 'base/kpsefast'
+ k = KpseFast.new
+ k.rootpath = @commandline.option('rootpath')
+ k.treepath = @commandline.option('treepath')
+ k.progname = @commandline.option('progname')
+ k.engine = @commandline.option('engine')
+ k.format = @commandline.option('format')
+ k.diskcache = @commandline.option('diskcache')
+ k.renewcache = @commandline.option('renewcache')
+ k.load_cnf
+ k.expand_variables
+ k.load_lsr
+ end
return k
end
+ def serve
+ if ENV['KPSEMETHOD'] && ENV['KPSEPORT'] then
+ require 'base/kpseremote'
+ begin
+ KpseRemote::start_server
+ rescue
+ end
+ end
+ end
+
+ def reload
+ begin
+ init_kpse.load
+ rescue
+ end
+ end
+
def main
if option = @commandline.option('expand-braces') and not option.empty? then
puts init_kpse.expand_braces(option)
@@ -128,6 +160,9 @@ commandline.registerflag('verbose')
commandline.registeraction('help')
commandline.registeraction('version')
+commandline.registeraction('reload')
+commandline.registeraction('serve')
+
commandline.expand
Commands.new(commandline,logger,banner).send(commandline.action || 'main')
diff --git a/tex/context/base/cont-log.tex b/tex/context/base/cont-log.tex
index aa1e1ce72..dae135a1c 100644
--- a/tex/context/base/cont-log.tex
+++ b/tex/context/base/cont-log.tex
@@ -89,7 +89,7 @@
\kern-.11em\TeX}
\def\AMSswitch#1%
- {$\fam2\ifdim\korpsgrootte>1.1em\scriptstyle\fi#1$}
+ {$\fam2\ifdim\bodyfontsize>1.1em\scriptstyle\fi#1$}
\def\AmSTeX
{\AMSswitch A%
diff --git a/tex/context/base/cont-new.tex b/tex/context/base/cont-new.tex
index 6a0ce0dee..c9f5a26d9 100644
--- a/tex/context/base/cont-new.tex
+++ b/tex/context/base/cont-new.tex
@@ -24,7 +24,7 @@
\normalend}}
\fi
-\newcontextversion{2006.02.15 17:41}
+\newcontextversion{2006.03.20 10:19}
%D This file is loaded at runtime, thereby providing an
%D excellent place for hacks, patches, extensions and new
@@ -670,8 +670,13 @@
% temp hack, else no proper default fall back (like \textmultiply); todo: sync encoding
+\def\dealwithmathtextencoding
+ {\expanded{\everyhbox{\the\everyhbox\noexpand\fastenableencoding{\currentencoding}}}%
+ \def\dealwithmathtextencoding{\let\characterencoding\nocharacterencoding}%
+ \dealwithmathtextencoding}
+
\appendtoks
- \let\characterencoding\nocharacterencoding
+ \dealwithmathtextencoding
\to \everymathematics
% \separatestring123 456\to\test [\test]
diff --git a/tex/context/base/context.tex b/tex/context/base/context.tex
index 093652d18..0d9810695 100644
--- a/tex/context/base/context.tex
+++ b/tex/context/base/context.tex
@@ -31,7 +31,7 @@
%D 2004.8.30 the low level interface is english. Watch out and adapt
%D your styles an modules.
-\def\contextversion{2006.02.15 17:41}
+\def\contextversion{2006.03.20 10:19}
%D For those who want to use this:
diff --git a/tex/context/base/core-fig.tex b/tex/context/base/core-fig.tex
index ddbb4bb66..f9367d735 100644
--- a/tex/context/base/core-fig.tex
+++ b/tex/context/base/core-fig.tex
@@ -617,7 +617,11 @@
{\global\fighei\@@efheight}%
\doifsomething\@@efscale
{\figxsca\@@efscale
- \figysca\@@efscale}}
+ \figysca\@@efscale}%
+ \doifsomething\@@efxscale
+ {\figxsca\@@efxscale}%
+ \doifsomething\@@efyscale
+ {\figxsca\@@efyscale}}
\def\setfactorfiguresize
{\doifinsetelse\@@effactor{\v!max,\v!fit,\v!broad}
@@ -655,9 +659,9 @@
\fi}
\def\setscalefiguresize
- {\doifsomething\@@efscale
- {\doapplyfigurescale\figwid\@@epw\figxsca
- \doapplyfigurescale\fighei\@@eph\figysca
+ {\doifsomething{\@@efscale\@@efxscale\@@efxscale}
+ {\doapplyfigurescale\figwid\@@epw\figxsca\@@efxscale
+ \doapplyfigurescale\fighei\@@eph\figysca\@@efyscale
\global\figwid\zeropoint
\global\fighei\zeropoint
\doifelsenothing\@@efmaxwidth
@@ -700,8 +704,8 @@
{\docalculatefigurescales\fighei\@@eph\figwid\@@epw}%
\else
\dosetdimensionfiguresize
- {\doapplyfigurescale\figwid\@@epw\figxsca
- \doapplyfigurescale\fighei\@@eph\figysca}%
+ {\doapplyfigurescale\figwid\@@epw\figxsca\@@efxscale
+ \doapplyfigurescale\fighei\@@eph\figysca\@@efyscale}%
{\docalculatefigurescales\figwid\@@epw\fighei\@@eph}%
{\docalculatefigurescales\fighei\@@eph\figwid\@@epw}%
\fi
@@ -821,13 +825,29 @@
\divide\dimen0 \dimen2
#3=\dimen0 } % #3 = schaal
- \def\doapplyfigurescale#1#2#3%
+% \def\doapplyfigurescale#1#2#3%
+% {\global#1=#2\relax
+% \ifcase0\@@efscale\relax % beter: doifnum...
+% #3=\plusthousand
+% \else
+% #3=\@@efscale
+% \fi\relax % important !
+% \ifnum#3=\plusthousand\else
+% \global\divide #1 \plusthousand
+% \global\multiply#1 #3\relax
+% \fi}
+
+ \def\doapplyfigurescale#1#2#3#4%
{\global#1=#2\relax
- \ifcase0\@@efscale\relax % beter: doifnum...
- #3=\plusthousand
+ \ifcase0#4\relax % @@ef.scale kan empty zijn
+ \ifcase0\@@efscale\relax % @@efscale kan empty zijn
+ #3=\plusthousand
+ \else
+ #3=\@@efscale
+ \fi
\else
- #3=\@@efscale
- \fi\relax % important !
+ #3=#4%
+ \fi
\ifnum#3=\plusthousand\else
\global\divide #1 \plusthousand
\global\multiply#1 #3\relax
@@ -839,6 +859,8 @@
\beginETEX \dimexpr
+ % todo: use \relax instead of ()
+
\def\docalculatefigurescales#1#2#3#4%
{\scratchdimen\dimexpr(#1/\dimexpr(#2/\plusthousand))%
\figxsca\scratchdimen
@@ -848,14 +870,28 @@
\def\docalculatefigurescale#1#2#3%
{#3\dimexpr(#1/\dimexpr(#2/\plusthousand))}
- \def\doapplyfigurescale#1#2#3%
- {% #3=\ifnum0\number\@@efscale=\zerocount\plusthousand\else\@@efscale\fi
- \ifcase0\@@efscale\relax % @@efschaal kan empty zijn
- #3=\plusthousand
+% \def\doapplyfigurescale#1#2#3%
+% {% #3=\ifnum0\number\@@efscale=\zerocount\plusthousand\else\@@efscale\fi
+% \ifcase0\@@efscale\relax % @@efscale kan empty zijn
+% #3=\plusthousand
+% \else
+% #3=\@@efscale
+% \fi\relax % important !
+% \global#1\ifnum#3=\plusthousand#2\else\dimexpr(#3\dimexpr(#2/\plusthousand))\fi
+% \relax}
+
+ \def\doapplyfigurescale#1#2#3#4% todo: also #5 being sx/sy (\ifdim0#5=0pt ...)
+ {\ifcase0#4\relax % @@ef.scale kan empty zijn
+ \ifcase0\@@efscale\relax % @@efscale kan empty zijn
+ #3=\plusthousand
+ \else
+ #3=\@@efscale
+ \fi
\else
- #3=\@@efscale
- \fi\relax % important !
- \global#1\ifnum#3=\plusthousand#2\else\dimexpr(#3\dimexpr(#2/\plusthousand))\fi
+ #3=#4%
+ \fi
+ \relax % important !
+ \global#1\ifnum#3=\plusthousand#2\else\dimexpr#3\dimexpr#2/\plusthousand\relax\relax\fi
\relax}
\endETEX
@@ -1031,7 +1067,7 @@
\getparameters
[\??ep]
[\c!e=\s!unknown,
- %\c!w=15\korpsgrootte,\c!h=10\korpsgrootte,
+ %\c!w=15\bodyfontsize,\c!h=10\bodyfontsize,
\c!w=8\lineheight,\c!h=6\lineheight,
\c!x=\!!zeropoint,\c!y=\!!zeropoint,
\c!t=,\c!s=,\c!a=,\c!f=\@@effilename]%
@@ -1041,7 +1077,7 @@
\c!object=\@@exobject,\c!preset=\v!yes,\c!split=,\c!size=,
\c!page=0,\c!controls=\v!no,\c!preview=\v!no,\c!repeat=\v!no,
\c!maxwidth=\@@exmaxwidth,\c!maxheight=\@@exmaxheight,
- \c!scale=,\c!width=,\c!height=,\c!display=,\c!lines=,\c!grid=,
+ \c!scale=,\c!xscale=,\c!yscale=,\c!width=,\c!height=,\c!display=,\c!lines=,\c!grid=,
%\c!foregroundcolor=,
\c!color=,\c!conversion=\@@exconversion,\c!prefix=\@@exprefix,\c!cache=\@@excache,
\c!factor=,\c!hfactor=,\c!wfactor=]%
@@ -1105,8 +1141,8 @@
{\let\@@eftype\c!mps}
{\processaction
[\@@effiletype]
- [ \c!tex=>\let\@@eftype\c!tex,
- \c!tmp=>\let\@@eftype\c!tex
+ [ \c!tex=>\let\@@eftype\c!tex, % check
+ \c!tmp=>\let\@@eftype\c!tex % check
\edef\@@effilepref{\bufferprefix}%
\edef\@@effilename{\@@effilepref\@@effilename},
% todo: nop when conversion
@@ -1167,19 +1203,19 @@
\edef\@@effullname{\@@effilename.\@@effiletype}%
\def\figureextension##1{\@@effiletype}%
\fi}%
-% begin prelocate to be converted image
-\let\@@efconversionpath\empty
-\let\@@efconversionfile\@@effilename
-\let\@@efconversiontype\@@effiletype
-\doifmodeelse{\systemmodeprefix\v!first}
- {\doifelsenothing\@@efconversion\donefalse\donetrue}%
- {\donefalse}%
-\ifdone
- \chardef\figurestatus\zerocount
- \locatefigureconversionfile
- \chardef\figurestatus\zerocount
-\fi
-% end
+ % begin prelocate to be converted image
+ \let\@@efconversionpath\empty
+ \let\@@efconversionfile\@@effilename
+ \let\@@efconversiontype\@@effiletype
+ \doifmodeelse{\systemmodeprefix\v!first}
+ {\doifelsenothing\@@efconversion\donefalse\donetrue}%
+ {\donefalse}%
+ \ifdone
+ \chardef\figurestatus\zerocount
+ \locatefigureconversionfile
+ \chardef\figurestatus\zerocount
+ \fi
+ % end
\doifelse\@@efpreset\v!no
{\doifelse\@@eftype\s!unknown
{\chardef\figurestatus\zerocount
@@ -2252,10 +2288,10 @@
\c!reset=\v!no,
\c!maxwidth=\@@efwidth,
\c!maxheight=\@@efheight,
- \c!bodyfont=\korpsgrootte,
+ \c!bodyfont=\bodyfontsize,
\c!directory=,
\c!file=\f!utilityfilename.\f!figureextension,
- \c!radius=.5\korpsgrootte,
+ \c!radius=.5\bodyfontsize,
\c!corner=\v!rectangular,
\c!frame=\v!off,
\c!background=, % new
diff --git a/tex/context/base/core-fld.tex b/tex/context/base/core-fld.tex
index 5f03d699e..4262bbdd2 100644
--- a/tex/context/base/core-fld.tex
+++ b/tex/context/base/core-fld.tex
@@ -28,6 +28,19 @@
\unprotect
+%D First we hook fields into the (viewer based) layering mechanism
+%D (implemented as properties).
+
+\ifx\currentlayerproperty\undefined\else \let\currentlayerproperty\empty\fi
+
+\appendtoks
+ \doif\@@iafieldlayer\v!auto
+ {\def\@@iafieldlayer{\currentlayerproperty}}%
+\to \everysetupinteraction
+
+\setupinteraction
+ [\c!fieldlayer=\v!auto] % auto by default
+
%D Internal command, linked to \type{\definesymbol}.
\def\dogetfieldsymbol#1%
@@ -93,7 +106,6 @@
\@@DriverFieldAfterKey,\@@DriverFieldFormat,\@@DriverFieldValidate,\@@DriverFieldCalculate,%
\@@DriverFieldFocusIn,\@@DriverFieldFocusOut}}
-
\def\presettextfield
{\preparefieldvariables
\dopresettextfield
@@ -771,7 +783,7 @@
{\setvalue{\strippedcsname\setupfield##1}{\dosetupfield[##1][#1,##2][#2,##3][#3,##4][#4,##5]}}}%
\else\iffirstargument
\doifelse{#1}\v!reset
- {\let\dodosetupfield\normaldodosetupfield}
+ {\resetfields}
{\setupfields[][][][#1]}% checken
\else
\writestatus\m!fields{provide either 1 or 4 arguments}%
@@ -780,6 +792,11 @@
\def\setupfields
{\doquadrupleempty\dosetupfields}
+\def\resetfields
+ {\let\dodosetupfield\normaldodosetupfield}
+
+% \setupfields[\v!reset]
+
% opties: veld, label, kader, vertikaal/horizontaal
\newif\ifShowFieldLabel
@@ -798,8 +815,8 @@
\HorizontalFieldfalse\VerticalFieldfalse,
\v!label=>\ShowFieldLabeltrue,
\v!frame=>\ShowFieldFrametrue,
- \v!horizontal=>\HorizontalFieldtrue,
- \v!vertical=>\VerticalFieldtrue]%
+ \v!horizontal=>\HorizontalFieldtrue,
+ \v!vertical=>\VerticalFieldtrue]%
\ifVerticalField
\getparameters[\??fd]
[\c!distance=\!!zeropoint,\c!inbetween=\vskip\@@localoffset,
@@ -846,7 +863,7 @@
\c!afterkey=,\c!format=,\c!validate=,\c!calculate=,
\c!focusin=,\c!focusout=,
\c!fieldoffset=\!!zeropoint,\c!fieldbackgroundcolor=,
- \c!fieldframecolor=,\c!fieldlayer=,#5]%
+ \c!fieldframecolor=,\c!fieldlayer=\@@iafieldlayer,#5]%
\scratchdimen\framedwidth \edef\@@DriverFieldWidth {\the\scratchdimen}%
\scratchdimen\framedheight\edef\@@DriverFieldHeight{\the\scratchdimen}%
\vfill
@@ -887,7 +904,7 @@
\c!focusin=,\c!focusout=,
\c!afterkey=,\c!format=,\c!validate=,\c!calculate=,
\c!fieldoffset=\!!zeropoint,\c!fieldbackgroundcolor=,
- \c!fieldframecolor=,\c!fieldlayer=,#5,\c!align=]
+ \c!fieldframecolor=,\c!fieldlayer=\@@iafieldlayer,#5,\c!align=]
{\dogetcommacommandelement1\from\@@DriverFieldValues\to\@@DriverFieldValue
\ifx\@@DriverFieldValue\empty
\let\@@DriverFieldValue\@@DriverFieldDefault
@@ -995,7 +1012,8 @@
[\c!frame=\v!off,
\c!option=,
\c!regionin=JS(Vide_Field{\currentsystemfield:txt}),
- \c!regionout=JS(Hide_Field{\currentsystemfield:txt})]%
+ \c!regionout=JS(Hide_Field{\currentsystemfield:txt}),
+ \c!fieldlayer=\@@iafieldlayer]%
\lower2ex\hbox to \zeropoint
{\fitfield[\currentsystemfield:but]}%
#2}%
@@ -1004,7 +1022,7 @@
%D And one more:
-\def\definefieldstack%
+\def\definefieldstack
{\dotripleargument\dodefinefieldstack}
\def\dodefinefieldstack[#1][#2][#3]% name, symbols, settings
diff --git a/tex/context/base/core-mis.tex b/tex/context/base/core-mis.tex
index 2a08f6ee3..7de9e1fdb 100644
--- a/tex/context/base/core-mis.tex
+++ b/tex/context/base/core-mis.tex
@@ -89,7 +89,8 @@
\appendtoks \def\MetaPost{MetaPost}\to\simplifiedcommands
\appendtoks \def\MetaFont{MetaFont}\to\simplifiedcommands
\appendtoks \def\MetaFun{MetaFun}\to\simplifiedcommands
-\appendtoks \def||{-}\to\simplifiedcommands
+%appendtoks \def||{-}\to\simplifiedcommands
+\appendtoks \def|#1|{\ifx#1\empty\empty-\else#1\fi}\to\simplifiedcommands
\appendtoks\let\buildtextaccent\secondoftwoarguments\to\simplifiedcommands
@@ -2455,15 +2456,18 @@
% scale
\def\doscalelikeafigure % quite dirty and potential interference possible
- {\doifsomething{\@@xyfactor\@@xyhfactor\@@xywfactor\@@xyscale
+ {\doifsomething{\@@xyscale\@@xyxscale\@@xyyscale
+ \@@xyfactor\@@xyhfactor\@@xywfactor
\@@xywidth\@@xyheight\@@xylines}
- {\let \@@efscale \@@xyscale
+ {\let \@@efscale \@@xyscale
+ \let \@@efxscale \@@xyxscale
+ \let \@@efyscale \@@xyyscale
\let \@@effactor \@@xyfactor
\let \@@efwfactor\@@xywfactor
\let \@@efhfactor\@@xyhfactor
- \let \@@efwidth\@@xywidth
+ \let \@@efwidth \@@xywidth
\let \@@efheight \@@xyheight
- \let \@@eflines \@@xylines
+ \let \@@eflines \@@xylines
\let \@@efgrid \@@xygrid
\let \@@epx \!!zeropoint
\let \@@epy \!!zeropoint
@@ -2482,12 +2486,12 @@
\scratchdimen\scay\points \divide\scratchdimen \plushundred
\edef\@@xysy{\withoutpt\the\scratchdimen}}}
-\def\doscale[#1]%
+\def\doscale[#1]% todo: xscale/yscale
{\bgroup
\forgetall
\getparameters
[\??xy]
- [\c!scale=,\c!width=,\c!height=,\c!lines=,
+ [\c!scale=,\c!xscale=,\c!yscale=,\c!width=,\c!height=,\c!lines=,
\c!factor=,\c!hfactor=,\c!wfactor=,\c!grid=,
\c!sx=1,\c!sy=1,#1]%
\dowithnextbox
diff --git a/tex/context/base/core-nav.tex b/tex/context/base/core-nav.tex
index 2f06b70a2..a55022d77 100644
--- a/tex/context/base/core-nav.tex
+++ b/tex/context/base/core-nav.tex
@@ -52,43 +52,54 @@
\def\resetinteractionparameter#1% use with case, no checking done
{\letvalue{\??ia#1}\empty}
+% \def\interactionparameter#1%
+% {\csname\??ia#1\endcsname}
+
+\newtoks\everysetupinteraction
+
\def\setupinteraction
{\dosingleargument\dodosetupinteraction}
\def\dodosetupinteraction[#1]% % \dosetupinteraction == special
{\getparameters[\??ia][#1]%
- \doifelse\@@iastate\v!start
- {\iflocation\else
- \showmessage\m!interactions2{\ifusepagedestinations\space(PAGE)\fi}%
- \global\locationtrue
- \fi}
- {\iflocation
- \showmessage\m!interactions3{\ifusepagedestinations\space(PAGE)\fi}%
- \global\locationfalse
- \fi}%
- \iflocation
- \setsystemmode \v!interaction
- \else
- \resetsystemmode\v!interaction
- \fi
- \dosetuppageview\@@iafocus
- \doifsomething\@@iacalculate
- {\doregistercalculationset\@@iacalculate}%
- \doifelse\@@iastrut\v!yes
- \locationstruttrue
- \locationstrutfalse
- \doifelse\@@iaclick\v!yes
- \highlighthyperlinkstrue
- \highlighthyperlinksfalse
- \doifelse\@@iasplit\v!yes
- \locationsplittrue
- \locationsplitfalse
- \doifelse\@@iadisplay\v!new
- \gotonewwindowtrue
- \gotonewwindowfalse
- \doifelse\@@iapage\v!yes
- {\global\usepagedestinationstrue}
- {\global\usepagedestinationsfalse}}
+ \the\everysetupinteraction}
+
+% todo, move partial append to where the action happens
+
+\appendtoks
+ \doifelse\@@iastate\v!start
+ {\iflocation\else
+ \showmessage\m!interactions2{\ifusepagedestinations\space(PAGE)\fi}%
+ \global\locationtrue
+ \fi}
+ {\iflocation
+ \showmessage\m!interactions3{\ifusepagedestinations\space(PAGE)\fi}%
+ \global\locationfalse
+ \fi}%
+ \iflocation
+ \setsystemmode \v!interaction
+ \else
+ \resetsystemmode\v!interaction
+ \fi
+ \dosetuppageview\@@iafocus
+ \doifsomething\@@iacalculate
+ {\doregistercalculationset\@@iacalculate}%
+ \doifelse\@@iastrut\v!yes
+ \locationstruttrue
+ \locationstrutfalse
+ \doifelse\@@iaclick\v!yes
+ \highlighthyperlinkstrue
+ \highlighthyperlinksfalse
+ \doifelse\@@iasplit\v!yes
+ \locationsplittrue
+ \locationsplitfalse
+ \doifelse\@@iadisplay\v!new
+ \gotonewwindowtrue
+ \gotonewwindowfalse
+ \doifelse\@@iapage\v!yes
+ {\global\usepagedestinationstrue}
+ {\global\usepagedestinationsfalse}%
+\to \everysetupinteraction
%D We have to make sure of some settings:
diff --git a/tex/context/base/core-sec.tex b/tex/context/base/core-sec.tex
index 2c4db940b..bf60a2ae6 100644
--- a/tex/context/base/core-sec.tex
+++ b/tex/context/base/core-sec.tex
@@ -1078,10 +1078,14 @@
\global\paginageblokkeerdtrue
\fi}
+% \setuphead[section][aligntitle=float] % permits title next to sidefloat
+%
+% \placefigure[left]{}{} \section{\dorecurse{10}{bagger }} \input tufte
+
\def\dohandlepagebreakAB#1% will be replaced by a more clever (signaling) mechanism (in beta)
- {\flushsidefloats
+ {\doifnotvalue{\??ko#1\c!aligntitle}\v!float\flushsidefloats
\getvalue{\??ko#1\c!before}%
- %\whitespace vervangen door \noindent elders
+ % \whitespace vervangen door \noindent elders
\relax
\ifpaginageblokkeerd
\global\paginageblokkeerdfalse
@@ -1096,6 +1100,7 @@
\dosomebreak\allowbreak
\fi
\fi
+ \doifvalue{\??ko#1\c!aligntitle}\v!float\indent
\xdef\@@kolevel{\getvalue{\??se\@@sectie\c!level}}}
\def\dohandlepagebreakBB#1#2#3%
@@ -1861,7 +1866,7 @@
\everypar\emptytoks % needed indeed
\noindent % ipv \whitespace elders, na \forgetall !
\bgroup
- \doifelsevalue{\??ko#1\c!aligntitle}\v!yes % new
+ \doifinsetelse{\getvalue{\??ko#1\c!aligntitle}}{\v!yes,\v!float}% new
{\skip0 1\leftskip
\skip2 1\rightskip
\xdef\localheadskip{\the\skip0}%
@@ -1989,18 +1994,18 @@
{\doifvaluenothing{\??ko#1\c!file}{\autocrossdocumentfalse}}
{\autocrossdocumentfalse}%
% no message needed here, should be a proper switch
-\noflines\zerocount
+ \noflines\zerocount
\ifdisplaysectionhead
-% new
-\processaction
- [\getvalue{\??ko#1\c!hang}]
- [ \v!line=>\hangheadplacement\noflines\zerocount,
- \v!broad=>\hangheadplacement\getnoflines\scratchdimen,
- \v!fit=>\hangheadplacement\getrawnoflines\scratchdimen,
- \v!none=>\noflines\zerocount,
- \v!default=>\noflines\zerocount,
- \v!unknown=>\hangheadplacement\noflines0\commalistelement\advance\noflines\minusone]%
-% so far
+ % new
+ \processaction
+ [\getvalue{\??ko#1\c!hang}]
+ [ \v!line=>\hangheadplacement\noflines\zerocount,
+ \v!broad=>\hangheadplacement\getnoflines\scratchdimen,
+ \v!fit=>\hangheadplacement\getrawnoflines\scratchdimen,
+ \v!none=>\noflines\zerocount,
+ \v!default=>\noflines\zerocount,
+ \v!unknown=>\hangheadplacement\noflines0\commalistelement\advance\noflines\minusone]%
+ % so far
\let\headlastlinewidth\!!zeropoint
\snaptogrid[\getvalue{\??ko#1\c!grid}]\hbox
{\hskip\localheadskip
@@ -2019,11 +2024,13 @@
\fi}%
\doflushnotes % new, not really needed
\endgraf
-\ifnum\noflines>\zerocount
- \dorecurse\noflines{\nointerlineskip\dosomebreak\nobreak\strut\endgraf}%
-\fi
- \nointerlineskip
- \dosomebreak\nobreak
+ \ifvmode
+ \ifnum\noflines>\zerocount
+ \dorecurse\noflines{\nointerlineskip\dosomebreak\nobreak\strut\endgraf}%
+ \fi
+ \nointerlineskip
+ \dosomebreak\nobreak
+ \fi
#2%
\else
\strut
diff --git a/tex/context/base/core-spa.tex b/tex/context/base/core-spa.tex
index 29651ae71..229f47598 100644
--- a/tex/context/base/core-spa.tex
+++ b/tex/context/base/core-spa.tex
@@ -3653,7 +3653,7 @@
% \hyphenpenalty = ( 2.5 * \hsize ) / \raggedness
% \tolerance >= 1500 % was 200
-% \raggedness = 2 .. 6\korpsgrootte
+% \raggedness = 2 .. 6\bodyfontsize
\chardef\raggedstatus=0 % normal left center right
diff --git a/tex/context/base/core-sys.tex b/tex/context/base/core-sys.tex
index f606b1ad7..cd2908b9c 100644
--- a/tex/context/base/core-sys.tex
+++ b/tex/context/base/core-sys.tex
@@ -76,7 +76,7 @@
\or
\setsystemmode\v!first % 3 : first and only run
\or
- \setsystemmode\v!last % 4 : extra last run
+ \setsystemmode\v!last % 4 : (extra) last run
\fi
\processaction
[\@@svtype]
diff --git a/tex/context/base/core-ver.tex b/tex/context/base/core-ver.tex
index 7cd0d6100..a488a3329 100644
--- a/tex/context/base/core-ver.tex
+++ b/tex/context/base/core-ver.tex
@@ -771,12 +771,12 @@
{\edef\!!stringa{\csname\??tp#1\c!blank\endcsname}}%
\processaction
[\!!stringa]
- [\v!standard=>\scratchskip\ctxparskip,
+ [ \v!standard=>\scratchskip\ctxparskip,
\v!small=>\scratchskip\blankokleinmaat,
\v!medium=>\scratchskip\blankomiddelmaat,
- \v!big=>\scratchskip\blankogrootmaat,
- \v!halfline=>\scratchskip.5\baselineskip,
- \v!line=>\scratchskip\baselineskip,
+ \v!big=>\scratchskip\blankogrootmaat,
+ \v!halfline=>\scratchskip.5\baselineskip,
+ \v!line=>\scratchskip\baselineskip,
\v!none=>\scratchskip\zeropoint,
\s!unknown=>\scratchskip\commalistelement]%
\ifgridsnapping
@@ -794,9 +794,17 @@
%D indirect way. As we will see, they are a specific case of a
%D more general mechanism.
+% \def\dostarttyping#1%
+% {\getvalue{\??tp#1\c!before}%
+% \startpacked % includes \bgroup
+% \initializetyping{#1}%
+% \startverbatimcolor
+% \expandafter\processdisplayverbatim\expandafter{\s!stop#1}}
+
\def\dostarttyping#1%
{\getvalue{\??tp#1\c!before}%
\startpacked % includes \bgroup
+ \dosetuptypelinenumbering{#1}{}%
\initializetyping{#1}%
\startverbatimcolor
\expandafter\processdisplayverbatim\expandafter{\s!stop#1}}
@@ -1165,7 +1173,7 @@
\dodotypefile[\v!file][]{#3}%
\fi\fi}
-\unprotected \def\dosetuptypelinenumbering#1#2%
+\def\dosetuptypelinenumbering#1#2%
{\doifundefined{\??tp#1\c!start}{\setuptyping[#1][\c!start=1,\c!stop=,\c!step=1,\c!nlines=,#2]}%
\doifelsevalue{\??tp#1\c!numbering}\v!file
{\setuplinenumbering[\c!method=\v!file]%
@@ -1176,11 +1184,14 @@
\doifvaluenothing{\??tp#1\c!step }{\setvalue{\??tp#1\c!step }{1}}%
\setuplinenumbering
[\c!method=\v!type,
+ \c!continue=\getvalue{\??tp#1\c!continue},
\c!start=\getvalue{\??tp#1\c!start},
\c!step=\getvalue{\??tp#1\c!step}]%
\donetrue}
{\donefalse}}%
\ifdone
+ \ifx\startlinenumbering\undefined \let\startlinenumbering\relax \fi
+ \ifx\stoplinenumbering \undefined \let\stoplinenumbering \relax \fi
\def\beginofverbatimlines{\startlinenumbering}%
\def\endofverbatimlines {\stoplinenumbering }%
\fi}
diff --git a/tex/context/base/enco-037.tex b/tex/context/base/enco-037.tex
new file mode 100644
index 000000000..d9fc653b2
--- /dev/null
+++ b/tex/context/base/enco-037.tex
@@ -0,0 +1,276 @@
+%D \module
+%D [ file=enco-037,
+%D version=2006.02.13,
+%D title=\CONTEXT\ \UNICODE\ Macros,
+%D subtitle=Encoding for vector 37,
+%D author=Luigi Scarso,
+%D date=\currentdate,
+%D copyright={PRAGMA}]
+%C
+%C This module is part of the \CONTEXT\ macro||package and is
+%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
+%C details.
+
+\startencoding[default]
+
+\definecharacter UnicodeLightHorizontal {\uchar{37}{000}} %%BOX DRAWINGS LIGHT HORIZONTAL
+\definecharacter UnicodeHeavyHorizontal {\uchar{37}{001}} %%BOX DRAWINGS HEAVY HORIZONTAL
+\definecharacter UnicodeLightVertical {\uchar{37}{002}} %%BOX DRAWINGS LIGHT VERTICAL
+\definecharacter UnicodeHeavyVertical {\uchar{37}{003}} %%BOX DRAWINGS HEAVY VERTICAL
+\definecharacter UnicodeLightTripleDashHorizontal {\uchar{37}{004}} %%BOX DRAWINGS LIGHT TRIPLE DASH HORIZONTAL
+\definecharacter UnicodeHeavyTripleDashHorizontal {\uchar{37}{005}} %%BOX DRAWINGS HEAVY TRIPLE DASH HORIZONTAL
+\definecharacter UnicodeLightTripleDashVertical {\uchar{37}{006}} %%BOX DRAWINGS LIGHT TRIPLE DASH VERTICAL
+\definecharacter UnicodeHeavyTripleDashVertical {\uchar{37}{007}} %%BOX DRAWINGS HEAVY TRIPLE DASH VERTICAL
+\definecharacter UnicodeLightQuadrupleDashHorizontal {\uchar{37}{008}} %%BOX DRAWINGS LIGHT QUADRUPLE DASH HORIZONTAL
+\definecharacter UnicodeHeavyQuadrupleDashHorizontal {\uchar{37}{009}} %%BOX DRAWINGS HEAVY QUADRUPLE DASH HORIZONTAL
+\definecharacter UnicodeLightQuadrupleDashVertical {\uchar{37}{010}} %%BOX DRAWINGS LIGHT QUADRUPLE DASH VERTICAL
+\definecharacter UnicodeHeavyQuadrupleDashVertical {\uchar{37}{011}} %%BOX DRAWINGS HEAVY QUADRUPLE DASH VERTICAL
+\definecharacter UnicodeLightDownAndRight {\uchar{37}{012}} %%BOX DRAWINGS LIGHT DOWN AND RIGHT
+\definecharacter UnicodeDownLightAndRightHeavy {\uchar{37}{013}} %%BOX DRAWINGS DOWN LIGHT AND RIGHT HEAVY
+\definecharacter UnicodeDownHeavyAndRightLight {\uchar{37}{014}} %%BOX DRAWINGS DOWN HEAVY AND RIGHT LIGHT
+\definecharacter UnicodeHeavyDownAndRight {\uchar{37}{015}} %%BOX DRAWINGS HEAVY DOWN AND RIGHT
+\definecharacter UnicodeLightDownAndLeft {\uchar{37}{016}} %%BOX DRAWINGS LIGHT DOWN AND LEFT
+\definecharacter UnicodeDownLightAndLeftHeavy {\uchar{37}{017}} %%BOX DRAWINGS DOWN LIGHT AND LEFT HEAVY
+\definecharacter UnicodeDownHeavyAndLeftLight {\uchar{37}{018}} %%BOX DRAWINGS DOWN HEAVY AND LEFT LIGHT
+\definecharacter UnicodeHeavyDownAndLeft {\uchar{37}{019}} %%BOX DRAWINGS HEAVY DOWN AND LEFT
+\definecharacter UnicodeLightUpAndRight {\uchar{37}{020}} %%BOX DRAWINGS LIGHT UP AND RIGHT
+\definecharacter UnicodeUpLightAndRightHeavy {\uchar{37}{021}} %%BOX DRAWINGS UP LIGHT AND RIGHT HEAVY
+\definecharacter UnicodeUpHeavyAndRightLight {\uchar{37}{022}} %%BOX DRAWINGS UP HEAVY AND RIGHT LIGHT
+\definecharacter UnicodeHeavyUpAndRight {\uchar{37}{023}} %%BOX DRAWINGS HEAVY UP AND RIGHT
+\definecharacter UnicodeLightUpAndLeft {\uchar{37}{024}} %%BOX DRAWINGS LIGHT UP AND LEFT
+\definecharacter UnicodeUpLightAndLeftHeavy {\uchar{37}{025}} %%BOX DRAWINGS UP LIGHT AND LEFT HEAVY
+\definecharacter UnicodeUpHeavyAndLeftLight {\uchar{37}{026}} %%BOX DRAWINGS UP HEAVY AND LEFT LIGHT
+\definecharacter UnicodeHeavyUpAndLeft {\uchar{37}{027}} %%BOX DRAWINGS HEAVY UP AND LEFT
+\definecharacter UnicodeLightVerticalAndRight {\uchar{37}{028}} %%BOX DRAWINGS LIGHT VERTICAL AND RIGHT
+\definecharacter UnicodeVerticalLightAndRightHeavy {\uchar{37}{029}} %%BOX DRAWINGS VERTICAL LIGHT AND RIGHT HEAVY
+\definecharacter UnicodeUpHeavyAndRightDownLight {\uchar{37}{030}} %%BOX DRAWINGS UP HEAVY AND RIGHT DOWN LIGHT
+\definecharacter UnicodeDownHeavyAndRightUpLight {\uchar{37}{031}} %%BOX DRAWINGS DOWN HEAVY AND RIGHT UP LIGHT
+\definecharacter UnicodeVerticalHeavyAndRightLight {\uchar{37}{032}} %%BOX DRAWINGS VERTICAL HEAVY AND RIGHT LIGHT
+\definecharacter UnicodeDownLightAndRightUpHeavy {\uchar{37}{033}} %%BOX DRAWINGS DOWN LIGHT AND RIGHT UP HEAVY
+\definecharacter UnicodeUpLightAndRightDownHeavy {\uchar{37}{034}} %%BOX DRAWINGS UP LIGHT AND RIGHT DOWN HEAVY
+\definecharacter UnicodeHeavyVerticalAndRight {\uchar{37}{035}} %%BOX DRAWINGS HEAVY VERTICAL AND RIGHT
+\definecharacter UnicodeLightVerticalAndLeft {\uchar{37}{036}} %%BOX DRAWINGS LIGHT VERTICAL AND LEFT
+\definecharacter UnicodeVerticalLightAndLeftHeavy {\uchar{37}{037}} %%BOX DRAWINGS VERTICAL LIGHT AND LEFT HEAVY
+\definecharacter UnicodeUpHeavyAndLeftDownLight {\uchar{37}{038}} %%BOX DRAWINGS UP HEAVY AND LEFT DOWN LIGHT
+\definecharacter UnicodeDownHeavyAndLeftUpLight {\uchar{37}{039}} %%BOX DRAWINGS DOWN HEAVY AND LEFT UP LIGHT
+\definecharacter UnicodeVerticalHeavyAndLeftLight {\uchar{37}{040}} %%BOX DRAWINGS VERTICAL HEAVY AND LEFT LIGHT
+\definecharacter UnicodeDownLightAndLeftUpHeavy {\uchar{37}{041}} %%BOX DRAWINGS DOWN LIGHT AND LEFT UP HEAVY
+\definecharacter UnicodeUpLightAndLeftDownHeavy {\uchar{37}{042}} %%BOX DRAWINGS UP LIGHT AND LEFT DOWN HEAVY
+\definecharacter UnicodeHeavyVerticalAndLeft {\uchar{37}{043}} %%BOX DRAWINGS HEAVY VERTICAL AND LEFT
+\definecharacter UnicodeLightDownAndHorizontal {\uchar{37}{044}} %%BOX DRAWINGS LIGHT DOWN AND HORIZONTAL
+\definecharacter UnicodeLeftHeavyAndRightDownLight {\uchar{37}{045}} %%BOX DRAWINGS LEFT HEAVY AND RIGHT DOWN LIGHT
+\definecharacter UnicodeRightHeavyAndLeftDownLight {\uchar{37}{046}} %%BOX DRAWINGS RIGHT HEAVY AND LEFT DOWN LIGHT
+\definecharacter UnicodeDownLightAndHorizontalHeavy {\uchar{37}{047}} %%BOX DRAWINGS DOWN LIGHT AND HORIZONTAL HEAVY
+\definecharacter UnicodeDownHeavyAndHorizontalLight {\uchar{37}{048}} %%BOX DRAWINGS DOWN HEAVY AND HORIZONTAL LIGHT
+\definecharacter UnicodeRightLightAndLeftDownHeavy {\uchar{37}{049}} %%BOX DRAWINGS RIGHT LIGHT AND LEFT DOWN HEAVY
+\definecharacter UnicodeLeftLightAndRightDownHeavy {\uchar{37}{050}} %%BOX DRAWINGS LEFT LIGHT AND RIGHT DOWN HEAVY
+\definecharacter UnicodeHeavyDownAndHorizontal {\uchar{37}{051}} %%BOX DRAWINGS HEAVY DOWN AND HORIZONTAL
+\definecharacter UnicodeLightUpAndHorizontal {\uchar{37}{052}} %%BOX DRAWINGS LIGHT UP AND HORIZONTAL
+\definecharacter UnicodeLeftHeavyAndRightUpLight {\uchar{37}{053}} %%BOX DRAWINGS LEFT HEAVY AND RIGHT UP LIGHT
+\definecharacter UnicodeRightHeavyAndLeftUpLight {\uchar{37}{054}} %%BOX DRAWINGS RIGHT HEAVY AND LEFT UP LIGHT
+\definecharacter UnicodeUpLightAndHorizontalHeavy {\uchar{37}{055}} %%BOX DRAWINGS UP LIGHT AND HORIZONTAL HEAVY
+\definecharacter UnicodeUpHeavyAndHorizontalLight {\uchar{37}{056}} %%BOX DRAWINGS UP HEAVY AND HORIZONTAL LIGHT
+\definecharacter UnicodeRightLightAndLeftUpHeavy {\uchar{37}{057}} %%BOX DRAWINGS RIGHT LIGHT AND LEFT UP HEAVY
+\definecharacter UnicodeLeftLightAndRightUpHeavy {\uchar{37}{058}} %%BOX DRAWINGS LEFT LIGHT AND RIGHT UP HEAVY
+\definecharacter UnicodeHeavyUpAndHorizontal {\uchar{37}{059}} %%BOX DRAWINGS HEAVY UP AND HORIZONTAL
+\definecharacter UnicodeLightVerticalAndHorizontal {\uchar{37}{060}} %%BOX DRAWINGS LIGHT VERTICAL AND HORIZONTAL
+\definecharacter UnicodeLeftHeavyAndRightVerticalLight {\uchar{37}{061}} %%BOX DRAWINGS LEFT HEAVY AND RIGHT VERTICAL LIGHT
+\definecharacter UnicodeRightHeavyAndLeftVerticalLight {\uchar{37}{062}} %%BOX DRAWINGS RIGHT HEAVY AND LEFT VERTICAL LIGHT
+\definecharacter UnicodeVerticalLightAndHorizontalHeavy {\uchar{37}{063}} %%BOX DRAWINGS VERTICAL LIGHT AND HORIZONTAL HEAVY
+\definecharacter UnicodeUpHeavyAndDownHorizontalLight {\uchar{37}{064}} %%BOX DRAWINGS UP HEAVY AND DOWN HORIZONTAL LIGHT
+\definecharacter UnicodeDownHeavyAndUpHorizontalLight {\uchar{37}{065}} %%BOX DRAWINGS DOWN HEAVY AND UP HORIZONTAL LIGHT
+\definecharacter UnicodeVerticalHeavyAndHorizontalLight {\uchar{37}{066}} %%BOX DRAWINGS VERTICAL HEAVY AND HORIZONTAL LIGHT
+\definecharacter UnicodeLeftUpHeavyAndRightDownLight {\uchar{37}{067}} %%BOX DRAWINGS LEFT UP HEAVY AND RIGHT DOWN LIGHT
+\definecharacter UnicodeRightUpHeavyAndLeftDownLight {\uchar{37}{068}} %%BOX DRAWINGS RIGHT UP HEAVY AND LEFT DOWN LIGHT
+\definecharacter UnicodeLeftDownHeavyAndRightUpLight {\uchar{37}{069}} %%BOX DRAWINGS LEFT DOWN HEAVY AND RIGHT UP LIGHT
+\definecharacter UnicodeRightDownHeavyAndLeftUpLight {\uchar{37}{070}} %%BOX DRAWINGS RIGHT DOWN HEAVY AND LEFT UP LIGHT
+\definecharacter UnicodeDownLightAndUpHorizontalHeavy {\uchar{37}{071}} %%BOX DRAWINGS DOWN LIGHT AND UP HORIZONTAL HEAVY
+\definecharacter UnicodeUpLightAndDownHorizontalHeavy {\uchar{37}{072}} %%BOX DRAWINGS UP LIGHT AND DOWN HORIZONTAL HEAVY
+\definecharacter UnicodeRightLightAndLeftVerticalHeavy {\uchar{37}{073}} %%BOX DRAWINGS RIGHT LIGHT AND LEFT VERTICAL HEAVY
+\definecharacter UnicodeLeftLightAndRightVerticalHeavy {\uchar{37}{074}} %%BOX DRAWINGS LEFT LIGHT AND RIGHT VERTICAL HEAVY
+\definecharacter UnicodeHeavyVerticalAndHorizontal {\uchar{37}{075}} %%BOX DRAWINGS HEAVY VERTICAL AND HORIZONTAL
+\definecharacter UnicodeLightDoubleDashHorizontal {\uchar{37}{076}} %%BOX DRAWINGS LIGHT DOUBLE DASH HORIZONTAL
+\definecharacter UnicodeHeavyDoubleDashHorizontal {\uchar{37}{077}} %%BOX DRAWINGS HEAVY DOUBLE DASH HORIZONTAL
+\definecharacter UnicodeLightDoubleDashVertical {\uchar{37}{078}} %%BOX DRAWINGS LIGHT DOUBLE DASH VERTICAL
+\definecharacter UnicodeHeavyDoubleDashVertical {\uchar{37}{079}} %%BOX DRAWINGS HEAVY DOUBLE DASH VERTICAL
+\definecharacter UnicodeDoubleHorizontal {\uchar{37}{080}} %%BOX DRAWINGS DOUBLE HORIZONTAL
+\definecharacter UnicodeDoubleVertical {\uchar{37}{081}} %%BOX DRAWINGS DOUBLE VERTICAL
+\definecharacter UnicodeDownSingleAndRightDouble {\uchar{37}{082}} %%BOX DRAWINGS DOWN SINGLE AND RIGHT DOUBLE
+\definecharacter UnicodeDownDoubleAndRightSingle {\uchar{37}{083}} %%BOX DRAWINGS DOWN DOUBLE AND RIGHT SINGLE
+\definecharacter UnicodeDoubleDownAndRight {\uchar{37}{084}} %%BOX DRAWINGS DOUBLE DOWN AND RIGHT
+\definecharacter UnicodeDownSingleAndLeftDouble {\uchar{37}{085}} %%BOX DRAWINGS DOWN SINGLE AND LEFT DOUBLE
+\definecharacter UnicodeDownDoubleAndLeftSingle {\uchar{37}{086}} %%BOX DRAWINGS DOWN DOUBLE AND LEFT SINGLE
+\definecharacter UnicodeDoubleDownAndLeft {\uchar{37}{087}} %%BOX DRAWINGS DOUBLE DOWN AND LEFT
+\definecharacter UnicodeUpSingleAndRightDouble {\uchar{37}{088}} %%BOX DRAWINGS UP SINGLE AND RIGHT DOUBLE
+\definecharacter UnicodeUpDoubleAndRightSingle {\uchar{37}{089}} %%BOX DRAWINGS UP DOUBLE AND RIGHT SINGLE
+\definecharacter UnicodeDoubleUpAndRight {\uchar{37}{090}} %%BOX DRAWINGS DOUBLE UP AND RIGHT
+\definecharacter UnicodeUpSingleAndLeftDouble {\uchar{37}{091}} %%BOX DRAWINGS UP SINGLE AND LEFT DOUBLE
+\definecharacter UnicodeUpDoubleAndLeftSingle {\uchar{37}{092}} %%BOX DRAWINGS UP DOUBLE AND LEFT SINGLE
+\definecharacter UnicodeDoubleUpAndLeft {\uchar{37}{093}} %%BOX DRAWINGS DOUBLE UP AND LEFT
+\definecharacter UnicodeVerticalSingleAndRightDouble {\uchar{37}{094}} %%BOX DRAWINGS VERTICAL SINGLE AND RIGHT DOUBLE
+\definecharacter UnicodeVerticalDoubleAndRightSingle {\uchar{37}{095}} %%BOX DRAWINGS VERTICAL DOUBLE AND RIGHT SINGLE
+\definecharacter UnicodeDoubleVerticalAndRight {\uchar{37}{096}} %%BOX DRAWINGS DOUBLE VERTICAL AND RIGHT
+\definecharacter UnicodeVerticalSingleAndLeftDouble {\uchar{37}{097}} %%BOX DRAWINGS VERTICAL SINGLE AND LEFT DOUBLE
+\definecharacter UnicodeVerticalDoubleAndLeftSingle {\uchar{37}{098}} %%BOX DRAWINGS VERTICAL DOUBLE AND LEFT SINGLE
+\definecharacter UnicodeDoubleVerticalAndLeft {\uchar{37}{099}} %%BOX DRAWINGS DOUBLE VERTICAL AND LEFT
+\definecharacter UnicodeDownSingleAndHorizontalDouble {\uchar{37}{100}} %%BOX DRAWINGS DOWN SINGLE AND HORIZONTAL DOUBLE
+\definecharacter UnicodeDownDoubleAndHorizontalSingle {\uchar{37}{101}} %%BOX DRAWINGS DOWN DOUBLE AND HORIZONTAL SINGLE
+\definecharacter UnicodeDoubleDownAndHorizontal {\uchar{37}{102}} %%BOX DRAWINGS DOUBLE DOWN AND HORIZONTAL
+\definecharacter UnicodeUpSingleAndHorizontalDouble {\uchar{37}{103}} %%BOX DRAWINGS UP SINGLE AND HORIZONTAL DOUBLE
+\definecharacter UnicodeUpDoubleAndHorizontalSingle {\uchar{37}{104}} %%BOX DRAWINGS UP DOUBLE AND HORIZONTAL SINGLE
+\definecharacter UnicodeDoubleUpAndHorizontal {\uchar{37}{105}} %%BOX DRAWINGS DOUBLE UP AND HORIZONTAL
+\definecharacter UnicodeVerticalSingleAndHorizontalDouble {\uchar{37}{106}} %%BOX DRAWINGS VERTICAL SINGLE AND HORIZONTAL DOUBLE
+\definecharacter UnicodeVerticalDoubleAndHorizontalSingle {\uchar{37}{107}} %%BOX DRAWINGS VERTICAL DOUBLE AND HORIZONTAL SINGLE
+\definecharacter UnicodeDoubleVerticalAndHorizontal {\uchar{37}{108}} %%BOX DRAWINGS DOUBLE VERTICAL AND HORIZONTAL
+\definecharacter UnicodeLightArcDownAndRight {\uchar{37}{109}} %%BOX DRAWINGS LIGHT ARC DOWN AND RIGHT
+\definecharacter UnicodeLightArcDownAndLeft {\uchar{37}{110}} %%BOX DRAWINGS LIGHT ARC DOWN AND LEFT
+\definecharacter UnicodeLightArcUpAndLeft {\uchar{37}{111}} %%BOX DRAWINGS LIGHT ARC UP AND LEFT
+\definecharacter UnicodeLightArcUpAndRight {\uchar{37}{112}} %%BOX DRAWINGS LIGHT ARC UP AND RIGHT
+\definecharacter UnicodeLightDiagonalUpperRightToLowerLeft {\uchar{37}{113}} %%BOX DRAWINGS LIGHT DIAGONAL UPPER RIGHT TO LOWER LEFT
+\definecharacter UnicodeLightDiagonalUpperLeftToLowerRight {\uchar{37}{114}} %%BOX DRAWINGS LIGHT DIAGONAL UPPER LEFT TO LOWER RIGHT
+\definecharacter UnicodeLightDiagonalCross {\uchar{37}{115}} %%BOX DRAWINGS LIGHT DIAGONAL CROSS
+\definecharacter UnicodeLightLeft {\uchar{37}{116}} %%BOX DRAWINGS LIGHT LEFT
+\definecharacter UnicodeLightUp {\uchar{37}{117}} %%BOX DRAWINGS LIGHT UP
+\definecharacter UnicodeLightRight {\uchar{37}{118}} %%BOX DRAWINGS LIGHT RIGHT
+\definecharacter UnicodeLightDown {\uchar{37}{119}} %%BOX DRAWINGS LIGHT DOWN
+\definecharacter UnicodeHeavyLeft {\uchar{37}{120}} %%BOX DRAWINGS HEAVY LEFT
+\definecharacter UnicodeHeavyUp {\uchar{37}{121}} %%BOX DRAWINGS HEAVY UP
+\definecharacter UnicodeHeavyRight {\uchar{37}{122}} %%BOX DRAWINGS HEAVY RIGHT
+\definecharacter UnicodeHeavyDown {\uchar{37}{123}} %%BOX DRAWINGS HEAVY DOWN
+\definecharacter UnicodeLightLeftAndHeavyRight {\uchar{37}{124}} %%BOX DRAWINGS LIGHT LEFT AND HEAVY RIGHT
+\definecharacter UnicodeLightUpAndHeavyDown {\uchar{37}{125}} %%BOX DRAWINGS LIGHT UP AND HEAVY DOWN
+\definecharacter UnicodeHeavyLeftAndLightRight {\uchar{37}{126}} %%BOX DRAWINGS HEAVY LEFT AND LIGHT RIGHT
+\definecharacter UnicodeHeavyUpAndLightDown {\uchar{37}{127}} %%BOX DRAWINGS HEAVY UP AND LIGHT DOWN
+\definecharacter UnicodeUpperHalfBlock {\uchar{37}{128}} %%UPPER HALF BLOCK
+\definecharacter UnicodeLowerOneEighthBlock {\uchar{37}{129}} %%LOWER ONE EIGHTH BLOCK
+\definecharacter UnicodeLowerOneQuarterBlock {\uchar{37}{130}} %%LOWER ONE QUARTER BLOCK
+\definecharacter UnicodeLowerThreeEighthsBlock {\uchar{37}{131}} %%LOWER THREE EIGHTHS BLOCK
+\definecharacter UnicodeLowerHalfBlock {\uchar{37}{132}} %%LOWER HALF BLOCK
+\definecharacter UnicodeLowerFiveEighthsBlock {\uchar{37}{133}} %%LOWER FIVE EIGHTHS BLOCK
+\definecharacter UnicodeLowerThreeQuartersBlock {\uchar{37}{134}} %%LOWER THREE QUARTERS BLOCK
+\definecharacter UnicodeLowerSevenEighthsBlock {\uchar{37}{135}} %%LOWER SEVEN EIGHTHS BLOCK
+\definecharacter UnicodeFullBlock {\uchar{37}{136}} %%FULL BLOCK
+\definecharacter UnicodeLeftSevenEighthsBlock {\uchar{37}{137}} %%LEFT SEVEN EIGHTHS BLOCK
+\definecharacter UnicodeLeftThreeQuartersBlock {\uchar{37}{138}} %%LEFT THREE QUARTERS BLOCK
+\definecharacter UnicodeLeftFiveEighthsBlock {\uchar{37}{139}} %%LEFT FIVE EIGHTHS BLOCK
+\definecharacter UnicodeLeftHalfBlock {\uchar{37}{140}} %%LEFT HALF BLOCK
+\definecharacter UnicodeLeftThreeEighthsBlock {\uchar{37}{141}} %%LEFT THREE EIGHTHS BLOCK
+\definecharacter UnicodeLeftOneQuarterBlock {\uchar{37}{142}} %%LEFT ONE QUARTER BLOCK
+\definecharacter UnicodeLeftOneEighthBlock {\uchar{37}{143}} %%LEFT ONE EIGHTH BLOCK
+\definecharacter UnicodeRightHalfBlock {\uchar{37}{144}} %%RIGHT HALF BLOCK
+\definecharacter UnicodeLightShade {\uchar{37}{145}} %%LIGHT SHADE
+\definecharacter UnicodeMediumShade {\uchar{37}{146}} %%MEDIUM SHADE
+\definecharacter UnicodeDarkShade {\uchar{37}{147}} %%DARK SHADE
+\definecharacter UnicodeUpperOneEighthBlock {\uchar{37}{148}} %%UPPER ONE EIGHTH BLOCK
+\definecharacter UnicodeRightOneEighthBlock {\uchar{37}{149}} %%RIGHT ONE EIGHTH BLOCK
+\definecharacter UnicodeQuadrantLowerLeft {\uchar{37}{150}} %%[Unassigned U+2596]
+\definecharacter UnicodeQuadrantLowerRight {\uchar{37}{151}} %%[Unassigned U+2597]
+\definecharacter UnicodeQuadrantUpperLeft {\uchar{37}{152}} %%[Unassigned U+2598]
+\definecharacter UnicodeQuadrantUpperLeftAndLowerLeftAndLowerRight {\uchar{37}{153}} %%[Unassigned U+2599]
+\definecharacter UnicodeQuadrantUpperLeftAndLowerRight {\uchar{37}{154}} %%[Unassigned U+259A]
+\definecharacter UnicodeQuadrantUpperLeftAndUpperRightandLowerLeft {\uchar{37}{155}} %%[Unassigned U+259B]
+\definecharacter UnicodeQuadrantUpperLeftAndUpperRightAndLowerRight {\uchar{37}{156}} %%[Unassigned U+259C]
+\definecharacter UnicodeQuadrantUpperRight {\uchar{37}{157}} %%[Unassigned U+259D]
+\definecharacter UnicodeQuadrantUpperRightAndLowerLeft {\uchar{37}{158}} %%[Unassigned U+259E]
+\definecharacter UnicodeQuadrantUpperRightAndLowerLeftAndLowerRight {\uchar{37}{159}} %%[Unassigned U+259F]
+\definecharacter UnicodeBlackSquare {\uchar{37}{160}} %%BLACK SQUARE
+\definecharacter UnicodeWhiteSquare {\uchar{37}{161}} %%WHITE SQUARE
+\definecharacter UnicodeWhiteSquareWithRoundedCorners {\uchar{37}{162}} %%WHITE SQUARE WITH ROUNDED CORNERS
+\definecharacter UnicodeWhiteSquareContainingBlackSmallSquare {\uchar{37}{163}} %%WHITE SQUARE CONTAINING BLACK SMALL SQUARE
+\definecharacter UnicodeSquareWithHorizontalFill {\uchar{37}{164}} %%SQUARE WITH HORIZONTAL FILL
+\definecharacter UnicodeSquareWithVerticalFill {\uchar{37}{165}} %%SQUARE WITH VERTICAL FILL
+\definecharacter UnicodeSquareWithOrthogonalCrosshatchFill {\uchar{37}{166}} %%SQUARE WITH ORTHOGONAL CROSSHATCH FILL
+\definecharacter UnicodeSquareWithUpperLeftToLowerRightFill {\uchar{37}{167}} %%SQUARE WITH UPPER LEFT TO LOWER RIGHT FILL
+\definecharacter UnicodeSquareWithUpperRightToLowerLeftFill {\uchar{37}{168}} %%SQUARE WITH UPPER RIGHT TO LOWER LEFT FILL
+\definecharacter UnicodeSquareWithDiagonalCrosshatchFill {\uchar{37}{169}} %%SQUARE WITH DIAGONAL CROSSHATCH FILL
+\definecharacter UnicodeBlackSmallSquare {\uchar{37}{170}} %%BLACK SMALL SQUARE
+\definecharacter UnicodeWhiteSmallSquare {\uchar{37}{171}} %%WHITE SMALL SQUARE
+\definecharacter UnicodeBlackRectangle {\uchar{37}{172}} %%BLACK RECTANGLE
+\definecharacter UnicodeWhiteRectangle {\uchar{37}{173}} %%WHITE RECTANGLE
+\definecharacter UnicodeBlackVerticalRectangle {\uchar{37}{174}} %%BLACK VERTICAL RECTANGLE
+\definecharacter UnicodeWhiteVerticalRectangle {\uchar{37}{175}} %%WHITE VERTICAL RECTANGLE
+\definecharacter UnicodeBlackParallelogram {\uchar{37}{176}} %%BLACK PARALLELOGRAM
+\definecharacter UnicodeWhiteParallelogram {\uchar{37}{177}} %%WHITE PARALLELOGRAM
+\definecharacter UnicodeBlackUpPointingTriangle {\uchar{37}{178}} %%BLACK UP-POINTING TRIANGLE
+\definecharacter UnicodeWhiteUpPointingTriangle {\uchar{37}{179}} %%WHITE UP-POINTING TRIANGLE
+\definecharacter UnicodeBlackUpPointingSmallTriangle {\uchar{37}{180}} %%BLACK UP-POINTING SMALL TRIANGLE
+\definecharacter UnicodeWhiteUpPointingSmallTriangle {\uchar{37}{181}} %%WHITE UP-POINTING SMALL TRIANGLE
+\definecharacter UnicodeBlackRightPointingTriangle {\uchar{37}{182}} %%BLACK RIGHT-POINTING TRIANGLE
+\definecharacter UnicodeWhiteRightPointingTriangle {\uchar{37}{183}} %%WHITE RIGHT-POINTING TRIANGLE
+\definecharacter UnicodeBlackRightPointingSmallTriangle {\uchar{37}{184}} %%BLACK RIGHT-POINTING SMALL TRIANGLE
+\definecharacter UnicodeWhiteRightPointingSmallTriangle {\uchar{37}{185}} %%WHITE RIGHT-POINTING SMALL TRIANGLE
+\definecharacter UnicodeBlackRightPointingPointer {\uchar{37}{186}} %%BLACK RIGHT-POINTING POINTER
+\definecharacter UnicodeWhiteRightPointingPointer {\uchar{37}{187}} %%WHITE RIGHT-POINTING POINTER
+\definecharacter UnicodeBlackDownPointingTriangle {\uchar{37}{188}} %%BLACK DOWN-POINTING TRIANGLE
+\definecharacter UnicodeWhiteDownPointingTriangle {\uchar{37}{189}} %%WHITE DOWN-POINTING TRIANGLE
+\definecharacter UnicodeBlackDownPointingSmallTriangle {\uchar{37}{190}} %%BLACK DOWN-POINTING SMALL TRIANGLE
+\definecharacter UnicodeWhiteDownPointingSmallTriangle {\uchar{37}{191}} %%WHITE DOWN-POINTING SMALL TRIANGLE
+\definecharacter UnicodeBlackLeftPointingTriangle {\uchar{37}{192}} %%BLACK LEFT-POINTING TRIANGLE
+\definecharacter UnicodeWhiteLeftPointingTriangle {\uchar{37}{193}} %%WHITE LEFT-POINTING TRIANGLE
+\definecharacter UnicodeBlackLeftPointingSmallTriangle {\uchar{37}{194}} %%BLACK LEFT-POINTING SMALL TRIANGLE
+\definecharacter UnicodeWhiteLeftPointingSmallTriangle {\uchar{37}{195}} %%WHITE LEFT-POINTING SMALL TRIANGLE
+\definecharacter UnicodeBlackLeftPointingPointer {\uchar{37}{196}} %%BLACK LEFT-POINTING POINTER
+\definecharacter UnicodeWhiteLeftPointingPointer {\uchar{37}{197}} %%WHITE LEFT-POINTING POINTER
+\definecharacter UnicodeBlackDiamond {\uchar{37}{198}} %%BLACK DIAMOND
+\definecharacter UnicodeWhiteDiamond {\uchar{37}{199}} %%WHITE DIAMOND
+\definecharacter UnicodeWhiteDiamondContainingBlackSmallDiamond {\uchar{37}{200}} %%WHITE DIAMOND CONTAINING BLACK SMALL DIAMOND
+\definecharacter UnicodeFisheye {\uchar{37}{201}} %%FISHEYE
+\definecharacter UnicodeLozenge {\uchar{37}{202}} %%LOZENGE
+\definecharacter UnicodeWhiteCircle {\uchar{37}{203}} %%WHITE CIRCLE
+\definecharacter UnicodeDottedCircle {\uchar{37}{204}} %%DOTTED CIRCLE
+\definecharacter UnicodeCircleWithVerticalFill {\uchar{37}{205}} %%CIRCLE WITH VERTICAL FILL
+\definecharacter UnicodeBullseye {\uchar{37}{206}} %%BULLSEYE
+\definecharacter UnicodeBlackCircle {\uchar{37}{207}} %%BLACK CIRCLE
+\definecharacter UnicodeCircleWithLeftHalfBlack {\uchar{37}{208}} %%CIRCLE WITH LEFT HALF BLACK
+\definecharacter UnicodeCircleWithRightHalfBlack {\uchar{37}{209}} %%CIRCLE WITH RIGHT HALF BLACK
+\definecharacter UnicodeCircleWithLowerHalfBlack {\uchar{37}{210}} %%CIRCLE WITH LOWER HALF BLACK
+\definecharacter UnicodeCircleWithUpperHalfBlack {\uchar{37}{211}} %%CIRCLE WITH UPPER HALF BLACK
+\definecharacter UnicodeCircleWithUpperRightQuadrantBlack {\uchar{37}{212}} %%CIRCLE WITH UPPER RIGHT QUADRANT BLACK
+\definecharacter UnicodeCircleWithAllButUpperLeftQuadrantBlack {\uchar{37}{213}} %%CIRCLE WITH ALL BUT UPPER LEFT QUADRANT BLACK
+\definecharacter UnicodeLeftHalfBlackCircle {\uchar{37}{214}} %%LEFT HALF BLACK CIRCLE
+\definecharacter UnicodeRightHalfBlackCircle {\uchar{37}{215}} %%RIGHT HALF BLACK CIRCLE
+\definecharacter UnicodeInverseBullet {\uchar{37}{216}} %%INVERSE BULLET
+\definecharacter UnicodeInverseWhiteCircle {\uchar{37}{217}} %%INVERSE WHITE CIRCLE
+\definecharacter UnicodeUpperHalfInverseWhiteCircle {\uchar{37}{218}} %%UPPER HALF INVERSE WHITE CIRCLE
+\definecharacter UnicodeLowerHalfInverseWhiteCircle {\uchar{37}{219}} %%LOWER HALF INVERSE WHITE CIRCLE
+\definecharacter UnicodeUpperLeftQuadrantCircularArc {\uchar{37}{220}} %%UPPER LEFT QUADRANT CIRCULAR ARC
+\definecharacter UnicodeUpperRightQuadrantCircularArc {\uchar{37}{221}} %%UPPER RIGHT QUADRANT CIRCULAR ARC
+\definecharacter UnicodeLowerRightQuadrantCircularArc {\uchar{37}{222}} %%LOWER RIGHT QUADRANT CIRCULAR ARC
+\definecharacter UnicodeLowerLeftQuadrantCircularArc {\uchar{37}{223}} %%LOWER LEFT QUADRANT CIRCULAR ARC
+\definecharacter UnicodeUpperHalfCircle {\uchar{37}{224}} %%UPPER HALF CIRCLE
+\definecharacter UnicodeLowerHalfCircle {\uchar{37}{225}} %%LOWER HALF CIRCLE
+\definecharacter UnicodeBlackLowerRightTriangle {\uchar{37}{226}} %%BLACK LOWER RIGHT TRIANGLE
+\definecharacter UnicodeBlackLowerLeftTriangle {\uchar{37}{227}} %%BLACK LOWER LEFT TRIANGLE
+\definecharacter UnicodeBlackUpperLeftTriangle {\uchar{37}{228}} %%BLACK UPPER LEFT TRIANGLE
+\definecharacter UnicodeBlackUpperRightTriangle {\uchar{37}{229}} %%BLACK UPPER RIGHT TRIANGLE
+\definecharacter UnicodeWhiteBullet {\uchar{37}{230}} %%WHITE BULLET
+\definecharacter UnicodeSquareWithLeftHalfBlack {\uchar{37}{231}} %%SQUARE WITH LEFT HALF BLACK
+\definecharacter UnicodeSquareWithRightHalfBlack {\uchar{37}{232}} %%SQUARE WITH RIGHT HALF BLACK
+\definecharacter UnicodeSquareWithUpperLeftDiagonalHalfBlack {\uchar{37}{233}} %%SQUARE WITH UPPER LEFT DIAGONAL HALF BLACK
+\definecharacter UnicodeSquareWithLowerRightDiagonalHalfBlack {\uchar{37}{234}} %%SQUARE WITH LOWER RIGHT DIAGONAL HALF BLACK
+\definecharacter UnicodeWhiteSquareWithVerticalBisectingLine {\uchar{37}{235}} %%WHITE SQUARE WITH VERTICAL BISECTING LINE
+\definecharacter UnicodeWhiteUpPointingTriangleWithDot {\uchar{37}{236}} %%WHITE UP-POINTING TRIANGLE WITH DOT
+\definecharacter UnicodeUpPointingTriangleWithLeftHalfBlack {\uchar{37}{237}} %%UP-POINTING TRIANGLE WITH LEFT HALF BLACK
+\definecharacter UnicodeUpPointingTriangleWithRightHalfBlack {\uchar{37}{238}} %%UP-POINTING TRIANGLE WITH RIGHT HALF BLACK
+\definecharacter UnicodeLargeCircle {\uchar{37}{239}} %%LARGE CIRCLE
+\definecharacter UnicodeWhiteSquareWithUpperLeftQuadrant {\uchar{37}{240}} %%WHITE SQUARE WITH UPPER LEFT QUADRANT
+\definecharacter UnicodeWhiteSquareWithLowerLeftQuadrant {\uchar{37}{241}} %%WHITE SQUARE WITH LOWER LEFT QUADRANT
+\definecharacter UnicodeWhiteSquareWithLowerRightQuadrant {\uchar{37}{242}} %%WHITE SQUARE WITH LOWER RIGHT QUADRANT
+\definecharacter UnicodeWhiteSquareWithUpperRightQuadrant {\uchar{37}{243}} %%WHITE SQUARE WITH UPPER RIGHT QUADRANT
+\definecharacter UnicodeWhiteCircleWithUpperLeftQuadrant {\uchar{37}{244}} %%WHITE CIRCLE WITH UPPER LEFT QUADRANT
+\definecharacter UnicodeWhiteCircleWithLowerLeftQuadrant {\uchar{37}{245}} %%WHITE CIRCLE WITH LOWER LEFT QUADRANT
+\definecharacter UnicodeWhiteCircleWithLowerRightQuadrant {\uchar{37}{246}} %%WHITE CIRCLE WITH LOWER RIGHT QUADRANT
+\definecharacter UnicodeWhiteCircleWithUpperRightQuadrant {\uchar{37}{247}} %%WHITE CIRCLE WITH UPPER RIGHT QUADRANT
+\definecharacter UnicodeUpperLeftTriangle {\uchar{37}{248}} %%[Unassigned U+25F8]
+\definecharacter UnicodeUpperRightTriangle {\uchar{37}{249}} %%[Unassigned U+25F9]
+\definecharacter UnicodeLowerLeftTriangle {\uchar{37}{250}} %%[Unassigned U+25FA]
+\definecharacter UnicodeWhiteMediumSquare {\uchar{37}{251}} %%[Unassigned U+25FB]
+\definecharacter UnicodeBlackMediumSquare {\uchar{37}{252}} %%[Unassigned U+25FC]
+\definecharacter UnicodeWhiteMediumSmallSquare {\uchar{37}{253}} %%[Unassigned U+25FD]
+\definecharacter UnicodeBlackMediumSmallSquare {\uchar{37}{254}} %%[Unassigned U+25FE]
+\definecharacter UnicodeLowerRightTriangle {\uchar{37}{255}} %%[Unassigned U+25FF]
+
+\stopencoding
+
+\endinput
+
diff --git a/tex/context/base/m-cweb.tex b/tex/context/base/m-cweb.tex
index 65184ddae..1d3455acf 100644
--- a/tex/context/base/m-cweb.tex
+++ b/tex/context/base/m-cweb.tex
@@ -224,9 +224,9 @@
%D The original macros are based on a 10~point bodyfont size. We
%D therefore have to specify dimension in points a bit
%D different. Specifications like .6pt are changed to
-%D \type{.06} times \type{\korpsgrootte}.
+%D \type{.06} times \type{\bodyfontsize}.
-\defCWEBmacro\CWEBpt {\korpsgrootte} % still dutch
+\defCWEBmacro\CWEBpt {\bodyfontsize} % still dutch
%D \macros{CEE,UNIX,TEX,CPLUSPLUS}{}
%D
diff --git a/tex/context/base/mult-con.tex b/tex/context/base/mult-con.tex
index cf3da58b2..3ed401edb 100644
--- a/tex/context/base/mult-con.tex
+++ b/tex/context/base/mult-con.tex
@@ -2136,6 +2136,10 @@ subsubsubsubsubsubject: subsubsubsubsubonderwerp subsubsubsubsub
endfassung finalni
finale final
final
+ float: blok float
+ gleitobjekt plvouciobjekt
+ oggettomobile obiectmobil
+ flottant
depth: diepte depth
tiefe podlehloubky
profondita adancime
diff --git a/tex/context/base/page-bck.tex b/tex/context/base/page-bck.tex
index 22596001d..9dcc920ad 100644
--- a/tex/context/base/page-bck.tex
+++ b/tex/context/base/page-bck.tex
@@ -524,7 +524,7 @@
\setupbackgrounds
[\v!paper,\v!page,\v!leftpage,\v!rightpage]
[\c!frame=\v!off,
- \c!radius=.5\korpsgrootte,
+ \c!radius=.5\bodyfontsize,
\c!corner=\v!rectangular,
\c!background=,
\c!screen=\@@rsscreen,
diff --git a/tex/context/base/page-flt.tex b/tex/context/base/page-flt.tex
index a19c326a3..8e4c16e36 100644
--- a/tex/context/base/page-flt.tex
+++ b/tex/context/base/page-flt.tex
@@ -557,8 +557,8 @@
{\presetlocalframed[\??fl#1]%
\setupfloat
[#1]
- [\c!width=8\lineheight, % 15\korpsgrootte,
- \c!height=6\lineheight, % 10\korpsgrootte,
+ [\c!width=8\lineheight, % 15\bodyfontsize,
+ \c!height=6\lineheight, % 10\bodyfontsize,
\c!minwidth=,
\c!maxwidth=,
\c!maxheight=,
@@ -1339,7 +1339,7 @@
\def\addlocalbackgroundtobox{\resetglobal\gobbleoneargument}%
\fi
-\def\captionminwidth {15\korpsgrootte}
+\def\captionminwidth {15\bodyfontsize}
\def\captionovershoot {2em}
\def\dopreparenocaption#1#2#3#4%
@@ -2068,7 +2068,7 @@
\c!height=\v!fit,
\c!offset=\v!overlay,
\c!frame=\v!off,
- \c!radius=.5\korpsgrootte,
+ \c!radius=.5\bodyfontsize,
\c!corner=\v!rectangular,
\c!background=,
\c!backgroundscreen=\@@rsscreen,
diff --git a/tex/context/base/page-lin.tex b/tex/context/base/page-lin.tex
index dfb99ca95..9a18347a0 100644
--- a/tex/context/base/page-lin.tex
+++ b/tex/context/base/page-lin.tex
@@ -200,12 +200,39 @@
\newevery \everylinenumber \relax
+% \def\dodoplacelinenumber
+% {% beware of em's, the font is already switched !
+% \setbox\scratchbox\hbox
+% {\setbox0\hbox{\@@rncommand{\completelinenumber}}\vsmashbox0%
+% \ifcase\linenumberlocation
+% \rlap{\hbox to \@@rnwidth{\box0\hss}}% was \llap, nog testen !!
+% \or
+% \inleftmargin
+% {\forgetall
+% \doifelse\@@rnwidth\v!margin
+% {\hsize\leftmarginwidth}{\hsize\@@rnwidth}%
+% \alignedline\@@rnalign\v!right{\box0\hskip\@@rndistance}}%
+% \else
+% \inrightmargin
+% {\forgetall
+% \doifelse\@@rnwidth\v!margin
+% {\hsize\rightmarginwidth}{\hsize\@@rnwidth}%
+% \alignedline\@@rnalign\v!left{\hskip\@@rndistance\box0}}%
+% \fi}%
+% \vsmashbox\scratchbox
+% \box\scratchbox
+% \the\everylinenumber}
+
\def\dodoplacelinenumber
{% beware of em's, the font is already switched !
\setbox\scratchbox\hbox
{\setbox0\hbox{\@@rncommand{\completelinenumber}}\vsmashbox0%
\ifcase\linenumberlocation
- \rlap{\hbox to \@@rnwidth{\box0\hss}}% was \llap, nog testen !!
+ \iftypesettinglines % hack
+ \expandafter\llap
+ \else
+ \expandafter\rlap
+ \fi{\hbox to \@@rnwidth{\box0\hss}}% was \llap, nog testen !!
\or
\inleftmargin
{\forgetall
@@ -240,9 +267,12 @@
% \v!text=>\chardef\linenumberlocation\zerocount,
%\s!unknown=>\chardef\linenumberlocation\zerocount,
%\s!default=>\chardef\linenumberlocation\zerocount]%
- \ifcase\linenumberlocation % text
- \advance\leftskip \@@rnwidth\relax
- \fi
+ \doifnot\@@rnwidth\v!margin
+ {\freezedimenmacro\@@rnwidth
+ \ifcase\linenumberlocation % text
+ \advance\leftskip\@@rnwidth\relax
+ \fi}%
+ \freezedimenmacro\@@rndistance
\chardef\@@rn@@rnmethod
\ifprocessingverbatim\zerocount\else\iftypesettinglines\plusone\else\plustwo\fi\fi
\processaction
@@ -431,7 +461,7 @@
\newcount\internalparagraphnumber
-\def\setupparagraphnumbering%
+\def\setupparagraphnumbering
{\dosingleempty\dosetupparagraphnumbering}
\def\dosetupparagraphnumbering[#1]%
diff --git a/tex/context/base/page-lyr.tex b/tex/context/base/page-lyr.tex
index fc5a17317..727bbec3f 100644
--- a/tex/context/base/page-lyr.tex
+++ b/tex/context/base/page-lyr.tex
@@ -724,8 +724,8 @@
{\doifelselayerdata{OTRTEXT}
{\setbox#1\hbox to \makeupwidth
{\startoverlay
+ {\tightlayer[OTRTEXT]} % first, otherwise problems with toc
{\normalsettextpagecontent{#1}{#2}{#3}\box#1}
- {\tightlayer[OTRTEXT]}
\stopoverlay}%
\dp#1\zeropoint}%
{\normalsettextpagecontent{#1}{#2}{#3}}}
diff --git a/tex/context/base/page-mul.tex b/tex/context/base/page-mul.tex
index c68a4dcf2..0a8a5c75b 100644
--- a/tex/context/base/page-mul.tex
+++ b/tex/context/base/page-mul.tex
@@ -27,7 +27,7 @@
\let\OTRMULsetvsize \OTRONEsetvsize
\let\OTRMULsethsize \OTRONEsethsize
\let\OTRMULdopagecontents \OTRONEdopagecontents
-\let\OTRMULfinalsidefloatoutput\OTRONEfinalsidefloatoutput
+\let\OTRMULfinalsidefloatoutput\OTRONEfinalsidefloatoutput % ???
\let\OTRMULflushfloatbox \OTRONEflushfloatbox
\let\OTRMULdosettopinserts \relax
@@ -37,6 +37,9 @@
\let\OTRMULdosetbothinserts \relax
\let\OTRMULflushsavedfloats \relax
+\let\OTRMULflushsidefloats \forgetsidefloats % \relax
+\let\OTRMULsynchronizesidefloats\forgetsidefloats % \relax
+
\newtoks \OTRMULoutput
\def\OTRMULgotonextpage
@@ -632,6 +635,8 @@
\edef\maxcolumndepth{\the\dp\currentcolumnbox}%
\fi}}
+\chardef\columnedtopflushmethod\plusone
+
\def\flushcolumnedpage
{\bgroup
\forgetall
@@ -698,14 +703,26 @@
\global\precolumnboxheight\zeropoint
\setvsize
\dosomebreak\nobreak
- % wrong, but keep it as a reminder
- % \ifgridsnapping \else
- % \scratchdimen\topskip
- % \advance\scratchdimen -\openstrutheight
- % \nointerlineskip
- % \vskip-\scratchdimen
- % \fi
- % so that we don't add it again
+ \ifgridsnapping \else
+ \ifcase\columnedtopflushmethod
+ % sometimes method 1 goes wrong, so we need a way out; best sort this out
+ % when we run into it again
+ \or
+ % \input tufte \startcolumns \showbaselines \input tufte \stopcolumns \input tufte
+ \scratchdimen\topskip
+ \advance\scratchdimen -\openstrutheight
+ \nointerlineskip
+ \vskip-\scratchdimen
+ \or
+ % untested but maybe handy
+ \scratchdimen\topskip
+ \advance\scratchdimen -\openstrutheight
+ \nointerlineskip
+ \vskip-\scratchdimen
+ \vskip-\lineheight
+ \vbox{\strut}%
+ \fi
+ \fi
\prevdepth\openstrutdepth
\nointerlineskip
\dp\columnpagebox\zeropoint
@@ -984,7 +1001,7 @@
\getmulticolumnlines
\dimen0=\nofcolumnlines\openlineheight
\dohandleallcolumns
- {\splitcurrentcolumn from \box\normalpagebox to \dimen0}
+ {\splitcurrentcolumn from \box\normalpagebox to \dimen0}%
\setbox\restofpage\vbox{\unvbox\normalpagebox}%
\ifinheritcolumns
\ifr@ggedbottom % vreemd
@@ -1038,6 +1055,8 @@
%D \type{\box4} garantees a more robust check when skips are
%D used.
+\def\multicolumnsbalancemax{250} % 100 is too small when floats are involved
+
\def\balancedmulticolumnsout
{\bgroup
\setmulticolumnsout
@@ -1083,49 +1102,58 @@
\dimen2=\onepoint % RUBISH
\dimen2=\spacingfactor\dimen2
\fi
- \loop
- \advance\count255 \plusone
- \global\setbox\restofpage\copy0\relax
- \splitfirstcolumn from \box\restofpage to \dimen0
- \dohandlemidcolumns
- {\splitcurrentcolumn from \box\restofpage to \dimen0}%
- \splitlastcolumn from \box\restofpage to \dimen0
- \setbox2\vbox{\unvcopy\firstcolumnbox}%
- \dimen4\zeropoint
- \dohandleallcolumns
- {\setbox4\vbox
- {\unvcopy\currentcolumnbox
- %rather new, test this on pdftex-z.tex
- \unpenalty\unskip\unpenalty\unskip}% maybe better in main splitter
- %\writestatus{balance}{\the\currentcolumnbox: \the\ht4}%
- \dimen6\ht4
- \ifdim\dimen6>\dimen4 \dimen4=\dimen6 \fi}%
- \advance\dimen4 -.0005pt % get rid of accurracy problem, pretty new
- \ifnum\count255>100
- \donefalse
- \else\ifdim\dimen4>\ht2
- \donetrue
- \else
- \donefalse
- \fi\fi
- \ifdone
- \advance\dimen0 \dimen2\relax
- \repeat
+ \doloop
+ {\advance\count255 \plusone
+ \global\setbox\restofpage\copy0\relax
+ \splitfirstcolumn from \box\restofpage to \dimen0
+ \dohandlemidcolumns
+ {\splitcurrentcolumn from \box\restofpage to \dimen0}%
+ \splitlastcolumn from \box\restofpage to \dimen0
+ \setbox2\vbox{\unvcopy\firstcolumnbox}%
+ \dimen4\zeropoint
+ \dohandleallcolumns
+ {\setbox4\vbox
+ {\unvcopy\currentcolumnbox
+ %rather new, test this on pdftex-z.tex
+ \unpenalty\unskip\unpenalty\unskip}% maybe better in main splitter
+ %\writestatus{balance}{\the\currentcolumnbox: \the\ht4}%
+% \dimen6\ht4 \ifdim\dimen6>\dimen4 \dimen4=\dimen6 \fi}%
+ \ifdim\ht4>\dimen4 \dimen4=\ht4 \fi}%
+ \advance\dimen4 -.0005pt % get rid of accurracy problem, pretty new
+ \ifnum\count255>\multicolumnsbalancemax\relax
+ \exitloop
+ \else\ifdim\dimen4>\ht2
+ \advance\dimen0 \dimen2\relax
+ \else
+ \exitloop
+ \fi\fi}%
\dohandleallcolumns
{\global\setbox\currentcolumnbox\vbox{\unvcopy\currentcolumnbox}}% NIEUW
- \ifnum\count255>100\relax
+ \ifnum\count255>\multicolumnsbalancemax\relax
\showmessage\m!columns7\empty
\else
\showmessage\m!columns8{\the\count255\space}%
\fi
\egroup
\ifinheritcolumns
- \dimen0\ht\firstcolumnbox
- \dimen2\ht\firstcolumnbox
+ % We cannot assume that the first column is the tallest, if
+ % only because we may have an aborted balance (one line in the
+ % first column and a graphic in the second one).
+ %
+ % \dimen0\ht\firstcolumnbox
+ % \dimen2\ht\firstcolumnbox
+ %
+ \dimen0=\zeropoint
+ \dohandleallcolumns
+ {\ifdim\ht\currentcolumnbox>\dimen0
+ \dimen0=\ht\currentcolumnbox
+ \fi}%
+ \dimen2\dimen0
+ % so far
\advance\dimen2 -\openlineheight
\dohandleallcolumns
{\dimen4\ht\currentcolumnbox
- \dimen6=10\openlineheight
+ \dimen6=10\openlineheight % funny value
\global\setbox\currentcolumnbox\vbox to \dimen0
{\unvbox\currentcolumnbox
\ifdim\dimen4>\dimen6
@@ -1175,7 +1203,11 @@
\global\output{\balancingerror}%
\b@selinebottomtrue % forces depth in separation rule
\flushcolumnedpage
+\ifdim\pagetotal>\textheight
+ \eject % new
+\else
\allowbreak
+\fi
\egroup}
%D The multicolumn mechanism is incorporated in a \CONTEXT\
@@ -1238,8 +1270,7 @@
\let\flushcolumnfloats\noflushcolumnfloats}
\def\setlocalcolumnfloats
- {\everypar
- {\flushnotes\flushcolumnfloat\flushmargincontents\checkindentation}%
+ {\everypar{\flushnotes\flushcolumnfloat\flushmargincontents\checkindentation}%
\let\flushcolumnfloat\doflushcolumnfloat
%\let\doroomfloat\docolumnroomfloat
\let\docheckiffloatfits\docolumnroomfloat
@@ -1490,6 +1521,24 @@
\egroup
\fi}
+%D The next macro can be used to flush floats in the current
+%D stream. No width checking is (yet) done.
+
+\def\insertcolumnfloats
+ {\doloop
+ {\ifsomefloatwaiting
+ \bgroup
+ \forgetall
+ % no check for width
+ \dogetfloat
+ \blank[\@@bkspacebefore]
+ \snaptogrid\vbox{\copy\floatbox}
+ \blank[\@@bkspaceafter]
+ \egroup
+ \else
+ \exitloop
+ \fi}}
+
%D This were the multi||column routines. They can and need to
%D be improved but at the moment their behaviour is acceptable.
%D
@@ -1632,9 +1681,9 @@
{\goodbreak}
\installcolumnbreakhandler {MUL} \v!yes
- {\par % todo: since
+ {\par % todo: since
{\testrulewidth\zeropoint\ruledvskip\textheight} % we misuse a
- \penalty-200 % side effect
+ \penalty-200 % side effect
\vskip-\textheight
\prevdepth-\thousandpoint} % signals top of column to \blank
@@ -1645,14 +1694,14 @@
\c!direction=\v!right,
\c!rule=\v!off,
\c!tolerance=\v!tolerant,
- \c!distance=1.5\korpsgrootte, % influenced by switching
+ \c!distance=1.5\bodyfontsize, % influenced by switching
\c!height=,
\c!balance=\v!yes,
\c!align=\v!text,
\c!blank={\v!line,\v!fixed},
\c!option=,
\c!rulethickness=\linewidth,
- \c!offset=.5\korpsgrootte]
+ \c!offset=.5\bodyfontsize]
%D Undocumented and still under development.
@@ -1663,7 +1712,7 @@
{\bgroup
\nopenalties
\getparameters[\??kl]
- [\c!width=\hsize,\c!distance=1.5\korpsgrootte,%
+ [\c!width=\hsize,\c!distance=1.5\bodyfontsize,%
\c!n=2,\c!lines=0,#1]%
\let\rigidcolumnlines\@@kllines
\setrigidcolumnhsize\@@klwidth\@@kldistance\@@kln
diff --git a/tex/context/base/page-set.tex b/tex/context/base/page-set.tex
index 3aa1b0dc5..5e295b82d 100644
--- a/tex/context/base/page-set.tex
+++ b/tex/context/base/page-set.tex
@@ -52,6 +52,9 @@
\def\@otr@{otr}
+\let\OTRSETflushsidefloats \forgetsidefloats % \relax
+\let\OTRSETsynchronizesidefloats\forgetsidefloats % \relax
+
\def\OTRSETgridcell #1#2{\csname \@otr@:\number#1:\number#2\endcsname}
\def\OTRSETgetgridcell#1#2{\box\csname \@otr@:\number#1:\number#2\endcsname}
\def\OTRSETsetgridcell#1#2{\global\setbox\csname\@otr@:\number#1:\number#2\endcsname}
diff --git a/tex/context/base/page-sid.tex b/tex/context/base/page-sid.tex
index 882464fc3..e67f3e50f 100644
--- a/tex/context/base/page-sid.tex
+++ b/tex/context/base/page-sid.tex
@@ -864,4 +864,22 @@
\kern-\!!counta\baselineskip
\penalty\zerocount }
+% We need to hook it into the other otr's. This code will move.
+
+\let\OTRONEflushsidefloats \flushsidefloats
+\let\OTRONEsynchronizesidefloats\synchronizesidefloats
+
+% page-set
+%
+% \let\OTRSETflushsidefloats \forgetsidefloats
+% \let\OTRSETsynchronizesidefloats\forgetsidefloats
+
+% page-mul
+%
+% \let\OTRMULflushsidefloats \forgetsidefloats
+% \let\OTRMULsynchronizesidefloats\forgetsidefloats
+
+\def\synchronizesidefloats{\OTRcommand\synchronizesidefloats}
+\def\flushsidefloats {\OTRcommand\flushsidefloats}
+
\protect \endinput
diff --git a/tex/context/base/prop-lay.tex b/tex/context/base/prop-lay.tex
index 749848fa8..a5f43dc13 100644
--- a/tex/context/base/prop-lay.tex
+++ b/tex/context/base/prop-lay.tex
@@ -36,11 +36,15 @@
{0}% type (1=frozen)
{\printviewerlayer}}% 1=printable
+\let\currentlayerproperty\empty
+
\def\startlayerproperty
- {\dostartviewerlayer\currentproperty}
+ {\let\currentlayerproperty\currentproperty
+ \dostartviewerlayer\currentproperty}
\def\stoplayerproperty
- {\dostopviewerlayer}
+ {\dostopviewerlayer
+ \let\currentlayerproperty\previousproperty}
\setglobalsystemreference \rt!exec \v!HideLayer {hidelayer}
\setglobalsystemreference \rt!exec \v!VideLayer {videlayer}
diff --git a/tex/context/base/regi-utf.tex b/tex/context/base/regi-utf.tex
index 96f1a4061..fe7b0b958 100644
--- a/tex/context/base/regi-utf.tex
+++ b/tex/context/base/regi-utf.tex
@@ -17,6 +17,18 @@
%D instead of a active token handler because here we don't want
%D the \type {{}}. We only support this in \ETEX.
+% ÀÁÂÃÄÅàáâãäå
+% ÆÇæç
+% ÈÉÊËèéêë
+% ÌÍÎÏÞìíîïþ
+% Ðð
+% Ññ
+% ÒÓÔÕÖòóôõö
+% Øø
+% ÙÚÛÜùúû
+% Ýýÿ
+% ß
+
\beginTEX
\expandafter \endinput
\endTEX
diff --git a/tex/context/base/spec-dpx.tex b/tex/context/base/spec-dpx.tex
index 161cee303..3c0d45897 100644
--- a/tex/context/base/spec-dpx.tex
+++ b/tex/context/base/spec-dpx.tex
@@ -412,13 +412,13 @@
\scratchdimen#4\edef\height{\the\scratchdimen\space}%
\setbox\nextbox\vbox
{\special{pdf:bxobj @#1::#2 width \width height \height}%
- % we need to compensate for the box offset (ugly, sigh)
- \scratchdimen\nextboxht
- \advance\scratchdimen\nextboxdp
- \advance\scratchdimen-#4\relax
- \nextboxdp\zeropoint
- \nextboxht\zeropoint
- \hbox to #3{\hss\lower.5\scratchdimen\box\nextbox\hss}%
+ % we need to compensate for the box offset (ugly, sigh)
+ \scratchdimen\nextboxht
+ \advance\scratchdimen\nextboxdp
+ \advance\scratchdimen-#4\relax
+ \nextboxdp\zeropoint
+ \nextboxht\zeropoint
+ \hbox to #3{\hss\lower.5\scratchdimen\box\nextbox\hss}%
\ifx\currentPDFresources\empty
\else
\special{pdf:put @resources <<\currentPDFresources\the\pdfpageresources>>}%
@@ -753,9 +753,9 @@
{\vbox to \zeropoint
{\vss
\hbox to \zeropoint
- {\special{pdf:btrans matrix #1 #2 #3 #4 #5 #6}%
+ {\special{pdf:btrans matrix #1 #2 #3 #4 #5 #6}%
\rlap{\special{pdf:image width 1bp height 1bp (#7)}}
- \special{pdf:etrans}\hss}}}
+ \special{pdf:etrans}\hss}}}
{\message{[unknown figure #7]}}}
%D 5. Modified codes from \type{supp-pdf}
@@ -809,7 +809,7 @@
\vss\hbox to #4\scaledpoint{\hss\box\scratchbox\hss}\vss
\else
%\vss\box\scratchbox
- \vss\hbox to #4\scaledpoint{\box\scratchbox\hss}
+ \vss\hbox to #4\scaledpoint{\box\scratchbox\hss}%
\fi\fi}}%
\box\scratchbox
\elabelgroup}
diff --git a/tex/context/base/spec-tpd.tex b/tex/context/base/spec-tpd.tex
index f6c7097bc..a69cfff09 100644
--- a/tex/context/base/spec-tpd.tex
+++ b/tex/context/base/spec-tpd.tex
@@ -97,7 +97,7 @@
%D bitmap fonts (when asked for).
\ifx\pdfimageresolution\undefined \newcount\pdfimageresolution \fi
-\ifx\pdfimageresolution\undefined \newcount\pdfpkresolution \fi
+\ifx\pdfpkresolution \undefined \newcount\pdfpkresolution \fi
\pdfimageresolution=300
\pdfpkresolution =600
diff --git a/tex/context/base/supp-mis.tex b/tex/context/base/supp-mis.tex
index 7ad444695..9ab55142f 100644
--- a/tex/context/base/supp-mis.tex
+++ b/tex/context/base/supp-mis.tex
@@ -23,12 +23,14 @@
\def\StartLatexHack
{\edef\StopLatexHack
{\catcode`\noexpand/=\the\catcode`/
+ \catcode`\noexpand-=\the\catcode`-
\catcode`\noexpand:=\the\catcode`:
\catcode`\noexpand;=\the\catcode`;
\catcode`\noexpand"=\the\catcode`"
\catcode`\noexpand<=\the\catcode`<
\catcode`\noexpand>=\the\catcode`>}%
- \catcode`/=12 \catcode`:=12 \catcode`;=12
+ \catcode`/=12 \catcode`-=12
+ \catcode`:=12 \catcode`;=12
\catcode`"=12 \catcode`<=12 \catcode`>=12 }
%D This hack is needed especially for \LATEX\ users who use
diff --git a/tex/context/base/supp-mpe.tex b/tex/context/base/supp-mpe.tex
index 23a2410ab..04ee0a813 100644
--- a/tex/context/base/supp-mpe.tex
+++ b/tex/context/base/supp-mpe.tex
@@ -175,7 +175,8 @@
\fi}
\def\handleMPspecialscommentx #1 % version 2
- {\doifelse{#1}{10000}{\settrue\manyMPspecials}{\setfalse\manyMPspecials}% local
+% {\doifelsedoifelse{#1}{10000}{\settrue\manyMPspecials}{\setfalse\manyMPspecials}% local
+ {\ifnum10000=0#1\relax\settrue\manyMPspecials\else\setfalse\manyMPspecials\fi
\handleMPsequence}
% one can say (in meta-ini):
diff --git a/tex/context/base/supp-vis.tex b/tex/context/base/supp-vis.tex
index 95cee5176..efe47751f 100644
--- a/tex/context/base/supp-vis.tex
+++ b/tex/context/base/supp-vis.tex
@@ -1869,10 +1869,10 @@
%D
%D Beware, it's a macro not a \DIMENSION.
-\ifx\korpsgrootte\undefined
+\ifx\bodyfontsize\undefined
\edef\defaulttestrulewidth{\the\testrulewidth}
\else
- \def\defaulttestrulewidth{.02\korpsgrootte} % still dutch
+ \def\defaulttestrulewidth{.02\bodyfontsize} % still dutch
\fi
\def\showmakeup
diff --git a/tex/context/base/unic-037.tex b/tex/context/base/unic-037.tex
new file mode 100644
index 000000000..87f655a68
--- /dev/null
+++ b/tex/context/base/unic-037.tex
@@ -0,0 +1,278 @@
+%D \module
+%D [ file=unic-037,
+%D version=2006.02.13,
+%D title=\CONTEXT\ \UNICODE\ Macros,
+%D subtitle=Vector 37,
+%D author=Luigi Scarso,
+%D date=\currentdate,
+%D copyright={PRAGMA}]
+%C
+%C This module is part of the \CONTEXT\ macro||package and is
+%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
+%C details.
+
+\unprotect
+
+\startunicodevector 37
+ \expandafter\strippedcsname
+ \ifcase\numexpr #1+1\relax\or %%
+ \UnicodeLightHorizontal\or
+ \UnicodeHeavyHorizontal\or
+ \UnicodeLightVertical\or
+ \UnicodeHeavyVertical\or
+ \UnicodeLightTripleDashHorizontal\or
+ \UnicodeHeavyTripleDashHorizontal\or
+ \UnicodeLightTripleDashVertical\or
+ \UnicodeHeavyTripleDashVertical\or
+ \UnicodeLightQuadrupleDashHorizontal\or
+ \UnicodeHeavyQuadrupleDashHorizontal\or
+ \UnicodeLightQuadrupleDashVertical\or
+ \UnicodeHeavyQuadrupleDashVertical\or
+ \UnicodeLightDownAndRight\or
+ \UnicodeDownLightAndRightHeavy\or
+ \UnicodeDownHeavyAndRightLight\or
+ \UnicodeHeavyDownAndRight\or
+ \UnicodeLightDownAndLeft\or
+ \UnicodeDownLightAndLeftHeavy\or
+ \UnicodeDownHeavyAndLeftLight\or
+ \UnicodeHeavyDownAndLeft\or
+ \UnicodeLightUpAndRight\or
+ \UnicodeUpLightAndRightHeavy\or
+ \UnicodeUpHeavyAndRightLight\or
+ \UnicodeHeavyUpAndRight\or
+ \UnicodeLightUpAndLeft\or
+ \UnicodeUpLightAndLeftHeavy\or
+ \UnicodeUpHeavyAndLeftLight\or
+ \UnicodeHeavyUpAndLeft\or
+ \UnicodeLightVerticalAndRight\or
+ \UnicodeVerticalLightAndRightHeavy\or
+ \UnicodeUpHeavyAndRightDownLight\or
+ \UnicodeDownHeavyAndRightUpLight\or
+ \UnicodeVerticalHeavyAndRightLight\or
+ \UnicodeDownLightAndRightUpHeavy\or
+ \UnicodeUpLightAndRightDownHeavy\or
+ \UnicodeHeavyVerticalAndRight\or
+ \UnicodeLightVerticalAndLeft\or
+ \UnicodeVerticalLightAndLeftHeavy\or
+ \UnicodeUpHeavyAndLeftDownLight\or
+ \UnicodeDownHeavyAndLeftUpLight\or
+ \UnicodeVerticalHeavyAndLeftLight\or
+ \UnicodeDownLightAndLeftUpHeavy\or
+ \UnicodeUpLightAndLeftDownHeavy\or
+ \UnicodeHeavyVerticalAndLeft\or
+ \UnicodeLightDownAndHorizontal\or
+ \UnicodeLeftHeavyAndRightDownLight\or
+ \UnicodeRightHeavyAndLeftDownLight\or
+ \UnicodeDownLightAndHorizontalHeavy\or
+ \UnicodeDownHeavyAndHorizontalLight\or
+ \UnicodeRightLightAndLeftDownHeavy\or
+ \UnicodeLeftLightAndRightDownHeavy\or
+ \UnicodeHeavyDownAndHorizontal\or
+ \UnicodeLightUpAndHorizontal\or
+ \UnicodeLeftHeavyAndRightUpLight\or
+ \UnicodeRightHeavyAndLeftUpLight\or
+ \UnicodeUpLightAndHorizontalHeavy\or
+ \UnicodeUpHeavyAndHorizontalLight\or
+ \UnicodeRightLightAndLeftUpHeavy\or
+ \UnicodeLeftLightAndRightUpHeavy\or
+ \UnicodeHeavyUpAndHorizontal\or
+ \UnicodeLightVerticalAndHorizontal\or
+ \UnicodeLeftHeavyAndRightVerticalLight\or
+ \UnicodeRightHeavyAndLeftVerticalLight\or
+ \UnicodeVerticalLightAndHorizontalHeavy\or
+ \UnicodeUpHeavyAndDownHorizontalLight\or
+ \UnicodeDownHeavyAndUpHorizontalLight\or
+ \UnicodeVerticalHeavyAndHorizontalLight\or
+ \UnicodeLeftUpHeavyAndRightDownLight\or
+ \UnicodeRightUpHeavyAndLeftDownLight\or
+ \UnicodeLeftDownHeavyAndRightUpLight\or
+ \UnicodeRightDownHeavyAndLeftUpLight\or
+ \UnicodeDownLightAndUpHorizontalHeavy\or
+ \UnicodeUpLightAndDownHorizontalHeavy\or
+ \UnicodeRightLightAndLeftVerticalHeavy\or
+ \UnicodeLeftLightAndRightVerticalHeavy\or
+ \UnicodeHeavyVerticalAndHorizontal\or
+ \UnicodeLightDoubleDashHorizontal\or
+ \UnicodeHeavyDoubleDashHorizontal\or
+ \UnicodeLightDoubleDashVertical\or
+ \UnicodeHeavyDoubleDashVertical\or
+ \UnicodeDoubleHorizontal\or
+ \UnicodeDoubleVertical\or
+ \UnicodeDownSingleAndRightDouble\or
+ \UnicodeDownDoubleAndRightSingle\or
+ \UnicodeDoubleDownAndRight\or
+ \UnicodeDownSingleAndLeftDouble\or
+ \UnicodeDownDoubleAndLeftSingle\or
+ \UnicodeDoubleDownAndLeft\or
+ \UnicodeUpSingleAndRightDouble\or
+ \UnicodeUpDoubleAndRightSingle\or
+ \UnicodeDoubleUpAndRight\or
+ \UnicodeUpSingleAndLeftDouble\or
+ \UnicodeUpDoubleAndLeftSingle\or
+ \UnicodeDoubleUpAndLeft\or
+ \UnicodeVerticalSingleAndRightDouble\or
+ \UnicodeVerticalDoubleAndRightSingle\or
+ \UnicodeDoubleVerticalAndRight\or
+ \UnicodeVerticalSingleAndLeftDouble\or
+ \UnicodeVerticalDoubleAndLeftSingle\or
+ \UnicodeDoubleVerticalAndLeft\or
+ \UnicodeDownSingleAndHorizontalDouble\or
+ \UnicodeDownDoubleAndHorizontalSingle\or
+ \UnicodeDoubleDownAndHorizontal\or
+ \UnicodeUpSingleAndHorizontalDouble\or
+ \UnicodeUpDoubleAndHorizontalSingle\or
+ \UnicodeDoubleUpAndHorizontal\or
+ \UnicodeVerticalSingleAndHorizontalDouble\or
+ \UnicodeVerticalDoubleAndHorizontalSingle\or
+ \UnicodeDoubleVerticalAndHorizontal\or
+ \UnicodeLightArcDownAndRight\or
+ \UnicodeLightArcDownAndLeft\or
+ \UnicodeLightArcUpAndLeft\or
+ \UnicodeLightArcUpAndRight\or
+ \UnicodeLightDiagonalUpperRightToLowerLeft\or
+ \UnicodeLightDiagonalUpperLeftToLowerRight\or
+ \UnicodeLightDiagonalCross\or
+ \UnicodeLightLeft\or
+ \UnicodeLightUp\or
+ \UnicodeLightRight\or
+ \UnicodeLightDown\or
+ \UnicodeHeavyLeft\or
+ \UnicodeHeavyUp\or
+ \UnicodeHeavyRight\or
+ \UnicodeHeavyDown\or
+ \UnicodeLightLeftAndHeavyRight\or
+ \UnicodeLightUpAndHeavyDown\or
+ \UnicodeHeavyLeftAndLightRight\or
+ \UnicodeHeavyUpAndLightDown\or
+ \UnicodeUpperHalfBlock\or
+ \UnicodeLowerOneEighthBlock\or
+ \UnicodeLowerOneQuarterBlock\or
+ \UnicodeLowerThreeEighthsBlock\or
+ \UnicodeLowerHalfBlock\or
+ \UnicodeLowerFiveEighthsBlock\or
+ \UnicodeLowerThreeQuartersBlock\or
+ \UnicodeLowerSevenEighthsBlock\or
+ \UnicodeFullBlock\or
+ \UnicodeLeftSevenEighthsBlock\or
+ \UnicodeLeftThreeQuartersBlock\or
+ \UnicodeLeftFiveEighthsBlock\or
+ \UnicodeLeftHalfBlock\or
+ \UnicodeLeftThreeEighthsBlock\or
+ \UnicodeLeftOneQuarterBlock\or
+ \UnicodeLeftOneEighthBlock\or
+ \UnicodeRightHalfBlock\or
+ \UnicodeLightShade\or
+ \UnicodeMediumShade\or
+ \UnicodeDarkShade\or
+ \UnicodeUpperOneEighthBlock\or
+ \UnicodeRightOneEighthBlock\or
+ \UnicodeQuadrantLowerLeft\or
+ \UnicodeQuadrantLowerRight\or
+ \UnicodeQuadrantUpperLeft\or
+ \UnicodeQuadrantUpperLeftAndLowerLeftAndLowerRight\or
+ \UnicodeQuadrantUpperLeftAndLowerRight\or
+ \UnicodeQuadrantUpperLeftAndUpperRightandLowerLeft\or
+ \UnicodeQuadrantUpperLeftAndUpperRightAndLowerRight\or
+ \UnicodeQuadrantUpperRight\or
+ \UnicodeQuadrantUpperRightAndLowerLeft\or
+ \UnicodeQuadrantUpperRightAndLowerLeftAndLowerRight\or
+ \UnicodeBlackSquare\or
+ \UnicodeWhiteSquare\or
+ \UnicodeWhiteSquareWithRoundedCorners\or
+ \UnicodeWhiteSquareContainingBlackSmallSquare\or
+ \UnicodeSquareWithHorizontalFill\or
+ \UnicodeSquareWithVerticalFill\or
+ \UnicodeSquareWithOrthogonalCrosshatchFill\or
+ \UnicodeSquareWithUpperLeftToLowerRightFill\or
+ \UnicodeSquareWithUpperRightToLowerLeftFill\or
+ \UnicodeSquareWithDiagonalCrosshatchFill\or
+ \UnicodeBlackSmallSquare\or
+ \UnicodeWhiteSmallSquare\or
+ \UnicodeBlackRectangle\or
+ \UnicodeWhiteRectangle\or
+ \UnicodeBlackVerticalRectangle\or
+ \UnicodeWhiteVerticalRectangle\or
+ \UnicodeBlackParallelogram\or
+ \UnicodeWhiteParallelogram\or
+ \UnicodeBlackUpPointingTriangle\or
+ \UnicodeWhiteUpPointingTriangle\or
+ \UnicodeBlackUpPointingSmallTriangle\or
+ \UnicodeWhiteUpPointingSmallTriangle\or
+ \UnicodeBlackRightPointingTriangle\or
+ \UnicodeWhiteRightPointingTriangle\or
+ \UnicodeBlackRightPointingSmallTriangle\or
+ \UnicodeWhiteRightPointingSmallTriangle\or
+ \UnicodeBlackRightPointingPointer\or
+ \UnicodeWhiteRightPointingPointer\or
+ \UnicodeBlackDownPointingTriangle\or
+ \UnicodeWhiteDownPointingTriangle\or
+ \UnicodeBlackDownPointingSmallTriangle\or
+ \UnicodeWhiteDownPointingSmallTriangle\or
+ \UnicodeBlackLeftPointingTriangle\or
+ \UnicodeWhiteLeftPointingTriangle\or
+ \UnicodeBlackLeftPointingSmallTriangle\or
+ \UnicodeWhiteLeftPointingSmallTriangle\or
+ \UnicodeBlackLeftPointingPointer\or
+ \UnicodeWhiteLeftPointingPointer\or
+ \UnicodeBlackDiamond\or
+ \UnicodeWhiteDiamond\or
+ \UnicodeWhiteDiamondContainingBlackSmallDiamond\or
+ \UnicodeFisheye\or
+ \UnicodeLozenge\or
+ \UnicodeWhiteCircle\or
+ \UnicodeDottedCircle\or
+ \UnicodeCircleWithVerticalFill\or
+ \UnicodeBullseye\or
+ \UnicodeBlackCircle\or
+ \UnicodeCircleWithLeftHalfBlack\or
+ \UnicodeCircleWithRightHalfBlack\or
+ \UnicodeCircleWithLowerHalfBlack\or
+ \UnicodeCircleWithUpperHalfBlack\or
+ \UnicodeCircleWithUpperRightQuadrantBlack\or
+ \UnicodeCircleWithAllButUpperLeftQuadrantBlack\or
+ \UnicodeLeftHalfBlackCircle\or
+ \UnicodeRightHalfBlackCircle\or
+ \UnicodeInverseBullet\or
+ \UnicodeInverseWhiteCircle\or
+ \UnicodeUpperHalfInverseWhiteCircle\or
+ \UnicodeLowerHalfInverseWhiteCircle\or
+ \UnicodeUpperLeftQuadrantCircularArc\or
+ \UnicodeUpperRightQuadrantCircularArc\or
+ \UnicodeLowerRightQuadrantCircularArc\or
+ \UnicodeLowerLeftQuadrantCircularArc\or
+ \UnicodeUpperHalfCircle\or
+ \UnicodeLowerHalfCircle\or
+ \UnicodeBlackLowerRightTriangle\or
+ \UnicodeBlackLowerLeftTriangle\or
+ \UnicodeBlackUpperLeftTriangle\or
+ \UnicodeBlackUpperRightTriangle\or
+ \UnicodeWhiteBullet\or
+ \UnicodeSquareWithLeftHalfBlack\or
+ \UnicodeSquareWithRightHalfBlack\or
+ \UnicodeSquareWithUpperLeftDiagonalHalfBlack\or
+ \UnicodeSquareWithLowerRightDiagonalHalfBlack\or
+ \UnicodeWhiteSquareWithVerticalBisectingLine\or
+ \UnicodeWhiteUpPointingTriangleWithDot\or
+ \UnicodeUpPointingTriangleWithLeftHalfBlack\or
+ \UnicodeUpPointingTriangleWithRightHalfBlack\or
+ \UnicodeLargeCircle\or
+ \UnicodeWhiteSquareWithUpperLeftQuadrant\or
+ \UnicodeWhiteSquareWithLowerLeftQuadrant\or
+ \UnicodeWhiteSquareWithLowerRightQuadrant\or
+ \UnicodeWhiteSquareWithUpperRightQuadrant\or
+ \UnicodeWhiteCircleWithUpperLeftQuadrant\or
+ \UnicodeWhiteCircleWithLowerLeftQuadrant\or
+ \UnicodeWhiteCircleWithLowerRightQuadrant\or
+ \UnicodeWhiteCircleWithUpperRightQuadrant\or
+ \UnicodeUpperLeftTriangle\or
+ \UnicodeUpperRightTriangle\or
+ \UnicodeLowerLeftTriangle\or
+ \UnicodeWhiteMediumSquare\or
+ \UnicodeBlackMediumSquare\or
+ \UnicodeWhiteMediumSmallSquare\or
+ \UnicodeBlackMediumSmallSquare\or
+ \UnicodeLowerRightTriangle\else%
+ \unknownchar\fi
+\stopunicodevector
+\protect \endinput
+
diff --git a/tex/context/base/verb-ini.tex b/tex/context/base/verb-ini.tex
index 97bbf02c4..e7d239e2a 100644
--- a/tex/context/base/verb-ini.tex
+++ b/tex/context/base/verb-ini.tex
@@ -2040,8 +2040,42 @@
% \initializeverbatimline
% \copyverbatimline}
+% \def\doprocessdisplayverbatim#1#2%
+% {\par
+% \bgroup
+% \escapechar-1
+% \xdef\verbatimname{\string#2}%
+% \egroup
+% \ifcase#1%
+% \let\endofdisplayverbatim\relax
+% \else
+% \def\endofdisplayverbatim{\csname\verbatimname\endcsname}%
+% \fi
+% \bgroup
+% \parindent\zeropoint
+% \ifdim\lastskip<\parskip
+% \removelastskip
+% \vskip\parskip
+% \fi
+% \parskip\zeropoint
+% \processingverbatimtrue
+% \ifcase#1%
+% \convertargument#2\to\endofverbatimcommand
+% \else
+% \expandafter\let\csname\verbatimname\endcsname=\relax
+% \expandafter\convertargument\csname\verbatimname\endcsname
+% \to\endofverbatimcommand
+% \fi
+% \verbatimfont
+% \setverbatimspaceskip
+% \global\linepartrue % needed for paragraph numbering
+% \setupcopyverbatim
+% \initializeverbatimline
+% \copyverbatimline}
+
\def\doprocessdisplayverbatim#1#2%
{\par
+ \beginofverbatimlines
\bgroup
\escapechar-1
\xdef\verbatimname{\string#2}%
@@ -2049,7 +2083,7 @@
\ifcase#1%
\let\endofdisplayverbatim\relax
\else
- \def\endofdisplayverbatim{\csname\verbatimname\endcsname}%
+ \def\endofdisplayverbatim{\endofverbatimlines\csname\verbatimname\endcsname}%
\fi
\bgroup
\parindent\zeropoint
diff --git a/tex/context/interface/cont-cz.xml b/tex/context/interface/cont-cz.xml
index cbc1bb632..a35cf0d6e 100644
--- a/tex/context/interface/cont-cz.xml
+++ b/tex/context/interface/cont-cz.xml
@@ -869,6 +869,11 @@
<cd:constant type="vse"/>
<cd:constant type="ne"/>
</cd:parameter>
+ <cd:parameter name="cislovani">
+ <cd:constant type="radek"/>
+ <cd:constant type="soubor"/>
+ <cd:constant type="ne"/>
+ </cd:parameter>
</cd:assignments>
</cd:arguments>
</cd:command>
@@ -4225,6 +4230,7 @@
</cd:parameter>
<cd:parameter name="zarovnejtitul">
<cd:constant type="ano"/>
+ <cd:constant type="plvouciobjekt"/>
<cd:constant type="ne"/>
</cd:parameter>
<cd:parameter name="tolerance">
@@ -7526,7 +7532,7 @@
<cd:command name="placefloat" generated="yes" file="page-flt.tex">
<cd:sequence>
<cd:string value="place"/>
- <cd:variable value="float"/>
+ <cd:variable value="plvouciobjekt"/>
</cd:sequence>
<cd:arguments>
<cd:keywords optional="yes">
@@ -7572,7 +7578,7 @@
<cd:command name="reservefloat" generated="yes">
<cd:sequence>
<cd:string value="reserve"/>
- <cd:variable value="float"/>
+ <cd:variable value="plvouciobjekt"/>
</cd:sequence>
<cd:arguments>
<cd:assignments optional="yes" list="yes">
@@ -7657,7 +7663,7 @@
<cd:command name="floattext" type="environment" generated="yes">
<cd:sequence>
- <cd:variable value="float"/>
+ <cd:variable value="plvouciobjekt"/>
<cd:string value="text"/>
</cd:sequence>
<cd:arguments>
@@ -8391,6 +8397,12 @@
<cd:parameter name="meritko">
<cd:constant type="cd:number"/>
</cd:parameter>
+ <cd:parameter name="ymeritko">
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
+ <cd:parameter name="ymeritko">
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
<cd:parameter name="faktor">
<cd:constant type="max"/>
<cd:constant type="prizpusobive"/>
@@ -8909,6 +8921,11 @@
<cd:parameter name="keyword">
<cd:constant type="cd:text"/>
</cd:parameter>
+ <!-- maybe this will move elsewhere -->
+ <cd:parameter name="fieldlayer">
+ <cd:constant type="auto"/>
+ <cd:constant type="cd:name"/>
+ </cd:parameter>
</cd:assignments>
</cd:arguments>
</cd:command>
diff --git a/tex/context/interface/cont-de.xml b/tex/context/interface/cont-de.xml
index 6d916958c..0e3be31e7 100644
--- a/tex/context/interface/cont-de.xml
+++ b/tex/context/interface/cont-de.xml
@@ -869,6 +869,11 @@
<cd:constant type="alles"/>
<cd:constant type="nein"/>
</cd:parameter>
+ <cd:parameter name="nummerierung">
+ <cd:constant type="zeile"/>
+ <cd:constant type="datei"/>
+ <cd:constant type="nein"/>
+ </cd:parameter>
</cd:assignments>
</cd:arguments>
</cd:command>
@@ -4225,6 +4230,7 @@
</cd:parameter>
<cd:parameter name="titelausrichten">
<cd:constant type="ja"/>
+ <cd:constant type="gleitobjekt"/>
<cd:constant type="nein"/>
</cd:parameter>
<cd:parameter name="toleranz">
@@ -7526,7 +7532,7 @@
<cd:command name="placefloat" generated="yes" file="page-flt.tex">
<cd:sequence>
<cd:string value="place"/>
- <cd:variable value="float"/>
+ <cd:variable value="gleitobjekt"/>
</cd:sequence>
<cd:arguments>
<cd:keywords optional="yes">
@@ -7572,7 +7578,7 @@
<cd:command name="reservefloat" generated="yes">
<cd:sequence>
<cd:string value="reserve"/>
- <cd:variable value="float"/>
+ <cd:variable value="gleitobjekt"/>
</cd:sequence>
<cd:arguments>
<cd:assignments optional="yes" list="yes">
@@ -7657,7 +7663,7 @@
<cd:command name="floattext" type="environment" generated="yes">
<cd:sequence>
- <cd:variable value="float"/>
+ <cd:variable value="gleitobjekt"/>
<cd:string value="text"/>
</cd:sequence>
<cd:arguments>
@@ -8391,6 +8397,12 @@
<cd:parameter name="format">
<cd:constant type="cd:number"/>
</cd:parameter>
+ <cd:parameter name="yformat">
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
+ <cd:parameter name="yformat">
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
<cd:parameter name="faktor">
<cd:constant type="max"/>
<cd:constant type="passend"/>
@@ -8909,6 +8921,11 @@
<cd:parameter name="keyword">
<cd:constant type="cd:text"/>
</cd:parameter>
+ <!-- maybe this will move elsewhere -->
+ <cd:parameter name="fieldlayer">
+ <cd:constant type="auto"/>
+ <cd:constant type="cd:name"/>
+ </cd:parameter>
</cd:assignments>
</cd:arguments>
</cd:command>
diff --git a/tex/context/interface/cont-en.xml b/tex/context/interface/cont-en.xml
index 1e12929ec..f32882eae 100644
--- a/tex/context/interface/cont-en.xml
+++ b/tex/context/interface/cont-en.xml
@@ -869,6 +869,11 @@
<cd:constant type="all"/>
<cd:constant type="no"/>
</cd:parameter>
+ <cd:parameter name="numbering">
+ <cd:constant type="line"/>
+ <cd:constant type="file"/>
+ <cd:constant type="no"/>
+ </cd:parameter>
</cd:assignments>
</cd:arguments>
</cd:command>
@@ -4225,6 +4230,7 @@
</cd:parameter>
<cd:parameter name="aligntitle">
<cd:constant type="yes"/>
+ <cd:constant type="float"/>
<cd:constant type="no"/>
</cd:parameter>
<cd:parameter name="tolerance">
@@ -8391,6 +8397,12 @@
<cd:parameter name="scale">
<cd:constant type="cd:number"/>
</cd:parameter>
+ <cd:parameter name="yscale">
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
+ <cd:parameter name="yscale">
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
<cd:parameter name="factor">
<cd:constant type="max"/>
<cd:constant type="fit"/>
@@ -8909,6 +8921,11 @@
<cd:parameter name="keyword">
<cd:constant type="cd:text"/>
</cd:parameter>
+ <!-- maybe this will move elsewhere -->
+ <cd:parameter name="fieldlayer">
+ <cd:constant type="auto"/>
+ <cd:constant type="cd:name"/>
+ </cd:parameter>
</cd:assignments>
</cd:arguments>
</cd:command>
diff --git a/tex/context/interface/cont-fr.xml b/tex/context/interface/cont-fr.xml
index 84e9172a2..0b420db07 100644
--- a/tex/context/interface/cont-fr.xml
+++ b/tex/context/interface/cont-fr.xml
@@ -869,6 +869,11 @@
<cd:constant type="tout"/>
<cd:constant type="non"/>
</cd:parameter>
+ <cd:parameter name="numerotation">
+ <cd:constant type="ligne"/>
+ <cd:constant type="fichier"/>
+ <cd:constant type="non"/>
+ </cd:parameter>
</cd:assignments>
</cd:arguments>
</cd:command>
@@ -4225,6 +4230,7 @@
</cd:parameter>
<cd:parameter name="alignementtitre">
<cd:constant type="oui"/>
+ <cd:constant type="flottant"/>
<cd:constant type="non"/>
</cd:parameter>
<cd:parameter name="tolerance">
@@ -7526,7 +7532,7 @@
<cd:command name="placefloat" generated="yes" file="page-flt.tex">
<cd:sequence>
<cd:string value="place"/>
- <cd:variable value="float"/>
+ <cd:variable value="flottant"/>
</cd:sequence>
<cd:arguments>
<cd:keywords optional="yes">
@@ -7572,7 +7578,7 @@
<cd:command name="reservefloat" generated="yes">
<cd:sequence>
<cd:string value="reserve"/>
- <cd:variable value="float"/>
+ <cd:variable value="flottant"/>
</cd:sequence>
<cd:arguments>
<cd:assignments optional="yes" list="yes">
@@ -7657,7 +7663,7 @@
<cd:command name="floattext" type="environment" generated="yes">
<cd:sequence>
- <cd:variable value="float"/>
+ <cd:variable value="flottant"/>
<cd:string value="text"/>
</cd:sequence>
<cd:arguments>
@@ -8391,6 +8397,12 @@
<cd:parameter name="echelle">
<cd:constant type="cd:number"/>
</cd:parameter>
+ <cd:parameter name="yscale">
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
+ <cd:parameter name="yscale">
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
<cd:parameter name="facteur">
<cd:constant type="max"/>
<cd:constant type="adapte"/>
@@ -8909,6 +8921,11 @@
<cd:parameter name="motcle">
<cd:constant type="cd:text"/>
</cd:parameter>
+ <!-- maybe this will move elsewhere -->
+ <cd:parameter name="calquechamp">
+ <cd:constant type="auto"/>
+ <cd:constant type="cd:name"/>
+ </cd:parameter>
</cd:assignments>
</cd:arguments>
</cd:command>
diff --git a/tex/context/interface/cont-it.xml b/tex/context/interface/cont-it.xml
index 631277f54..b746a404b 100644
--- a/tex/context/interface/cont-it.xml
+++ b/tex/context/interface/cont-it.xml
@@ -869,6 +869,11 @@
<cd:constant type="tutti"/>
<cd:constant type="no"/>
</cd:parameter>
+ <cd:parameter name="numerazione">
+ <cd:constant type="riga"/>
+ <cd:constant type="file"/>
+ <cd:constant type="no"/>
+ </cd:parameter>
</cd:assignments>
</cd:arguments>
</cd:command>
@@ -4225,6 +4230,7 @@
</cd:parameter>
<cd:parameter name="allineatitolo">
<cd:constant type="si"/>
+ <cd:constant type="oggettomobile"/>
<cd:constant type="no"/>
</cd:parameter>
<cd:parameter name="tolleranza">
@@ -7526,7 +7532,7 @@
<cd:command name="placefloat" generated="yes" file="page-flt.tex">
<cd:sequence>
<cd:string value="place"/>
- <cd:variable value="float"/>
+ <cd:variable value="oggettomobile"/>
</cd:sequence>
<cd:arguments>
<cd:keywords optional="yes">
@@ -7572,7 +7578,7 @@
<cd:command name="reservefloat" generated="yes">
<cd:sequence>
<cd:string value="reserve"/>
- <cd:variable value="float"/>
+ <cd:variable value="oggettomobile"/>
</cd:sequence>
<cd:arguments>
<cd:assignments optional="yes" list="yes">
@@ -7657,7 +7663,7 @@
<cd:command name="floattext" type="environment" generated="yes">
<cd:sequence>
- <cd:variable value="float"/>
+ <cd:variable value="oggettomobile"/>
<cd:string value="text"/>
</cd:sequence>
<cd:arguments>
@@ -8391,6 +8397,12 @@
<cd:parameter name="scala">
<cd:constant type="cd:number"/>
</cd:parameter>
+ <cd:parameter name="yscale">
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
+ <cd:parameter name="yscale">
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
<cd:parameter name="fattore">
<cd:constant type="max"/>
<cd:constant type="adatta"/>
@@ -8909,6 +8921,11 @@
<cd:parameter name="parolachiave">
<cd:constant type="cd:text"/>
</cd:parameter>
+ <!-- maybe this will move elsewhere -->
+ <cd:parameter name="fieldlayer">
+ <cd:constant type="auto"/>
+ <cd:constant type="cd:name"/>
+ </cd:parameter>
</cd:assignments>
</cd:arguments>
</cd:command>
diff --git a/tex/context/interface/cont-nl.xml b/tex/context/interface/cont-nl.xml
index cc7e7d77e..a93db0812 100644
--- a/tex/context/interface/cont-nl.xml
+++ b/tex/context/interface/cont-nl.xml
@@ -869,6 +869,11 @@
<cd:constant type="alles"/>
<cd:constant type="nee"/>
</cd:parameter>
+ <cd:parameter name="nummeren">
+ <cd:constant type="regel"/>
+ <cd:constant type="file"/>
+ <cd:constant type="nee"/>
+ </cd:parameter>
</cd:assignments>
</cd:arguments>
</cd:command>
@@ -4225,6 +4230,7 @@
</cd:parameter>
<cd:parameter name="titeluitlijnen">
<cd:constant type="ja"/>
+ <cd:constant type="blok"/>
<cd:constant type="nee"/>
</cd:parameter>
<cd:parameter name="tolerantie">
@@ -7526,7 +7532,7 @@
<cd:command name="placefloat" generated="yes" file="page-flt.tex">
<cd:sequence>
<cd:string value="place"/>
- <cd:variable value="float"/>
+ <cd:variable value="blok"/>
</cd:sequence>
<cd:arguments>
<cd:keywords optional="yes">
@@ -7572,7 +7578,7 @@
<cd:command name="reservefloat" generated="yes">
<cd:sequence>
<cd:string value="reserve"/>
- <cd:variable value="float"/>
+ <cd:variable value="blok"/>
</cd:sequence>
<cd:arguments>
<cd:assignments optional="yes" list="yes">
@@ -7657,7 +7663,7 @@
<cd:command name="floattext" type="environment" generated="yes">
<cd:sequence>
- <cd:variable value="float"/>
+ <cd:variable value="blok"/>
<cd:string value="text"/>
</cd:sequence>
<cd:arguments>
@@ -8391,6 +8397,12 @@
<cd:parameter name="schaal">
<cd:constant type="cd:number"/>
</cd:parameter>
+ <cd:parameter name="yschaal">
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
+ <cd:parameter name="yschaal">
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
<cd:parameter name="factor">
<cd:constant type="max"/>
<cd:constant type="passend"/>
@@ -8909,6 +8921,11 @@
<cd:parameter name="trefwoord">
<cd:constant type="cd:text"/>
</cd:parameter>
+ <!-- maybe this will move elsewhere -->
+ <cd:parameter name="veldlaag">
+ <cd:constant type="auto"/>
+ <cd:constant type="cd:name"/>
+ </cd:parameter>
</cd:assignments>
</cd:arguments>
</cd:command>
diff --git a/tex/context/interface/cont-ro.xml b/tex/context/interface/cont-ro.xml
index c8f30aa32..9499180e0 100644
--- a/tex/context/interface/cont-ro.xml
+++ b/tex/context/interface/cont-ro.xml
@@ -869,6 +869,11 @@
<cd:constant type="tot"/>
<cd:constant type="nu"/>
</cd:parameter>
+ <cd:parameter name="numerotare">
+ <cd:constant type="linie"/>
+ <cd:constant type="fisier"/>
+ <cd:constant type="nu"/>
+ </cd:parameter>
</cd:assignments>
</cd:arguments>
</cd:command>
@@ -4225,6 +4230,7 @@
</cd:parameter>
<cd:parameter name="alinieretitlu">
<cd:constant type="da"/>
+ <cd:constant type="obiectmobil"/>
<cd:constant type="nu"/>
</cd:parameter>
<cd:parameter name="toleranta">
@@ -7526,7 +7532,7 @@
<cd:command name="placefloat" generated="yes" file="page-flt.tex">
<cd:sequence>
<cd:string value="place"/>
- <cd:variable value="float"/>
+ <cd:variable value="obiectmobil"/>
</cd:sequence>
<cd:arguments>
<cd:keywords optional="yes">
@@ -7572,7 +7578,7 @@
<cd:command name="reservefloat" generated="yes">
<cd:sequence>
<cd:string value="reserve"/>
- <cd:variable value="float"/>
+ <cd:variable value="obiectmobil"/>
</cd:sequence>
<cd:arguments>
<cd:assignments optional="yes" list="yes">
@@ -7657,7 +7663,7 @@
<cd:command name="floattext" type="environment" generated="yes">
<cd:sequence>
- <cd:variable value="float"/>
+ <cd:variable value="obiectmobil"/>
<cd:string value="text"/>
</cd:sequence>
<cd:arguments>
@@ -8391,6 +8397,12 @@
<cd:parameter name="scala">
<cd:constant type="cd:number"/>
</cd:parameter>
+ <cd:parameter name="yscala">
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
+ <cd:parameter name="yscala">
+ <cd:constant type="cd:number"/>
+ </cd:parameter>
<cd:parameter name="factor">
<cd:constant type="max"/>
<cd:constant type="ajustat"/>
@@ -8909,6 +8921,11 @@
<cd:parameter name="keyword">
<cd:constant type="cd:text"/>
</cd:parameter>
+ <!-- maybe this will move elsewhere -->
+ <cd:parameter name="fieldlayer">
+ <cd:constant type="auto"/>
+ <cd:constant type="cd:name"/>
+ </cd:parameter>
</cd:assignments>
</cd:arguments>
</cd:command>
diff --git a/tex/context/interface/keys-cz.xml b/tex/context/interface/keys-cz.xml
index b0910bb68..0f1558aa8 100644
--- a/tex/context/interface/keys-cz.xml
+++ b/tex/context/interface/keys-cz.xml
@@ -1,6 +1,6 @@
<?xml version="1.0"?>
-<cd:interface xmlns:cd="http://www.pragma-ade.com/commands" name="context" language="cz" version="2006.02.15 17:41">
+<cd:interface xmlns:cd="http://www.pragma-ade.com/commands" name="context" language="cz" version="2006.03.20 10:19">
<cd:variables>
<cd:variable name="one" value="jedna"/>
@@ -526,6 +526,7 @@
<cd:variable name="date" value="datum"/>
<cd:variable name="default" value="implicitni"/>
<cd:variable name="final" value="finalni"/>
+ <cd:variable name="float" value="plvouciobjekt"/>
<cd:variable name="depth" value="podlehloubky"/>
<cd:variable name="doublesided" value="dvoustranny"/>
<cd:variable name="first" value="prvni"/>
diff --git a/tex/context/interface/keys-de.xml b/tex/context/interface/keys-de.xml
index e3bff4c65..c65c54bdd 100644
--- a/tex/context/interface/keys-de.xml
+++ b/tex/context/interface/keys-de.xml
@@ -1,6 +1,6 @@
<?xml version="1.0"?>
-<cd:interface xmlns:cd="http://www.pragma-ade.com/commands" name="context" language="de" version="2006.02.15 17:41">
+<cd:interface xmlns:cd="http://www.pragma-ade.com/commands" name="context" language="de" version="2006.03.20 10:19">
<cd:variables>
<cd:variable name="one" value="eins"/>
@@ -526,6 +526,7 @@
<cd:variable name="date" value="datum"/>
<cd:variable name="default" value="default"/>
<cd:variable name="final" value="endfassung"/>
+ <cd:variable name="float" value="gleitobjekt"/>
<cd:variable name="depth" value="tiefe"/>
<cd:variable name="doublesided" value="doppelseitig"/>
<cd:variable name="first" value="erste"/>
diff --git a/tex/context/interface/keys-en.xml b/tex/context/interface/keys-en.xml
index 6d953803a..1495b40f1 100644
--- a/tex/context/interface/keys-en.xml
+++ b/tex/context/interface/keys-en.xml
@@ -1,6 +1,6 @@
<?xml version="1.0"?>
-<cd:interface xmlns:cd="http://www.pragma-ade.com/commands" name="context" language="en" version="2006.02.15 17:41">
+<cd:interface xmlns:cd="http://www.pragma-ade.com/commands" name="context" language="en" version="2006.03.20 10:19">
<cd:variables>
<cd:variable name="one" value="one"/>
@@ -526,6 +526,7 @@
<cd:variable name="date" value="date"/>
<cd:variable name="default" value="default"/>
<cd:variable name="final" value="final"/>
+ <cd:variable name="float" value="float"/>
<cd:variable name="depth" value="depth"/>
<cd:variable name="doublesided" value="doublesided"/>
<cd:variable name="first" value="first"/>
diff --git a/tex/context/interface/keys-fr.xml b/tex/context/interface/keys-fr.xml
index 7db7ff4aa..b5d6c4a0c 100644
--- a/tex/context/interface/keys-fr.xml
+++ b/tex/context/interface/keys-fr.xml
@@ -1,6 +1,6 @@
<?xml version="1.0"?>
-<cd:interface xmlns:cd="http://www.pragma-ade.com/commands" name="context" language="fr" version="2006.02.15 17:41">
+<cd:interface xmlns:cd="http://www.pragma-ade.com/commands" name="context" language="fr" version="2006.03.20 10:19">
<cd:variables>
<cd:variable name="one" value="un"/>
@@ -526,6 +526,7 @@
<cd:variable name="date" value="date"/>
<cd:variable name="default" value="defaut"/>
<cd:variable name="final" value="final"/>
+ <cd:variable name="float" value="flottant"/>
<cd:variable name="depth" value="profondeur"/>
<cd:variable name="doublesided" value="rectoverso"/>
<cd:variable name="first" value="premier"/>
diff --git a/tex/context/interface/keys-it.xml b/tex/context/interface/keys-it.xml
index f2ed3e237..f5f5acf57 100644
--- a/tex/context/interface/keys-it.xml
+++ b/tex/context/interface/keys-it.xml
@@ -1,6 +1,6 @@
<?xml version="1.0"?>
-<cd:interface xmlns:cd="http://www.pragma-ade.com/commands" name="context" language="it" version="2006.02.15 17:41">
+<cd:interface xmlns:cd="http://www.pragma-ade.com/commands" name="context" language="it" version="2006.03.20 10:19">
<cd:variables>
<cd:variable name="one" value="uno"/>
@@ -526,6 +526,7 @@
<cd:variable name="date" value="data"/>
<cd:variable name="default" value="implicito"/>
<cd:variable name="final" value="finale"/>
+ <cd:variable name="float" value="oggettomobile"/>
<cd:variable name="depth" value="profondita"/>
<cd:variable name="doublesided" value="doppiafaccia"/>
<cd:variable name="first" value="primo"/>
diff --git a/tex/context/interface/keys-nl.xml b/tex/context/interface/keys-nl.xml
index c9ef3ea26..4e4c83d23 100644
--- a/tex/context/interface/keys-nl.xml
+++ b/tex/context/interface/keys-nl.xml
@@ -1,6 +1,6 @@
<?xml version="1.0"?>
-<cd:interface xmlns:cd="http://www.pragma-ade.com/commands" name="context" language="nl" version="2006.02.15 17:41">
+<cd:interface xmlns:cd="http://www.pragma-ade.com/commands" name="context" language="nl" version="2006.03.20 10:19">
<cd:variables>
<cd:variable name="one" value="een"/>
@@ -526,6 +526,7 @@
<cd:variable name="date" value="datum"/>
<cd:variable name="default" value="default"/>
<cd:variable name="final" value="definitief"/>
+ <cd:variable name="float" value="blok"/>
<cd:variable name="depth" value="diepte"/>
<cd:variable name="doublesided" value="dubbelzijdig"/>
<cd:variable name="first" value="eerste"/>
diff --git a/tex/context/interface/keys-ro.xml b/tex/context/interface/keys-ro.xml
index ca6535388..44e208cdf 100644
--- a/tex/context/interface/keys-ro.xml
+++ b/tex/context/interface/keys-ro.xml
@@ -1,6 +1,6 @@
<?xml version="1.0"?>
-<cd:interface xmlns:cd="http://www.pragma-ade.com/commands" name="context" language="ro" version="2006.02.15 17:41">
+<cd:interface xmlns:cd="http://www.pragma-ade.com/commands" name="context" language="ro" version="2006.03.20 10:19">
<cd:variables>
<cd:variable name="one" value="unu"/>
@@ -526,6 +526,7 @@
<cd:variable name="date" value="data"/>
<cd:variable name="default" value="implicit"/>
<cd:variable name="final" value="final"/>
+ <cd:variable name="float" value="obiectmobil"/>
<cd:variable name="depth" value="adancime"/>
<cd:variable name="doublesided" value="douafete"/>
<cd:variable name="first" value="primul"/>