summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--scripts/context/perl/mptopdf.pl14
-rw-r--r--scripts/context/ruby/base/tex.rb16
-rw-r--r--scripts/context/ruby/base/texutil.rb10
-rw-r--r--scripts/context/ruby/rlxtools.rb1
-rw-r--r--scripts/context/ruby/texexec.rb2
-rw-r--r--tex/context/base/colo-ini.tex11
-rw-r--r--tex/context/base/colo-run.tex25
-rw-r--r--tex/context/base/context.tex4
-rw-r--r--tex/context/base/core-fig.tex2
-rw-r--r--tex/context/base/core-grd.tex11
-rw-r--r--tex/context/base/core-not.tex9
-rw-r--r--tex/context/base/core-pgr.tex2
-rw-r--r--tex/context/base/core-reg.tex2
-rw-r--r--tex/context/base/core-sec.tex49
-rw-r--r--tex/context/base/core-spa.tex28
-rw-r--r--tex/context/base/core-trf.tex9
-rw-r--r--tex/context/base/core-uti.tex2
-rw-r--r--tex/context/base/core-var.tex38
-rw-r--r--tex/context/base/enco-agr.tex4
-rw-r--r--tex/context/base/page-ini.tex2
-rw-r--r--tex/context/base/page-lyr.tex8
-rw-r--r--tex/context/base/page-mul.tex201
-rw-r--r--tex/context/base/ppchtex.tex20
-rw-r--r--tex/context/base/s-abr-01.tex1
-rw-r--r--tex/context/base/spec-def.tex8
-rw-r--r--tex/context/base/spec-xet.tex66
-rw-r--r--tex/context/base/spec-xtx.tex60
-rw-r--r--tex/context/base/supp-fun.tex7
-rw-r--r--tex/context/base/syst-ext.tex6
-rw-r--r--tex/context/base/thrd-pic.tex6
-rw-r--r--tex/context/base/type-gyr.tex71
-rw-r--r--tex/context/base/unic-cjk.tex4
-rw-r--r--tex/context/base/x-fig-00.tex3
-rw-r--r--tex/context/base/x-res-01.tex5
-rw-r--r--tex/context/base/x-res-04.tex3
-rw-r--r--tex/context/base/x-res-12.tex2
-rw-r--r--tex/context/base/xtag-ext.tex2
-rw-r--r--web2c/context.cnf26
38 files changed, 445 insertions, 295 deletions
diff --git a/scripts/context/perl/mptopdf.pl b/scripts/context/perl/mptopdf.pl
index b1589a9d3..a6b946baa 100644
--- a/scripts/context/perl/mptopdf.pl
+++ b/scripts/context/perl/mptopdf.pl
@@ -37,12 +37,11 @@ my $PassOn = '' ;
"passon" => \$PassOn,
"latex" => \$Latex ) ;
-my $program = "MPtoPDF 1.3.2" ;
+my $program = "MPtoPDF 1.3.3" ;
my $pattern = "@ARGV" ; # was $ARGV[0]
my $miktex = 0 ;
my $done = 0 ;
my $report = '' ;
-my $texlatexswitch = " --tex=latex --format=latex " ;
my $mplatexswitch = " --tex=latex " ;
my $dosish = ($Config{'osname'} =~/^(ms)?dos|^os\/2|^mswin/i) ;
@@ -94,12 +93,15 @@ if (($pattern eq '')||($Help)) {
}
} else {
if ($Latex) {
- $rest .= " $texlatexswitch" ;
+ $rest .= " $mplatexswitch" ;
+ $mpbin = "mpost --mem=mpost" ;
+ } else {
+ $mpbin = "texexec --mptex $PassOn " ;
}
- $mpbin = "texexec --mptex $PassOn" ;
}
- print "\n$program : running '$mpbin'\n" ;
- my $error = system ("$mpbin $rest $pattern") ;
+ my $runner = "$mpbin $rest $pattern" ;
+ print "\n$program : running '$runner'\n" ;
+ my $error = system ($runner) ;
if ($error) {
print "\n$program : error while processing mp file\n" ;
exit ;
diff --git a/scripts/context/ruby/base/tex.rb b/scripts/context/ruby/base/tex.rb
index bb961111c..6c77ab059 100644
--- a/scripts/context/ruby/base/tex.rb
+++ b/scripts/context/ruby/base/tex.rb
@@ -153,11 +153,12 @@ class TEX
['pdftex','pdfetex','aleph','omega',
'xetex','luatex'] .each do |p| @@prognames[p] = 'context' end
['mpost'] .each do |p| @@prognames[p] = 'metafun' end
+ ['latex','pdflatex'] .each do |p| @@prognames[p] = 'latex' end
['plain','default','standard','mptopdf'] .each do |f| @@texmethods[f] = 'plain' end
['cont-en','cont-nl','cont-de','cont-it',
'cont-fr','cont-cz','cont-ro','cont-uk'] .each do |f| @@texmethods[f] = 'context' end
- ['latex'] .each do |f| @@texmethods[f] = 'latex' end
+ ['latex','pdflatex'] .each do |f| @@texmethods[f] = 'latex' end
['plain','default','standard'] .each do |f| @@mpsmethods[f] = 'plain' end
['metafun'] .each do |f| @@mpsmethods[f] = 'metafun' end
@@ -479,8 +480,10 @@ class TEX
def validprogname(str)
if str then
[str].flatten.each do |s|
+ s = s.sub(/\.\S*/,"")
return @@prognames[s] if @@prognames.key?(s)
end
+ return str[0].sub(/\.\S*/,"")
else
return nil
end
@@ -496,11 +499,7 @@ class TEX
else return ""
end
if format then
- # if engine then
- # "#{prefix}=#{engine}/#{format}"
- # else
- "#{prefix}=#{format}"
- # end
+ "#{prefix}=#{format.sub(/\.\S+$/,"")}"
else
prefix
end
@@ -910,9 +909,14 @@ class TEX
end
if ok then
# we have a valid line
+
@@preamblekeys.each do |v|
setvariable(v[1],vars[v[0]]) if vars.key?(v[0]) && vars[v[0]]
end
+
+if getvariable('given.backend') == "standard" or getvariable('given.backend') == "" then
+ setvariable('backend',@@backends[getvariable('texengine')] || 'standard')
+end
break
end
else
diff --git a/scripts/context/ruby/base/texutil.rb b/scripts/context/ruby/base/texutil.rb
index 7c402b98f..31f0efb51 100644
--- a/scripts/context/ruby/base/texutil.rb
+++ b/scripts/context/ruby/base/texutil.rb
@@ -447,10 +447,12 @@ class TeXUtil
end
def MyExtras::finalizer(logger)
- @@programs.each do |p|
- cmd = @@programs[p.to_i]
- logger.report("running #{cmd}")
- system(cmd)
+unless (ENV["CTX.TEXUTIL.EXTRAS"] =~ /^(no|off|false|0)$/io) || (ENV["CTX_TEXUTIL_EXTRAS"] =~ /^(no|off|false|0)$/io) then
+ @@programs.each do |p|
+ cmd = @@programs[p.to_i]
+ logger.report("running #{cmd}")
+ system(cmd)
+end
end
end
diff --git a/scripts/context/ruby/rlxtools.rb b/scripts/context/ruby/rlxtools.rb
index ea065612f..1617fcad4 100644
--- a/scripts/context/ruby/rlxtools.rb
+++ b/scripts/context/ruby/rlxtools.rb
@@ -300,6 +300,7 @@ class Commands
begin
str = nil
if FileTest.file?(filename) then
+ # todo: use pdfinto for pdf files, identify is bugged
if centimeters then
result = `identify -units PixelsPerCentimeter -format \"x=%x,y=%y,w=%w,h=%h,b=%b\" #{filename}`.chomp.split(',')
else
diff --git a/scripts/context/ruby/texexec.rb b/scripts/context/ruby/texexec.rb
index 9b79369d8..568bbee1c 100644
--- a/scripts/context/ruby/texexec.rb
+++ b/scripts/context/ruby/texexec.rb
@@ -570,6 +570,8 @@ class Commands
job.setvariable(k,@commandline.option(k)) unless @commandline.option(k).empty?
end
+job.setvariable('given.backend',job.getvariable('backend'))
+
if (str = @commandline.option('engine')) && ! str.standard? && ! str.empty? then
job.setvariable('texengine',str)
elsif @commandline.oneof('pdfetex','pdftex','pdf') then
diff --git a/tex/context/base/colo-ini.tex b/tex/context/base/colo-ini.tex
index 0042429f5..da0ab0a06 100644
--- a/tex/context/base/colo-ini.tex
+++ b/tex/context/base/colo-ini.tex
@@ -388,6 +388,7 @@
\def\dodefinespotcolor[#1][#2][#3]% todo: always global
{\doifnot{#1}{#2}
{\@@resetcolorparameters
+\doglobal\addtocommalist{#1}\colorlist % optional
\edef\@@cl@@n{#2}%
\getparameters[\??cl @@][#3]%
\doifnothing\@@cl@@p{\let\@@cl@@p\!!plusone}%
@@ -484,6 +485,7 @@
\def\dodefinespotcolor[#1][#2][#3]% todo: always global (REDEFINED)
{\doifnot{#1}{#2}
{\@@resetcolorparameters
+\doglobal\addtocommalist{#1}\colorlist % optional
\edef\@@cl@@n{#2}%
\getparameters[\??cl @@][#3]%
\doifnothing \@@cl@@p{\let\@@cl@@p\!!plusone}%
@@ -2311,6 +2313,15 @@
\fetchruntimecommand \showpalet {\f!colorprefix\s!run}
%D \macros
+%D {showcolorcomponents}
+%D
+%D \starttyping
+%D \showcolorcomponents[color-1,color-2]
+%D \stoptyping
+
+\fetchruntimecommand \showcolorcomponents {\f!colorprefix\s!run}
+
+%D \macros
%D {definecolorgroup}
%D
%D The naming of the colors in this palet suggests some
diff --git a/tex/context/base/colo-run.tex b/tex/context/base/colo-run.tex
index 9b3d0e94b..82f106e2a 100644
--- a/tex/context/base/colo-run.tex
+++ b/tex/context/base/colo-run.tex
@@ -222,4 +222,29 @@
\endgraf}
\dorecurse\!!counta{\dododocomparecolorgroup\recurselevel}}}
+\gdef\dogetcolorcomponents#1%
+ {\startnointerference
+ \localcolortrue
+ \def\doexeccolorR ##1:##2:##3:##4:##5\od{\global\globalscratchtoks{\NC\Od#1 \NC#1\NC a=\Do##4 \enspace t=\Do##5 \NC r=\Do##1 \enspace g=\Do##2 \enspace b=\Do##3 \NC\NR}}%
+ \def\doexeccolorC##1:##2:##3:##4:##5:##6\od{\global\globalscratchtoks{\NC\Od#1 \NC#1\NC a=\Do##5 \enspace t=\Do##6 \NC c=\Do##1 \enspace m=\Do##2 \enspace y=\Do##3 \enspace k=\Do##4 \NC\NR}}%
+ \def\doexeccolorS ##1:##2:##3\od{\global\globalscratchtoks{\NC\Od#1 \NC#1\NC a=\Do##2 \enspace t=\Do##3 \NC s=\Do##1 \NC\NR}}%
+ %\def\doexeccolorP##1:##2:##3:##4:##5:##6\od{\global\globalscratchtoks{\NC\Od#1 \NC#1\NC a=\Do##5 \enspace t=\Do##6 \NC p=\Do##4 \enspace f=\Do##2 \enspace d=\Do##3 \enspace n=##1 \NC\NR}}%
+ \def\doexeccolorP##1:##2:##3:##4:##5:##6\od{\global\globalscratchtoks{\NC\Od#1 \NC#1\NC a=\Do##5 \enspace t=\Do##6 \NC p=\Do##4 \enspace n=##1 \NC\NR}}%
+ \let\doexeccolorPindex\doexeccolorP
+ \backgroundline[#1]{}%
+ \stopnointerference
+ \appendetoks\the\globalscratchtoks\to\scratchtoks}
+
+\gdef\showcolorcomponents[#1]%
+ {\bgroup
+ \def\Od##1 {\backgroundline[##1]{\strut\quad \color[white]{white}\quad\color[black]{black}\quad\quad}}%
+ \def\Do##1 {\twodigitrounding{##1}}%
+ \scratchtoks\emptytoks
+ \appendtoks\starttabulate[|l|l|l|l|]\to\scratchtoks
+ \appendtoks\NC color \NC name \NC transparency \NC specification \NC\NR\TB\to\scratchtoks
+ \processcommacommand[#1]\dogetcolorcomponents
+ \appendtoks\stoptabulate\to\scratchtoks
+ \tt\the\scratchtoks
+ \egroup}
+
\protect \endinput
diff --git a/tex/context/base/context.tex b/tex/context/base/context.tex
index 7e9949446..4dfdcfcbe 100644
--- a/tex/context/base/context.tex
+++ b/tex/context/base/context.tex
@@ -42,7 +42,7 @@
%D your styles an modules.
\edef\contextformat {\jobname}
-\edef\contextversion{2007.03.22 13:34}
+\edef\contextversion{2007.04.17 12:51}
%D For those who want to use this:
@@ -203,6 +203,8 @@
\loadmkivfile{char-def.tex}
\loadmkivfile{char-utf.tex}
+\loadmkivfile{node-ini.tex}
+
%D We also use some third party macros. These are loaded by
%D saying:
diff --git a/tex/context/base/core-fig.tex b/tex/context/base/core-fig.tex
index b6a655c4f..3464b80fe 100644
--- a/tex/context/base/core-fig.tex
+++ b/tex/context/base/core-fig.tex
@@ -732,7 +732,7 @@
\xdef\noffigurepages{\number\nofinsertpages}%
\else
\ifdim\naturalfigurewidth>\zeropoint
- \ifnum\figurestatus>9
+ \ifnum\figurestatus>\!!ten\relax
\doshowfiguremessage3\expandedfigurename
\else
\doshowfiguremessage4\expandedfigurename
diff --git a/tex/context/base/core-grd.tex b/tex/context/base/core-grd.tex
index a1167cebc..16dc750c0 100644
--- a/tex/context/base/core-grd.tex
+++ b/tex/context/base/core-grd.tex
@@ -356,10 +356,13 @@
{\ifforcepresnap
\ifvmode \else \par \fi % new
% we don't want top of page space when 'top' option
- %\verticalstrut\nobreak\vskip-\struttotal
- %\verticalstrut\vskip-\struttotal
- % nobreak really needed
- \dosomebreak\allowbreak\verticalstrut\nobreak\vskip-\struttotal % new: \dosomebreak
+ % \verticalstrut\nobreak\vskip-\struttotal
+ % \verticalstrut\vskip-\struttotal
+ % \nobreak really needed
+ % \dosomebreak\allowbreak % no: spoils heads, so only under know situation, not in snapper
+ \verticalstrut
+ \nobreak
+ \vskip-\struttotal
%\ifdim\pagetotal>\topskip \else
% eigenlijk signal
%\writestatus{grid}{removing dummy at top of page}%
diff --git a/tex/context/base/core-not.tex b/tex/context/base/core-not.tex
index d0049d653..c8e7c2a52 100644
--- a/tex/context/base/core-not.tex
+++ b/tex/context/base/core-not.tex
@@ -847,12 +847,15 @@
% % this should be checked, smells like a mix-up
% % does not split: \ifcase\noteparameter\c!n\unvbox\else\box\fi\currentnoteins
\ifcase\noteparameter\c!n\relax
- \unvbox\currentnoteins
+\iftrialtypesetting\unvcopy\else\unvbox\fi\currentnoteins
+% \unvbox\currentnoteins
\or
- \box\currentnoteins
+\iftrialtypesetting\copy\else\box\fi\currentnoteins
+% \box\currentnoteins
\obeydepth % (a) added , since split footnotes will not align properly
\else
- \unvbox\currentnoteins
+\iftrialtypesetting\unvcopy\else\unvbox\fi\currentnoteins
+% \unvbox\currentnoteins
\fi
% this is too ugly actually
\stoppopnotes}%
diff --git a/tex/context/base/core-pgr.tex b/tex/context/base/core-pgr.tex
index 22015fb3e..3b5e8119e 100644
--- a/tex/context/base/core-pgr.tex
+++ b/tex/context/base/core-pgr.tex
@@ -596,7 +596,7 @@
%D \setupbackground
%D [test]
%D [mp=mpos:par:columnset,
-%D methodmethode=mpos:par:columnset]
+%D method=mpos:par:columnset]
%D \stoptyping
%D We need to treat floats in a special way.
diff --git a/tex/context/base/core-reg.tex b/tex/context/base/core-reg.tex
index af90cebd0..2b486fcd0 100644
--- a/tex/context/base/core-reg.tex
+++ b/tex/context/base/core-reg.tex
@@ -157,7 +157,7 @@
\def\dostartregister[#1][#2][#3][#4]#5% % 3 args: #3 is sortkey
{\chardef\registerpagestatus\plustwo % 4 args: #3 is type, #4 is sortkey
\def\currentregister{#1}%
- \iffourarguments
+ \iffourthargument
\setgvalue{\??id#1\??id#2}{\dodostopregister[#1][#4]{#5}}%
\dodoregister[#4]{#3}{#5}%
\else
diff --git a/tex/context/base/core-sec.tex b/tex/context/base/core-sec.tex
index ef33e7735..467b0cf50 100644
--- a/tex/context/base/core-sec.tex
+++ b/tex/context/base/core-sec.tex
@@ -1116,6 +1116,29 @@
%
% \placefigure[left]{}{} \section{\dorecurse{10}{bagger }} \input tufte
+% \def\dohandlepagebreakAB#1% will be replaced by a more clever (signaling) mechanism (in beta)
+% {\doifnotvalue{\??ko#1\c!aligntitle}\v!float\flushsidefloats
+% \getvalue{\??ko#1\c!before}%
+% % \whitespace vervangen door \noindent elders
+% \relax
+% \ifpaginageblokkeerd
+% \global\paginageblokkeerdfalse
+% \else
+% \!!countb\getvalue{\??se\@@sectie\c!level}\relax
+% \ifnum\!!countb>\@@kolevel\relax
+% \!!counta20000
+% \multiply\!!countb 500
+% \advance\!!counta \!!countb
+% \dosomebreak{\penalty\!!counta}%
+% \else
+% \dosomebreak\allowbreak
+% \fi
+% \fi
+% \doifvalue{\??ko#1\c!aligntitle}\v!float\indent
+% \xdef\@@kolevel{\getvalue{\??se\@@sectie\c!level}}}
+
+\chardef\somebreakmethod\plusone
+
\def\dohandlepagebreakAB#1% will be replaced by a more clever (signaling) mechanism (in beta)
{\doifnotvalue{\??ko#1\c!aligntitle}\v!float\flushsidefloats
\getvalue{\??ko#1\c!before}%
@@ -1124,14 +1147,24 @@
\ifpaginageblokkeerd
\global\paginageblokkeerdfalse
\else
- \!!countb\getvalue{\??se\@@sectie\c!level}\relax
- \ifnum\!!countb>\@@kolevel\relax
- \!!counta20000
- \multiply\!!countb 500
- \advance\!!counta \!!countb
- \dosomebreak{\penalty\!!counta}%
+ \ifcase\somebreakmethod
+ % 0 = nothing
+ \or
+ % 1 = old weighted version
+ \!!countb\getvalue{\??se\@@sectie\c!level}\relax
+ \ifnum\!!countb>\@@kolevel\relax
+ \!!counta20000
+ \multiply\!!countb 500
+ \advance\!!counta \!!countb
+ \dosomebreak{\penalty\!!counta}%
+ \else
+ \dosomebreak\allowbreak % brr
+ \fi
+ \or
+ % 2 = strict version
+ \dosomebreak{\penalty\maxdimen}%
\else
- \dosomebreak\allowbreak
+ % nothing
\fi
\fi
\doifvalue{\??ko#1\c!aligntitle}\v!float\indent
@@ -1938,7 +1971,7 @@
% no message needed here, should be a proper switch
\noflines\zerocount
\ifdisplaysectionhead
- % new
+ % new (tod tight == one following line up)
\processaction
[\getvalue{\??ko#1\c!hang}]
[ \v!line=>\hangheadplacement\noflines\zerocount,
diff --git a/tex/context/base/core-spa.tex b/tex/context/base/core-spa.tex
index d4a574738..d98480248 100644
--- a/tex/context/base/core-spa.tex
+++ b/tex/context/base/core-spa.tex
@@ -3010,7 +3010,7 @@
% \voorkeur … la \blanko
%
% Om ongewenste witruimte te voorkomen kan met \dosomebreak{\break}
-% een \penalty v¢¢r witruimte worden geplaatst.
+% een \penalty voor witruimte worden geplaatst.
\def\removelastskip % a redefinition of plain
{\ifvmode\ifdim\lastskip=\zeropoint\else\vskip-\lastskip\fi\fi}
@@ -3028,18 +3028,18 @@
%
% don't change the next improvement:
-\def\dosomebreak#1%
- {\endgraf % beware, this forces a newline
- \ifvmode
- \ifdim\lastskip=\zeropoint
- #1\relax
- \else
- \scratchskip\lastskip
- \removelastskip
- #1\relax
- \vskip\scratchskip
- \fi
- \fi}
+% \def\dosomebreak#1%
+% {\endgraf % beware, this forces a newline
+% \ifvmode
+% \ifdim\lastskip=\zeropoint
+% #1\relax
+% \else
+% \scratchskip\lastskip
+% \removelastskip
+% #1\relax
+% \vskip\scratchskip
+% \fi
+% \fi}
% beter, vooral in \vbox; nog in \pagina toepassen s!
@@ -4644,7 +4644,7 @@
\setupwhitespace
[\v!none]
-% still old-fachioned
+% still old-fashioned
\indenting
[\v!never]
diff --git a/tex/context/base/core-trf.tex b/tex/context/base/core-trf.tex
index 7a62d5392..03889f1fb 100644
--- a/tex/context/base/core-trf.tex
+++ b/tex/context/base/core-trf.tex
@@ -170,6 +170,7 @@
% preparations
\checkscaleboxsettings
% calculators
+ % beware, they operate in sequence, and calculate missing dimensions / messy
%setscaleboxbynature % when? needed?
\setscaleboxbyfactor
\setscaleboxbyscale
@@ -219,21 +220,21 @@
{\doapplyscaleboxsize
\ifdim\scaleboxsizex>\scaleboxsizey
\docalculatescaleboxnorm \scaleboxdimx\c!factor\c!maxwidth\hsize\scaleboxhsize
- \docalculatescaleboxscales\scaleboxdimx\scaleboxsizex\scaleboxdimy\scaleboxsizey
+% not here: \docalculatescaleboxscales\scaleboxdimx\scaleboxsizex\scaleboxdimy\scaleboxsizey
\else
\docalculatescaleboxnorm \scaleboxdimy\c!factor\c!maxheight\scaleboxoutervsize\scaleboxvsize
- \docalculatescaleboxscales\scaleboxdimy\scaleboxsizey\scaleboxdimx\scaleboxsizex
+% not here: \docalculatescaleboxscales\scaleboxdimy\scaleboxsizey\scaleboxdimx\scaleboxsizex
\fi
\donetrue}
{\doifinsetelse{\scaleparameter\c!hfactor}{\v!max,\v!fit,\v!broad}
{\doapplyscaleboxsize
\docalculatescaleboxnorm \scaleboxdimy\c!hfactor\c!maxheight\scaleboxoutervsize\scaleboxvsize
- \docalculatescaleboxscales\scaleboxdimy\scaleboxsizey\scaleboxdimx\scaleboxsizex
+% not here: \docalculatescaleboxscales\scaleboxdimy\scaleboxsizey\scaleboxdimx\scaleboxsizex
\donetrue}
{\doifinsetelse{\scaleparameter\c!wfactor}{\v!max,\v!fit,\v!broad}
{\doapplyscaleboxsize
\docalculatescaleboxnorm \scaleboxdimx\c!wfactor\c!maxwidth\hsize\scaleboxhsize
- \docalculatescaleboxscales\scaleboxdimx\scaleboxsizex\scaleboxdimy\scaleboxsizey
+% not here: \docalculatescaleboxscales\scaleboxdimx\scaleboxsizex\scaleboxdimy\scaleboxsizey
\donetrue}
{\docalculatescaleboxnorm\scaleboxdimy\c!factor \c!height \textheight\scaleboxvsize
\docalculatescaleboxnorm\scaleboxdimy\c!hfactor\c!height \textheight\scaleboxvsize
diff --git a/tex/context/base/core-uti.tex b/tex/context/base/core-uti.tex
index b630a1350..8cf91912d 100644
--- a/tex/context/base/core-uti.tex
+++ b/tex/context/base/core-uti.tex
@@ -133,7 +133,7 @@
\to \everyopenutilities
\appendtoks
- \immediate\closeout\utility@tui % niet echt nodig
+% \immediate\closeout\utility@tui % niet echt nodig
\reportutilityproblems
% should be a message :
\let\writeutilitycommand \gobbleoneargument
diff --git a/tex/context/base/core-var.tex b/tex/context/base/core-var.tex
index 0c740d4b8..9a5cde07d 100644
--- a/tex/context/base/core-var.tex
+++ b/tex/context/base/core-var.tex
@@ -452,20 +452,34 @@
% \errorisfatalfalse}
%
% permit nested definitions while preventing nested set/reset
+%
+% wrong:
+%
+% \long\def\dosetvariables[#1][#2][#3]%
+% {\errorisfataltrue
+% \getrawparameters[\??vars:*:][\s!reset=*,\s!set=*,#3]%
+% \doifelse{\getvalue{\??vars:*:\s!reset}\getvalue{\??vars:*:\s!set}}{**}
+% {\doifelse{#2}\currentvariableclass
+% {#1[\??vars:#2:][#3]}
+% {\pushmacro\currentvariableclass
+% \def\currentvariableclass{#2}%
+% \getvariable{#2}\s!reset
+% #1[\??vars:#2:][#3]%
+% \getvariable{#2}\s!set
+% \popmacro\currentvariableclass}}%
+% {#1[\??vars:#2:][#3]}%
+% \errorisfatalfalse}
-\long\def\dosetvariables[#1][#2][#3]%
+\long\def\dosetvariables[#1][#2][#3]% tricky, test on s-pre-60
{\errorisfataltrue
- \getrawparameters[\??vars:*:][\s!reset=*,\s!set=*,#3]%
- \doifelse{\getvalue{\??vars:*:\s!reset}\getvalue{\??vars:*:\s!set}}{**}
- {\doifelse{#2}\currentvariableclass
- {#1[\??vars:#2:][#3]}
- {\pushmacro\currentvariableclass
- \def\currentvariableclass{#2}%
- \getvariable{#2}\s!reset
- #1[\??vars:#2:][#3]%
- \getvariable{#2}\s!set
- \popmacro\currentvariableclass}}%
- {#1[\??vars:#2:][#3]}%
+ \doifelse{#2}\currentvariableclass
+ {#1[\??vars:#2:][#3]}%
+ {\pushmacro\currentvariableclass
+ \def\currentvariableclass{#2}%
+ \getvariable{#2}\s!reset
+ #1[\??vars:#2:][#3]%
+ \getvariable{#2}\s!set
+ \popmacro\currentvariableclass}%
\errorisfatalfalse}
\long\def\setvariable #1#2#3{\long\setvalue {\??vars:#1:#2}{#3}}
diff --git a/tex/context/base/enco-agr.tex b/tex/context/base/enco-agr.tex
index 7aa53a48d..77fe0a826 100644
--- a/tex/context/base/enco-agr.tex
+++ b/tex/context/base/enco-agr.tex
@@ -61,9 +61,7 @@
\definecharacter greekdasia 60
\definecharacter greekpsili 62
-
-% Question, etc., look out of sync with Oxonia, however
-
+\definecharacter greekquestionmark 63
\definecharacter dialytika 64
\definecharacter greekAlpha 65
\definecharacter greekBeta 66
diff --git a/tex/context/base/page-ini.tex b/tex/context/base/page-ini.tex
index 180b5ca4f..bbcc41f0a 100644
--- a/tex/context/base/page-ini.tex
+++ b/tex/context/base/page-ini.tex
@@ -519,7 +519,7 @@
8: balanced in -- step(s)
9: check raggedness
10: (less than) 1 line left
- 11: float to wide for column
+ 11: float too wide for column
12: float moved to next column / --
13: wide float moved to top of columns
\stopmessages
diff --git a/tex/context/base/page-lyr.tex b/tex/context/base/page-lyr.tex
index b0fabc3f7..cd8f6acc7 100644
--- a/tex/context/base/page-lyr.tex
+++ b/tex/context/base/page-lyr.tex
@@ -249,6 +249,14 @@
% preroll
\getparameters[\??ll\currentlayer][#3]%
% presets and real roll
+% maybe todo:
+% \doif{\layerparameter\c!method}\v!fit
+% {\@@layerxsiz\thelayerwidth \currentlayer
+% \@@layerysiz\thelayerheight\currentlayer
+% \layerwidth \@@layerxsiz
+% \layerheight\@@layerysiz
+% }%
+ % etc
\executeifdefined{\??ll\??ll\layerparameter\c!preset}\gobbletwoarguments\currentlayer{#3}%
% that was real slow
\doif{\layerparameter\c!position}\v!overlay % slow
diff --git a/tex/context/base/page-mul.tex b/tex/context/base/page-mul.tex
index bf4386b4e..edee9cee1 100644
--- a/tex/context/base/page-mul.tex
+++ b/tex/context/base/page-mul.tex
@@ -355,29 +355,12 @@
%D dimensions are influenced by bodyfont switches inside
%D multi||column mode.
-% \def\setcolumnvsize
-% {%\global\vsize\columntextheight
-% \global\vsize-\columntextoffset
-% \global\multiply\vsize \plustwo
-% \global\advance\vsize \columntextheight
-% \ifdim\precolumnboxheight>\zeropoint
-% \global\advance\vsize -\precolumnboxheight
-% \fi
-% %\getinsertionheights\to\dimen0\\%
-% %\global\advance\vsize -\dimen0
-% \settotalinsertionheight
-% \global\advance\vsize -\totalinsertionheight
-% %%%\ifgridsnapping % evt altijd, nog testen, testing now, see columned tocs
-% \getnoflines\vsize
-% \vsize\noflines\openlineheight
-% \advance\vsize .5\openlineheight % collect enough data
-% %%%\fi
-% \global\vsize\nofcolumns\vsize
-% \global\pagegoal\vsize} % let's do it only here
-
\newdimen\mcscratchdimen
\newcount\nofcolumnlines
+\chardef\multicolumnlinemethod\zerocount % 0: overshoot (old default), 1: tight
+% \chardef\multicolumnlinemethod\plusone
+
\def\getmulticolumnlines
{\mcscratchdimen-\columntextoffset
\multiply\mcscratchdimen \plustwo
@@ -387,38 +370,22 @@
\fi
\settotalinsertionheight
\advance\mcscratchdimen -\totalinsertionheight
- \getnoflines\mcscratchdimen
+ \ifcase\multicolumnlinemethod \getnoflines\mcscratchdimen
+ \or \getrawnoflines\mcscratchdimen
+ \else \getrawnoflines\mcscratchdimen
+ \fi
% added 30/7/2004
\ifnum\layoutlines>\zerocount \ifnum\noflines>\layoutlines
\noflines\layoutlines
\fi \fi
\nofcolumnlines\noflines}
-% probaby better, test first, don't replace yet
-%
-% \def\getmulticolumnlines
-% {\mcscratchdimen-\columntextoffset
-% \multiply\mcscratchdimen \plustwo
-% % \advance\mcscratchdimen \columntextheight
-% \ifdim\precolumnboxheight>\zeropoint
-% \advance\mcscratchdimen -\precolumnboxheight
-% \fi
-% \settotalinsertionheight
-% \advance\mcscratchdimen -\totalinsertionheight
-% \getnoflines\mcscratchdimen
-% \ifnum\layoutlines>\zerocount
-% \noflines-\noflines
-% \advance\noflines\layoutlines
-% \ifnum\noflines<\zerocount
-% \noflines\zerocount
-% \fi
-% \fi
-% \nofcolumnlines\noflines}
+\def\multicolumnovershootratio{.5} % {\ifgridsnapping0\else.5\fi}
\def\setcolumnvsize
{\getmulticolumnlines
\mcscratchdimen\nofcolumnlines\openlineheight
- \advance\mcscratchdimen .5\openlineheight % collect enough data
+ \advance\mcscratchdimen \multicolumnovershootratio\openlineheight % collect enough data
\global\vsize\nofcolumns\mcscratchdimen
\global\pagegoal\vsize} % let's do it only here
@@ -521,47 +488,25 @@
%D e.g. when there is no text given between \type{\begin..}
%D and \type{\end..}. The \type{\par} is needed!
-% \def\endmulticolumns
-% {%\par
-% \vskip\lineheight\vskip-\lineheight % take footnotes into account
-% \dontshowcomposition
-% \doflushcolumnfloat % added recently
-% %\doflushcolumnfloats % no, since it results in wrong top floats
-% \flushnotes % before start of columns
-% \par
-% \ifbalancecolumns
-% \global\output{\continuousmulticolumnsout}%
-% \goodbreak
-% \global\output{\balancedmulticolumnsout}%
-% \else
-% \goodbreak
-% \fi
-% \eject % the prevdepth is important, try e.g. toclist in
-% \prevdepth\zeropoint % columns before some noncolumned text text
-% \global\output\singlecolumnout
-% \global\output{\the\mainoutput}% % % % % todo
-% \ifvoid\precolumnbox\else
-% \unvbox\precolumnbox
-% \fi
-% \global\precolumnboxheight\zeropoint
-% \endgroup % here
-% \nofcolumns\plusone
-% \setvsize % the outer one!
-% \checkendcolumnfootnotes
-% \dosomebreak\allowbreak
-% \restoresavedfloats}
+\chardef\multicolumnendsyncmethod\plusone % 1: old sync 2: new sync (cont-loc/project)
\def\endmulticolumns
{%\par
- \vskip\lineheight\vskip-\lineheight % take footnotes into account
+ \ifnum\multicolumnendsyncmethod=\plustwo
+ \synchronizeoutput
+ \else
+ \vskip\lineheight\vskip-\lineheight % take footnotes into account
+ \fi
\dontshowcomposition
\doflushcolumnfloat % added recently
%\doflushcolumnfloats % no, since it results in wrong top floats
\flushnotes % before start of columns
\par
\ifbalancecolumns
- \global\output{\continuousmulticolumnsout}%
- \goodbreak
+ \ifnum\multicolumnendsyncmethod=\plusone
+ \global\output{\continuousmulticolumnsout}%
+ \goodbreak
+ \fi
\global\output{\balancedmulticolumnsout}%
\else
\goodbreak
@@ -635,10 +580,30 @@
\edef\maxcolumndepth{\the\dp\currentcolumnbox}%
\fi}}
-\chardef\columnedtopflushmethod\plusone
+
+\chardef\multicolumntopflushmethod\plusone % 0: no correction, 1: correction when topstuff, 2: correction, 3: correction++
+\chardef\multicolumntopalignmethod\plustwo % 0: nothing, 1: force grid, 2: follow grid
+
+\def\flushprecolumnboxnogrid
+ {\unvbox\precolumnbox}
+
+\def\flushprecolumnboxongrid
+ {\scratchdimen\savedpagetotal
+ \advance\scratchdimen -\ht\precolumnbox
+ \advance\scratchdimen -\dp\precolumnbox
+ \advance\scratchdimen -\topskip
+ \box\precolumnbox
+ \kern\scratchdimen}
+
+\newconditional\someprecolumncontent
\def\flushcolumnedpage#1%
{\bgroup
+ \ifvoid\precolumnbox
+ \setfalse\someprecolumncontent % will be set elsewhere
+ \else
+ \settrue\someprecolumncontent
+ \fi
\forgetall
\setmulticolumnsout
\showcomposition
@@ -686,41 +651,54 @@
\hskip-\columntextwidth
\restoretextcolor{\box\scratchbox}}%
\postprocesscolumnpagebox % new, acts upon \box\columnpagebox
- \ifvoid\precolumnbox
- \else
+ \ifconditional\someprecolumncontent
+ \settrue\someprecolumncontent
% next some incredible crappy code
- \ifgridsnapping
- % somehow this junk fails in pascal
- \scratchdimen\savedpagetotal
- \advance\scratchdimen -\ht\precolumnbox
- \advance\scratchdimen -\dp\precolumnbox
- \advance\scratchdimen -\topskip
- \box\precolumnbox
- \kern\scratchdimen
+ \ifcase\multicolumntopalignmethod
+ \flushprecolumnboxnogrid % not on grid
+ \or
+ \flushprecolumnboxongrid % force on grid
+ \else\ifgridsnapping % somehow this junk fails in pascal
+ \flushprecolumnboxongrid % obey grid settings, force on grid
\else
- \unvbox\precolumnbox
- \fi
+ \flushprecolumnboxnogrid % ignore grid settings, not on grid
+ \fi \fi
\fi
\global\precolumnboxheight\zeropoint
\setvsize
- \dosomebreak\nobreak
- \ifgridsnapping \else
- \ifcase\columnedtopflushmethod
+ \dosomebreak\nobreak % hm, only needed when topstuff
+ \ifgridsnapping
+ \else
+ \ifcase\multicolumntopflushmethod
% 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
+ \ifconditional\someprecolumncontent
+% \scratchdimen\topskip
+% \advance\scratchdimen -\openstrutheight
+% \nointerlineskip
+% \vskip-\scratchdimen
+ \nointerlineskip
+ \vskip\dimexpr\openstrutheight-\topskip\relax
+ \fi
+ \or
+% \scratchdimen\topskip
+% \advance\scratchdimen -\openstrutheight
+% \nointerlineskip
+% \vskip-\scratchdimen
\nointerlineskip
- \vskip-\scratchdimen
+ \vskip\dimexpr\openstrutheight-\topskip\relax
\or
% untested but maybe handy
- \scratchdimen\topskip
- \advance\scratchdimen -\openstrutheight
+% \scratchdimen\topskip
+% \advance\scratchdimen -\openstrutheight
+% \nointerlineskip
+% \vskip-\scratchdimen
+% \vskip-\lineheight
+% \vbox{\strut}%
\nointerlineskip
- \vskip-\scratchdimen
- \vskip-\lineheight
+ \vskip\dimexpr\openstrutheight-\topskip-\lineheight\relax
\vbox{\strut}%
\fi
\fi
@@ -921,34 +899,6 @@
\fi
\fi}
-% \def\overlaycolumnfootnotes % VERVANGEN !!!
-% {\relax
-% \ifcase\clevernotes\else
-% \checknotepresence
-% \ifnotespresent
-% % the note box has the depth of the notefont
-% % because a column (i.e. first column has no depth,
-% % we need to anchor top down)
-% \bgroup
-% \scratchdimen\ht\firstcolumnbox
-% \advance\scratchdimen -\openstrutdepth % \strutdp
-% \getnoflines\scratchdimen
-% \advance\noflines -2
-% \scratchdimen\noflines\lineheight
-% \advance\scratchdimen \topskip
-% \setbox0\hbox
-% {\lower\scratchdimen\vbox{\placenoteinserts}}%
-% \ht0=\openstrutheight % \strutht
-% \dp0=\openstrutdepth % \strutdp
-% \scratchdimen\ht\lastcolumnbox
-% \global\setbox\lastcolumnbox\vbox to \scratchdimen
-% {\box\lastcolumnbox
-% \vskip-\scratchdimen
-% \restoretextcolor{\box0}}%
-% \egroup
-% \fi
-% \fi}
-
\def\overlaycolumnfootnotes
{\relax
\ifcase\clevernotes
@@ -1214,6 +1164,7 @@
\egroup
\fi
\else
+ % a one liner is not properly handled here, so best rewrite the text then
\showmessage\m!columns{10}\empty
\global\setbox\firstcolumnbox\vbox{\unvbox0}%
\fi
diff --git a/tex/context/base/ppchtex.tex b/tex/context/base/ppchtex.tex
index a88c4dbd8..8f7dd0b5a 100644
--- a/tex/context/base/ppchtex.tex
+++ b/tex/context/base/ppchtex.tex
@@ -297,7 +297,7 @@
% and/or LaTeX2e we had to force \@@dochemicalstyle. Otherwise
% some weird \nullfont error comes up.
-\def\beginlatexmathmodehack%
+\def\beginlatexmathmodehack
{\ifmmode
\let\endlatexmathmodehack=\relax
\else
@@ -320,7 +320,7 @@
\global\loweredsubscriptstrue
\endlatexmathmodehack}
-\def\resetsubscripts%
+\def\resetsubscripts
{\ifloweredsubscripts
\beginlatexmathmodehack
\def\doresetsubscript##1##2%
@@ -337,14 +337,14 @@
\endlatexmathmodehack
\fi}
-\def\doresetsubscripts%
+\def\doresetsubscripts
{\resetsubscripts}
-\def\sethighsubscripts%
+\def\sethighsubscripts
{\resetsubscripts
\let\dosetsubscripts=\relax}
-\def\setlowsubscripts%
+\def\setlowsubscripts
{\def\dosetsubscripts{\setsubscripts}}
\setlowsubscripts
@@ -771,7 +771,7 @@
\def\@@chemicalpostponed{}%
\complexorsimpleempty\startchemical}
-\def\startchemical%
+\def\startchemical
{\bgroup % t.b.v. ungrouped floats
% \loadchemicaldimensions
% \ifskipchemical
@@ -785,7 +785,7 @@
% \fi
\dostartchemical}
-\def\stopchemical%
+\def\stopchemical
{%\ifskipchemical
% \getchemicaldimensions{\dimen0}{\dimen2}{\dimen4}%
% \dimen8=\dimen2\advance\dimen8 by \dimen4
@@ -864,7 +864,7 @@
\setcoordinatesystem point at {\the\horchemical} {\the\verchemical}
\fi}
-\def\resetchemicalcoordinates%
+\def\resetchemicalcoordinates
{\horchemical=0
\verchemical=0
\edef\chemicalxoffset{0}%
@@ -875,7 +875,7 @@
\setcoordinatesystem point at 0 0
\fi}
-\def\restorechemicalcoordinates%
+\def\restorechemicalcoordinates
{%\writestatus{ppchtex}{restoring \the\horchemical,\the\verchemical}%
\edef\chemicalxoffset{\the\horchemical}%
\edef\chemicalyoffset{\the\verchemical}%
@@ -1745,7 +1745,7 @@
{$\simplechemical{#1}{#2}{#3}$%
\egroup} % erbij
-\def\simplechemical%
+\def\simplechemical
{\ifinner
\innerchemicaltrue
\else
diff --git a/tex/context/base/s-abr-01.tex b/tex/context/base/s-abr-01.tex
index 52d943f84..6f16942b2 100644
--- a/tex/context/base/s-abr-01.tex
+++ b/tex/context/base/s-abr-01.tex
@@ -42,6 +42,7 @@
\logo [CMR] {cmr}
\logo [CMYK] {cmyk}
\logo [CODHOST] {CodHost}
+\logo [CALCMATH] {CalcMath}
\logo [CONTEXT] {\ConTeXt}
\logo [CSS] {css}
\logo [CTAN] {ctan}
diff --git a/tex/context/base/spec-def.tex b/tex/context/base/spec-def.tex
index 3f26c8924..fcffbefde 100644
--- a/tex/context/base/spec-def.tex
+++ b/tex/context/base/spec-def.tex
@@ -981,10 +981,10 @@
\defineoutput [dpx] [dpx]
\defineoutput [acrobat] [pdf,ps,tr]
-\defineoutput [xetex] [dpx]
-\defineoutput [xtx] [dpx]
-\defineoutput [xdv] [dvi,xtx]
-\defineoutput [xdv2pdf] [dvi,xtx]
+\defineoutput [xetex] [dpx,xet]
+\defineoutput [xtx] [dpx,xet]
+\defineoutput [xdv] [dvi,xtx,xet]
+\defineoutput [xdv2pdf] [dvi,xtx,xet]
%D Please let me know if we need more. From now on we default
%D to:
diff --git a/tex/context/base/spec-xet.tex b/tex/context/base/spec-xet.tex
new file mode 100644
index 000000000..f814fd6f9
--- /dev/null
+++ b/tex/context/base/spec-xet.tex
@@ -0,0 +1,66 @@
+%D \module
+%D [ file=spec-xtx,
+%D version=2004.11.08,
+%D title=\CONTEXT\ Special Macros,
+%D subtitle=\XETEX\ support,
+%D author={Adam Lindsay \& Hans Hagen \& \unknown},
+%D date=\currentdate,
+%D copyright={Adam Lindsay \& Hans Hagen}]
+
+\unprotect
+
+\definespecial\doinsertfile
+ {\dofileinsertion{xtx}\@@DriverImageType}
+
+\definefileinsertion{xtx}{jpg}{\xtxhandleotherimage}
+\definefileinsertion{xtx}{png}{\xtxhandleotherimage}
+\definefileinsertion{xtx}{gif}{\xtxhandleotherimage}
+\definefileinsertion{xtx}{tif}{\xtxhandleotherimage}
+\definefileinsertion{xtx}{pdf}{\xtxhandlepdfimage }
+
+\def\checkpdfimagepagenumber
+ {\edef\pdfimagepagenumber
+ {\ifx\@@DriverImagePage\empty\else\ifnum\@@DriverImagePage>\zerocount
+ \space page\space\@@DriverImagePage\space
+ \fi\fi}}
+
+\def\xtxhandleotherimage
+ {\XeTeXpicfile "\@@DriverImageFile"
+ \ifdim\@@DriverImageWidth >\zeropoint \!!width \@@DriverImageWidth \space\fi
+ \ifdim\@@DriverImageHeight>\zeropoint \!!height \@@DriverImageHeight \fi
+ \relax}
+
+\def\xtxhandlepdfimage
+ {\checkpdfimagepagenumber
+ \XeTeXpdffile "\@@DriverImageFile"
+ \pdfimagepagenumber
+ \ifdim\@@DriverImageWidth >\zeropoint \!!width \@@DriverImageWidth \space\fi
+ \ifdim\@@DriverImageHeight>\zeropoint \!!height \@@DriverImageHeight \fi
+ \relax}
+
+\def\dogetXTXfiguresize
+ {\setbox\foundexternalfigure\vbox{\XeTeXpicfile "\@@DriverImageFile"}%
+ \xdef\analyzedfigurewidth {\the\wd\foundexternalfigure}%
+ \xdef\analyzedfigureheight{\the\ht\foundexternalfigure}}
+
+\def\dogetXTXpdfsize
+ {\checkpdfimagepagenumber
+ \setbox\foundexternalfigure\vbox{\XeTeXpdffile "\@@DriverImageFile" \pdfimagepagenumber}%
+ \xdef\analyzedfigurewidth {\the\wd\foundexternalfigure}%
+ \xdef\analyzedfigureheight{\the\ht\foundexternalfigure}}
+
+\definefilechecker{xtx}{png}{\dogetXTXfiguresize}
+\definefilechecker{xtx}{jpg}{\dogetXTXfiguresize}
+\definefilechecker{xtx}{gif}{\dogetXTXfiguresize}
+\definefilechecker{xtx}{tif}{\dogetXTXfiguresize}
+\definefilechecker{xtx}{pdf}{\dogetXTXpdfsize }
+
+\definespecial\dogetfiguresize
+ {\dofilechecker{xtx}\@@DriverImageType}
+
+%D The figure object system caused no end of headaches. They all
+%D went away with this single line:
+
+\setupexternalfigures[\c!object=\v!no]
+
+\protect \endinput
diff --git a/tex/context/base/spec-xtx.tex b/tex/context/base/spec-xtx.tex
index 0cd9baadd..799c6ca8d 100644
--- a/tex/context/base/spec-xtx.tex
+++ b/tex/context/base/spec-xtx.tex
@@ -73,64 +73,8 @@
\definespecial\doloadmapfile #1#2{\special{x:fontmapfile #1#2}}
\definespecial\doloadmapline #1#2{\special{x:fontmapline #1#2}}
-%D \XETEX\ supports \type{\doPDFdestination} and
-%D \type{\doPDFbookmark} inherited straight from \DVIPDFMX.
-
-\definespecial\doinsertfile
- {\dofileinsertion{xtx}\@@DriverImageType}
-
-\definefileinsertion{xtx}{jpg}{\xtxhandleotherimage}
-\definefileinsertion{xtx}{png}{\xtxhandleotherimage}
-\definefileinsertion{xtx}{gif}{\xtxhandleotherimage}
-\definefileinsertion{xtx}{tif}{\xtxhandleotherimage}
-\definefileinsertion{xtx}{pdf}{\xtxhandlepdfimage }
-
-\def\checkpdfimagepagenumber
- {\edef\pdfimagepagenumber
- {\ifx\@@DriverImagePage\empty\else\ifnum\@@DriverImagePage>\zerocount
- \space page\space\@@DriverImagePage\space
- \fi\fi}}
-
-\def\xtxhandleotherimage
- {\XeTeXpicfile "\@@DriverImageFile"
- \ifdim\@@DriverImageWidth >\zeropoint \!!width \@@DriverImageWidth \space\fi
- \ifdim\@@DriverImageHeight>\zeropoint \!!height \@@DriverImageHeight \fi
- \relax}
-
-\def\xtxhandlepdfimage
- {\checkpdfimagepagenumber
- \XeTeXpdffile "\@@DriverImageFile"
- \pdfimagepagenumber
- \ifdim\@@DriverImageWidth >\zeropoint \!!width \@@DriverImageWidth \space\fi
- \ifdim\@@DriverImageHeight>\zeropoint \!!height \@@DriverImageHeight \fi
- \relax}
-
-\def\dogetXTXfiguresize
- {\setbox\foundexternalfigure\vbox{\XeTeXpicfile "\@@DriverImageFile"}%
- \xdef\analyzedfigurewidth {\the\wd\foundexternalfigure}%
- \xdef\analyzedfigureheight{\the\ht\foundexternalfigure}}
-
-\def\dogetXTXpdfsize
- {\checkpdfimagepagenumber
- \setbox\foundexternalfigure\vbox{\XeTeXpdffile "\@@DriverImageFile" \pdfimagepagenumber}%
- \xdef\analyzedfigurewidth {\the\wd\foundexternalfigure}%
- \xdef\analyzedfigureheight{\the\ht\foundexternalfigure}}
-
-\definefilechecker{xtx}{png}{\dogetXTXfiguresize}
-\definefilechecker{xtx}{jpg}{\dogetXTXfiguresize}
-\definefilechecker{xtx}{gif}{\dogetXTXfiguresize}
-\definefilechecker{xtx}{tif}{\dogetXTXfiguresize}
-\definefilechecker{xtx}{pdf}{\dogetXTXpdfsize }
-
-\definespecial\dogetfiguresize
- {\dofilechecker{xtx}\@@DriverImageType}
-
-%D The figure object system caused no end of headaches. They all
-%D went away with this single line:
-
-\setupexternalfigures[\c!object=\v!no]
-
-%D
+%D \macros
+%D {dosetuppaper}
\ifx\pdfpagewidth\undefined \else
\definespecial\dosetuppaper#1#2#3%
diff --git a/tex/context/base/supp-fun.tex b/tex/context/base/supp-fun.tex
index 41cd89199..080c3f958 100644
--- a/tex/context/base/supp-fun.tex
+++ b/tex/context/base/supp-fun.tex
@@ -137,6 +137,7 @@
\ExpandBothAfter\doifinstringelse\asciia\asciib
{\noindentation
\dontleavehmode
+ \checkindentation % redo this one
%\ifhmode\hskip-\parindent\fi % sensitive for context mechanism
\keeplinestogether{#6}%
\setbox0\hbox{\definedfont[#2 at #3]#1{#7}\hskip#4}%
@@ -163,7 +164,9 @@
\globaldropcaps\chardef\DroppedStatus\plustwo
\globaldropcaps\hangindent\DroppedIndent
\globaldropcaps\hangafter-\DroppedLines
- \noindent
+% \noindent
+ \noindentation
+ \checkindentation % redo this one
\hskip-\DroppedIndent
\fi
\vbox{\forgetall\box0}%
@@ -257,7 +260,7 @@
\globaldropcaps\hangindent\DroppedIndent
\globaldropcaps\hangafter-\DroppedLines
\globaldropcaps\advance\hangafter \droppedlines
- \hskip-\parindent
+ \hskip-\parindent % brrr
\let\next\AutoDroppedNext
\else
\globaldropcaps\chardef\DroppedStatus\zerocount
diff --git a/tex/context/base/syst-ext.tex b/tex/context/base/syst-ext.tex
index bee6049bf..1388f4f2b 100644
--- a/tex/context/base/syst-ext.tex
+++ b/tex/context/base/syst-ext.tex
@@ -4436,11 +4436,11 @@
\def\dotwodigitrounding#1.#2#3#4\relax{\ifx#2*#1\else#1.#2#3\fi}
\def\integerrounding#1%
- {\@EA\@EA\@EA\dointegerrounding \@EA\WITHOUTPT\the\dimexpr#1\points+32768sp\relax.\relax}
+ {\@EA\@EA\@EA\dointegerrounding \@EA\WITHOUTPT\the\dimexpr#1\points+.5\points\relax.\relax}
\def\onedigitrounding#1%
- {\@EA\@EA\@EA\doonedigitrounding\@EA\WITHOUTPT\the\dimexpr#1\points+32768sp\relax00.*0\relax}
+ {\@EA\@EA\@EA\doonedigitrounding\@EA\WITHOUTPT\the\dimexpr#1\points+.05\points\relax00.*0\relax}
\def\twodigitrounding#1%
- {\@EA\@EA\@EA\dotwodigitrounding\@EA\WITHOUTPT\the\dimexpr#1\points+32768sp\relax000.*00\relax}
+ {\@EA\@EA\@EA\dotwodigitrounding\@EA\WITHOUTPT\the\dimexpr#1\points+.005\points\relax000.*00\relax}
\endETEX
diff --git a/tex/context/base/thrd-pic.tex b/tex/context/base/thrd-pic.tex
index 3c6375cbd..3c25d8a81 100644
--- a/tex/context/base/thrd-pic.tex
+++ b/tex/context/base/thrd-pic.tex
@@ -1339,7 +1339,7 @@ should have been specified.} %.A.................
\def\plot{%
\!ifnextchar"{\!plotfromfile}{\!drawcurve}}
\def\!plotfromfile"#1"{%
- \expandafter\!drawcurve \input #1 /}
+ \expandafter\!drawcurve \normalinput #1 /}
% Command to set piecewise quadratic mode
% See Subsections 5.1, 7.3, and 7.4 of the manual.
@@ -2344,7 +2344,7 @@ should have been specified.} %.A.................
\!setputobject{#1}{#2}%
\!ifnextchar"{\!putfromfile}{\!multiput}}
\def\!putfromfile"#1"{%
- \expandafter\!multiput \input #1 /}
+ \expandafter\!multiput \normalinput #1 /}
\def\!multiput{%
\futurelet\!nextchar\!!multiput}
\def\!!multiput{%
@@ -2634,7 +2634,7 @@ should have been specified.} %.A.................
% ** on "FILE_NAME"
% ** See Subsection 5.6 of the manual.
\def\replot"#1" {%
- \expandafter\!replot\input #1 /}
+ \expandafter\!replot\normalinput #1 /}
\def\!replot#1,#2. {%
\!dimenA=#1sp
\kern\!dimenA\raise#2sp\copy\!plotsymbol\kern-\!dimenA
diff --git a/tex/context/base/type-gyr.tex b/tex/context/base/type-gyr.tex
index acc55e97c..ac625d22f 100644
--- a/tex/context/base/type-gyr.tex
+++ b/tex/context/base/type-gyr.tex
@@ -37,16 +37,19 @@
\definetypescriptprefix [n:pagella] [TeXGyrePagella]
\definetypescriptprefix [n:termes] [TeXGyreTermes]
+\definetypescriptprefix [n:heros] [TeXGyreHeros]
\definetypescriptprefix [n:bonum] [TeXGyreBonum]
\definetypescriptprefix [n:schola] [TeXGyreSchola]
+\definetypescriptprefix [n:adventor][TeXGyreAdventor]
\definetypescriptprefix [f:pagella] [pl]
\definetypescriptprefix [f:termes] [tm]
+\definetypescriptprefix [f:heros] [hv]
\definetypescriptprefix [f:bonum] [bk]
\definetypescriptprefix [f:schola] [cs]
+\definetypescriptprefix [f:adventor][ag]
-\starttypescript [serif] [pagella,termes,bonum,schola] [ec,texnansi,cs,el,qx,rm,t5,t2a,t2b,t2c,l7x]
-% \loadmapfile[\typescriptthree-q\typescriptprefix{f:\typescripttwo}.map]
+\starttypescript [serif] [pagella,termes,heros,bonum,schola,adventor] [ec,texnansi,cs,el,qx,rm,t5,t2a,t2b,t2c,l7x]
\loadmapfile[q\typescriptprefix{f:\typescripttwo}-\typescriptthree.map]
\definefontsynonym [\typescriptprefix{n:\typescripttwo}-Regular] [\typescriptthree-q\typescriptprefix{f:\typescripttwo}r] [encoding=\typescriptthree]
@@ -85,8 +88,30 @@
\stoptypescript
-\starttypescript [map] [pagella,termes,bonum,schola] [ec,texnansi,cs,el,qx,rm,t5,t2a,t2b,t2c,l7x]
-% \loadmapfile[\typescriptthree-q\typescriptprefix{f:\typescripttwo}.map]
+\starttypescript [sans] [heros,adventor] [name]
+ \definefontsynonym [Sans] [\typescriptprefix{n:\typescripttwo}-Regular]
+ \definefontsynonym [SansItalic] [\typescriptprefix{n:\typescripttwo}-Italic]
+ \definefontsynonym [SansBold] [\typescriptprefix{n:\typescripttwo}-Bold]
+ \definefontsynonym [SansBoldItalic] [\typescriptprefix{n:\typescripttwo}-BoldItalic]
+ \definefontsynonym [SansCaps] [\typescriptprefix{n:\typescripttwo}-Caps]
+ \definefontsynonym [SansSlanted] [\typescriptprefix{n:\typescripttwo}-Slanted]
+ \definefontsynonym [SansBoldSlanted] [\typescriptprefix{n:\typescripttwo}-BoldSlanted]
+
+ \definefontvariant [Sans][osf][Caps]
+ \definefontvariant [Sans][sc] [Caps]
+
+ \definefontsynonym [SansRegular] [\typescriptprefix{n:\typescripttwo}-Regular]
+ \definefontsynonym [SansRegularCaps] [\typescriptprefix{n:\typescripttwo}-Caps]
+ \definefontsynonym [SansItalicCaps] [\typescriptprefix{n:\typescripttwo}-ItalicCaps]
+ \definefontsynonym [SansBoldCaps] [\typescriptprefix{n:\typescripttwo}-BoldCaps]
+ \definefontsynonym [SansBoldItalicCaps] [\typescriptprefix{n:\typescripttwo}-BoldItalicCaps]
+ \definefontsynonym [SansCapsCaps] [\typescriptprefix{n:\typescripttwo}-Caps]
+ \definefontsynonym [SansSlantedCaps] [\typescriptprefix{n:\typescripttwo}-ItalicCaps]
+ \definefontsynonym [SansBoldSlantedCaps] [\typescriptprefix{n:\typescripttwo}-BoldItalicCaps]
+
+\stoptypescript
+
+\starttypescript [map] [pagella,termes,bonum,schola,heros,adventor] [all]
\loadmapfile[q\typescriptprefix{f:\typescripttwo}-\typescriptthree.map]
\stoptypescript
@@ -100,7 +125,6 @@
% qplbi TeXGyrePagella-BoldItalic
\starttypescript [serif] [palatino] [ec,texnansi,cs,el,qx,rm,t5,t2a,t2b,t2c,l7x]
-% \loadmapfile[\typescriptthree-qpl.map]
\loadmapfile[qpl-\typescriptthree.map]
\definefontsynonym [Palatino] [\typescriptthree-qplr] [encoding=\typescriptthree]
@@ -134,6 +158,23 @@
\definefontsynonym [Times-BoldSlanted] [Times-BoldItalic]
\stoptypescript
+% TeXGyreHeros
+%
+% qtmr TeXGyreHeros-Regular
+% qtmri TeXGyreHeros-Italic
+% qtmb TeXGyreHeros-Bold
+% qtmbi TeXGyreHeros-BoldItalic
+
+\starttypescript [serif] [heros,helvetica] [ec,texnansi,cs,el,qx,rm,t5,t2a,t2b,t2c,l7x]
+ \loadmapfile[qhv-\typescriptthree.map]
+
+ \definefontsynonym [Helvetica] [\typescriptthree-qhvr] [encoding=\typescriptthree]
+ \definefontsynonym [Helvetica-Oblique] [\typescriptthree-qhvri] [encoding=\typescriptthree]
+ \definefontsynonym [Helvetica-Bold] [\typescriptthree-qhvb] [encoding=\typescriptthree]
+ \definefontsynonym [Helvetica-BoldOblique] [\typescriptthree-qhvbi] [encoding=\typescriptthree]
+ \definefontsynonym [Helvetica-Caps] [\typescriptthree-qhvr-sc] [encoding=\typescriptthree]
+\stoptypescript
+
% TeXGyreBonum
%
% qtmr TeXGyreBonum-Regular
@@ -163,17 +204,25 @@
% qcsbi TeXGyreSchola-BoldItalic
\starttypescript [serif] [schoolbook] [ec,texnansi,cs,el,qx,rm,t5,t2a,t2b,t2c,l7x]
-% \loadmapfile[\typescriptthree-qcs.map]
\loadmapfile[qcs-\typescriptthree.map]
- \definefontsynonym [Schoolbook-Roman] [\typescriptthree-qcsr] [encoding=\typescriptthree]
- \definefontsynonym [Schoolbook-Italic] [\typescriptthree-qcsri] [encoding=\typescriptthree]
- \definefontsynonym [Schoolbook-Bold] [\typescriptthree-qcsb] [encoding=\typescriptthree]
- \definefontsynonym [Schoolbook-BoldItalic] [\typescriptthree-qcsbi] [encoding=\typescriptthree]
- \definefontsynonym [Schoolbook-Roman-Caps] [\typescriptthree-qcsr-sc] [encoding=\typescriptthree]
+ \definefontsynonym [Schoolbook-Roman] [\typescriptthree-qcsr] [encoding=\typescriptthree]
+ \definefontsynonym [Schoolbook-Italic] [\typescriptthree-qcsri] [encoding=\typescriptthree]
+ \definefontsynonym [Schoolbook-Bold] [\typescriptthree-qcsb] [encoding=\typescriptthree]
+ \definefontsynonym [Schoolbook-BoldItalic] [\typescriptthree-qcsbi] [encoding=\typescriptthree]
+ \definefontsynonym [Schoolbook-Roman-Caps] [\typescriptthree-qcsr-sc] [encoding=\typescriptthree]
\definefontsynonym [Schoolbook-Slanted] [Schoolbook-Italic]
\definefontsynonym [Schoolbook-BoldSlanted] [Schoolbook-BoldItalic]
\stoptypescript
+% TeXGyreAdventor
+%
+% qagr TeXGyreAdventor-Regular
+% qagri TeXGyreAdventor-Italic
+% qagb TeXGyreAdventor-Bold
+% qagbi TeXGyreAdventor-BoldItalic
+
+% not previously defined
+
\stoptypescriptcollection
diff --git a/tex/context/base/unic-cjk.tex b/tex/context/base/unic-cjk.tex
index a4155f136..786546318 100644
--- a/tex/context/base/unic-cjk.tex
+++ b/tex/context/base/unic-cjk.tex
@@ -15,4 +15,8 @@
\dostepwiserecurse{172}{215}{1}{\expanded{\defineunicodecommand{\recurselevel}} {\lookaheaduchar}}
\dostepwiserecurse{249}{250}{1}{\expanded{\defineunicodecommand{\recurselevel}} {\lookaheaduchar}}
+% special chars
+
+\dostepwiserecurse{255}{255}{1}{\expanded{\defineunicodecommand{\recurselevel}} {\lookaheaduchar}}
+
\endinput
diff --git a/tex/context/base/x-fig-00.tex b/tex/context/base/x-fig-00.tex
index cb4677fdc..0559a4056 100644
--- a/tex/context/base/x-fig-00.tex
+++ b/tex/context/base/x-fig-00.tex
@@ -140,7 +140,8 @@
\assignfullfilename{#1}\figurefilebase\to\filename
\expanded{\processXMLfilegrouped{\filename.xml}}%
\ifx\figurefilename\empty\else
- \globallet\figurefilebase\figurefilebase
+% \globallet\figurefilebase\figurefilebase
+ \globallet\figurefilebase\filename % hm, bad omen that this is needed
\fi
\egroup
\fi}
diff --git a/tex/context/base/x-res-01.tex b/tex/context/base/x-res-01.tex
index 83f747f83..14dcbc570 100644
--- a/tex/context/base/x-res-01.tex
+++ b/tex/context/base/x-res-01.tex
@@ -256,6 +256,7 @@
{\externalfigure
[\XMLflush{rl:file}]
[maxheight=80pt,frame=off,maxwidth=130pt,factor=max]}%
+% [factor=max]}%
[GridPg]%
\let\FigWid\figurenaturalwidth
\let\FigHei\figurenaturalheight
@@ -292,8 +293,8 @@
\doifXMLdata{rl:copyright}
{\NC copyright \NC \XMLflush{rl:copyright} \NC \NR}
\doifXMLdata{rl:status}
- {\doif{\XMLflush{rl:status}}{obsolete}
- {\NC status \NC \bf\darkred\XMLflush{rl:status} \NC \NR}
+ {\doifelse{\XMLflush{rl:status}}{obsolete}
+ {\NC status \NC \dontleavehmode \color[darkred]{\bf\XMLflush{rl:status}} \NC \NR}
{\NC status \NC \XMLflush{rl:status} \NC \NR}}
\doifXMLdata{rl:comment}
{\NC comment \NC \XMLflush{rl:comment} \NC \NR}
diff --git a/tex/context/base/x-res-04.tex b/tex/context/base/x-res-04.tex
index 83998a4c4..4d4d4dc7b 100644
--- a/tex/context/base/x-res-04.tex
+++ b/tex/context/base/x-res-04.tex
@@ -213,7 +213,8 @@
\processXMLfilegrouped\filename}
\donothing
\ifx\figurefilename\empty \else
- \global\let\figurefilebase\figurefilebase
+% \global\let\figurefilebase\figurefilebase
+ \globallet\figurefilebase\filename % hm, bad omen that this is needed
\fi
\egroup
\fi}
diff --git a/tex/context/base/x-res-12.tex b/tex/context/base/x-res-12.tex
index c4bc4386f..1cff48717 100644
--- a/tex/context/base/x-res-12.tex
+++ b/tex/context/base/x-res-12.tex
@@ -45,7 +45,7 @@
\stopXMLignore
\stopXMLmapping
\stopnointerference
- \setanalyzedfiguredimensions\!!ten}%
+ \setanalyzedfiguredimensions\!!twelve}%
\fi\fi}
\let\doanalyzefiguredimensionsexternal\doanalyzefiguredimensionsrlx
diff --git a/tex/context/base/xtag-ext.tex b/tex/context/base/xtag-ext.tex
index 4de239082..9eea3643f 100644
--- a/tex/context/base/xtag-ext.tex
+++ b/tex/context/base/xtag-ext.tex
@@ -340,7 +340,7 @@
%D This gives:
%D
%D \starttyping
-%D test Äk <b>test</b> <e>ediaeresis</e> test <e>ediaeresis</e>
+%D test ë test</b> <e>ediaeresis</e> test <e>ediaeresis</e>
%D \stoptyping
\def\XMLprocessingparameter#1%
diff --git a/web2c/context.cnf b/web2c/context.cnf
index 9121493ca..6ca969e84 100644
--- a/web2c/context.cnf
+++ b/web2c/context.cnf
@@ -71,7 +71,7 @@ MISCFONTS = .;$TEXMF/fonts/misc//
ENCFONTS = .;$TEXMF/{fonts/{data,enc},dvips,pdftex,dvipdfm}//
CMAPFONTS = .;$TEXMF/fonts/cmap//
SFDFONTS = .;$TEXMF/fonts/sfd//
-OPENTYPEFONTS = .;$TEXMF/fonts/opentype//;$OSFONTDIR
+OPENTYPEFONTS = .;$TEXMF/fonts/{data,opentype}//;$OSFONTDIR
OFMFONTS = .;$TEXMF/fonts/{ofm,tfm}//
OPLFONTS = .;$TEXMF/fonts/opl//;
@@ -95,7 +95,8 @@ CTXDEVTXPATH=unset
CTXDEVMPPATH=unset
CTXDEVMFPATH=unset
-TEXINPUTS = .;{$TXRESOURCES}//;{$CTXDEVTXPATH};$TEXMF/{pdftex,pdfetex,etex,xetex,omega,tex}/{context,plain,generic,}//
+#~ TEXINPUTS = .;{$TXRESOURCES}//;{$CTXDEVTXPATH};$TEXMF/{pdftex,pdfetex,etex,xetex,omega,tex}/{context,plain,generic,}//
+TEXINPUTS = .;{$TXRESOURCES}//;{$CTXDEVTXPATH};$TEXMF/{pdftex,pdfetex,etex,xetex,omega,tex}/{$progname,plain,generic,}//
% TEXINPUTS.context = .;{$TXRESOURCES}//;{$CTXDEVTXPATH};$TEXMF/{pdftex,pdfetex,etex,xetex,omega,tex}/{context,plain,generic,}//
% TEXINPUTS.context = .;{$TXRESOURCES}//;{$CTXDEVTXPATH};$TEXMF/{tex,omega}/{context,plain,generic}//
@@ -160,6 +161,25 @@ TEX = texexec --batch --once --nomp
% These values are about the same as in the main
% configuration file (dest_names_size added).
+buf_size = 1000000
+extra_mem_bot = 1000000
+extra_mem_top = 2000000
+font_max = 2500
+font_mem_size = 1000000
+hash_extra = 50000
+main_memory = 2000000
+max_strings = 150000
+nest_size = 500
+pdf_mem_size = 250000
+param_size = 10000
+pool_free = 47500
+pool_size = 1000000
+save_size = 10000
+stack_size = 5000
+string_vacancies = 100000
+trie_size = 500000
+hyph_size = 8191
+
buf_size.context = 4000000 % needed for omega bug
extra_mem_bot.context = 2000000
extra_mem_top.context = 4000000
@@ -176,7 +196,7 @@ pool_size.context = 2000000
save_size.context = 50000
stack_size.context = 10000
string_vacancies.context = 125000
-trie_size.context = 250000
+trie_size.context = 500000
hyph_size.context = 8191 % prime
obj_tab_size.context = 300000 % obsolete in 1.40+