From 95324bdc01bb604582f0bd29bc446329b3ad0f18 Mon Sep 17 00:00:00 2001 From: Hans Hagen Date: Tue, 23 May 2006 16:32:00 +0200 Subject: stable 2006.05.23 16:32 --- scripts/context/ruby/base/tex.rb | 32 ++++++++--- scripts/context/ruby/ctxtools.rb | 2 +- scripts/context/ruby/texexec.rb | 5 +- tex/context/base/cont-new.tex | 2 +- tex/context/base/context.tex | 4 +- tex/context/base/core-lst.tex | 4 +- tex/context/base/core-rul.tex | 109 +++++++++++++++++++++----------------- tex/context/base/core-snc.tex | 27 +++++----- tex/context/base/core-spa.tex | 6 +-- tex/context/base/font-ini.tex | 8 +++ tex/context/base/sort-ini.tex | 2 +- tex/context/base/spec-def.tex | 1 + tex/context/base/x-newmml.tex | 68 ++++++++++++------------ tex/context/base/x-sm2om.xsl | 108 ++++++++++++++++++++++++++++++++----- tex/context/interface/keys-cz.xml | 2 +- tex/context/interface/keys-de.xml | 2 +- tex/context/interface/keys-en.xml | 2 +- tex/context/interface/keys-fr.xml | 2 +- tex/context/interface/keys-it.xml | 2 +- tex/context/interface/keys-nl.xml | 2 +- tex/context/interface/keys-ro.xml | 2 +- 21 files changed, 259 insertions(+), 133 deletions(-) diff --git a/scripts/context/ruby/base/tex.rb b/scripts/context/ruby/base/tex.rb index 61701e501..dc1362e90 100644 --- a/scripts/context/ruby/base/tex.rb +++ b/scripts/context/ruby/base/tex.rb @@ -8,8 +8,11 @@ # info : j.hagen@xs4all.nl # www : www.pragma-ade.com -# todo: write systemcall for mpost to file so that it can be run -# faster +# todo: +# +# - write systemcall for mpost to file so that it can be run faster +# - use -8bit and -progname +# # report ? @@ -83,6 +86,7 @@ class TEX ['tex','pdftex','pdfetex','standard'] .each do |e| @@texengines[e] = 'pdfetex' end ['aleph','omega'] .each do |e| @@texengines[e] = 'aleph' end ['xetex'] .each do |e| @@texengines[e] = 'xetex' end + ['luatex'] .each do |e| @@texengines[e] = 'luatex' end ['metapost','mpost', 'standard'] .each do |e| @@mpsengines[e] = 'mpost' end @@ -118,7 +122,7 @@ class TEX ['plain','mpost'] .each do |f| @@mpsformats[f] = 'plain' end ['metafun','context','standard'] .each do |f| @@mpsformats[f] = 'metafun' end - ['pdfetex','aleph','omega'] .each do |p| @@prognames[p] = 'context' end + ['pdfetex','aleph','omega','xetex','luatex'] .each do |p| @@prognames[p] = 'context' end ['mpost'] .each do |p| @@prognames[p] = 'metafun' end ['plain','default','standard','mptopdf'] .each do |f| @@texmethods[f] = 'plain' end @@ -138,6 +142,8 @@ class TEX # @@runoptions['xetex'] = ['--output-driver \\\"-d 4 -V 5\\\"'] # we need the pos pass @@runoptions['xetex'] = ['--no-pdf'] # from now on we assume (x)dvipdfmx to be used + @@runoptions['luatex'] = ['--progname=pdftex'] + @@booleanvars = [ 'batchmode', 'nonstopmode', 'fast', 'fastdisabled', 'silentmode', 'final', 'paranoid', 'notparanoid', 'nobanner', 'once', 'allpatterns', @@ -338,7 +344,7 @@ class TEX def prefixed(format,engine) case engine - when /etex|eetex|pdfetex|pdfeetex|pdfxtex|xpdfetex|eomega|aleph|xetex/io then + when /etex|eetex|pdfetex|pdfeetex|pdfxtex|xpdfetex|eomega|aleph|xetex|luatex/io then "*#{format}" else format @@ -730,13 +736,23 @@ class TEX bomdone = true end if str =~ /^\%\s*(.*)/o then - vars = Hash.new + # we only accept lines with key=value pairs + vars, ok = Hash.new, true $1.split(/\s+/o).each do |s| k, v = s.split('=') - vars[k] = v + if k && v then + vars[k] = v + else + ok = false + break + end end - @@preamblekeys.each do |v| - setvariable(v[1],vars[v[0]]) if vars.key?(v[0]) + if ok then + # we have a valid line + @@preamblekeys.each do |v| + setvariable(v[1],vars[v[0]]) if vars.key?(v[0]) && vars[v[0]] + end + break end else break diff --git a/scripts/context/ruby/ctxtools.rb b/scripts/context/ruby/ctxtools.rb index ee967ec31..69c6885b4 100644 --- a/scripts/context/ruby/ctxtools.rb +++ b/scripts/context/ruby/ctxtools.rb @@ -2373,7 +2373,7 @@ commandline.registeraction('brandfiles' , 'add context copyright notice [ commandline.registeraction('platformize' , 'replace line-endings [--recurse --force] [pattern]') commandline.registeraction('dependencies' , 'analyze depedencies witin context [--compact] [rootfile]') commandline.registeraction('updatecontext' , 'download latest version and remake formats') -commandline.registeraction('disarmutfbom' , 'remove utf bom [==force]') +commandline.registeraction('disarmutfbom' , 'remove utf bom [--force]') commandline.registervalue('type','') diff --git a/scripts/context/ruby/texexec.rb b/scripts/context/ruby/texexec.rb index 06e74812d..4194874e9 100644 --- a/scripts/context/ruby/texexec.rb +++ b/scripts/context/ruby/texexec.rb @@ -490,13 +490,15 @@ class Commands job.setvariable('texengine','xetex') elsif @commandline.oneof('aleph') then job.setvariable('texengine','aleph') + elsif @commandline.oneof('luatex') then + job.setvariable('texengine','luatex') else job.setvariable('texengine','standard') end if (str = @commandline.option('backend')) && ! str.standard? && ! str.empty? then job.setvariable('backend',str) - elsif @commandline.oneof('pdfetex','pdftex','pdf') then + elsif @commandline.oneof('pdfetex','pdftex','pdf','luatex') then job.setvariable('backend','pdftex') elsif @commandline.oneof('dvipdfmx','dvipdfm','dpx','dpm') then job.setvariable('backend','dvipdfmx') @@ -511,6 +513,7 @@ class Commands else case job.getvariable('texengine') when 'pdfetex' then job.setvariable('backend','pdftex') + when 'luatex' then job.setvariable('backend','pdftex') when 'xetex' then job.setvariable('backend','xetex') when 'aleph' then job.setvariable('backend','dvipdfmx') else diff --git a/tex/context/base/cont-new.tex b/tex/context/base/cont-new.tex index b2f73df50..83b1c647e 100644 --- a/tex/context/base/cont-new.tex +++ b/tex/context/base/cont-new.tex @@ -11,7 +11,7 @@ %C therefore copyrighted by \PRAGMA. See mreadme.pdf for %C details. -\newcontextversion{2006.05.18 20:03} +\newcontextversion{2006.05.23 16:32} %D This file is loaded at runtime, thereby providing an %D excellent place for hacks, patches, extensions and new diff --git a/tex/context/base/context.tex b/tex/context/base/context.tex index d279b2339..e072063cd 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.05.18 20:03} +\def\contextversion{2006.05.23 16:32} %D For those who want to use this: @@ -357,7 +357,7 @@ %D Sorting: -% \input sort-ini.tex +\input sort-ini.tex %D Only the basic XML parser and remapper are part of the core. %D These macrosa re loaded last since they overload and|/|or diff --git a/tex/context/base/core-lst.tex b/tex/context/base/core-lst.tex index e63212575..74a6e34d7 100644 --- a/tex/context/base/core-lst.tex +++ b/tex/context/base/core-lst.tex @@ -1040,10 +1040,10 @@ \setvalue{\e!complete#1}% {\dodoubleempty\docompletecombinedlist[#1]}} -\def\definecombinedlist% +\def\definecombinedlist {\dotripleempty\dodefinecombinedlist} -\def\placecombinedlist% +\def\placecombinedlist {\dodoubleempty\doplacecombinedlist} % new and yet undocumented (used in cocoa qa) diff --git a/tex/context/base/core-rul.tex b/tex/context/base/core-rul.tex index 509422e3d..c7c480c1b 100644 --- a/tex/context/base/core-rul.tex +++ b/tex/context/base/core-rul.tex @@ -3060,7 +3060,9 @@ %D Although we could have used a scratch one, we first %D declare a boolean. -\newif\ifbackgroundsplit +% 0=no-split, 1=no-split+indent, 2=split, 3=split+indent + +\chardef\backgroundsplitmode\plusthree %D The \type{\vbox to \lineheight{}\vskip\zeropoint} %D construction gives the first real line a decent height by @@ -3082,62 +3084,73 @@ %D lineheight. I'll probably forget to apply this trick %D elsewhere. -\def\dostopbackground% improved version (i hope) +\def\dostopbackground % improved version (i hope) {\endgraf \removelastskip \egroup \dimen2\leftskip % new ** \forgetall - \splitmaxdepth\boxmaxdepth - \splittopskip\topskip - \setbox2\vsplit0 to \lineheight % get rid of fake line - \loop - \ifdim\pagetotal=\zeropoint % empty page - \scratchdimen\textheight - \chardef\backgroundsplit\plusone % split to max height - \else - \scratchdimen\pagegoal - \setbox\scratchbox\vbox{\@@agbefore}% - \advance\scratchdimen -\ht\scratchbox - \advance\scratchdimen -\pagetotal - \chardef\backgroundsplit\plustwo % split to partial height - \fi - \advance\scratchdimen -\@@agtopoffset - \advance\scratchdimen -\@@agbottomoffset \relax - \ifdim\scratchdimen>2\lineheight\relax % reasonable, will be configurable - \ifdim\ht0>\scratchdimen % larger than page - \setbox2\vsplit0 to \scratchdimen + \ifinsidefloat + \chardef\backgroundsplitmode\zerocount + \fi + \ifcase\backgroundsplitmode + \localframed[\??ag][\c!offset=\v!overlay]{\box0}% + \or + \hskip\dimen2 + \localframed[\??ag][\c!offset=\v!overlay]{\box0}% + \else + \splitmaxdepth\boxmaxdepth + \splittopskip\topskip + \setbox2\vsplit0 to \lineheight % get rid of fake line + \loop + \ifdim\pagetotal=\zeropoint % empty page + \scratchdimen\textheight + \chardef\backgroundsplit\plusone % split to max height \else - \setbox2\box0 - \chardef\backgroundsplit\zerocount % no split + \scratchdimen\pagegoal + \setbox\scratchbox\vbox{\@@agbefore}% + \advance\scratchdimen -\ht\scratchbox + \advance\scratchdimen -\pagetotal + \chardef\backgroundsplit\plustwo % split to partial height \fi - \setbox2\vbox \ifcase\backgroundsplit\or to \textheight \fi % max split - {\vskip\@@agtopoffset - \popsplitproperties - \unvcopy2 - \prevdepth\dp2 - \obeydepth - \vskip\@@agbottomoffset - \vfill} - \@@agbefore - \ifcase\backgroundsplit\or\or % partial split - \ifdim\pagegoal<\maxdimen - \pagegoal=1.2\pagegoal % be a bit more tolerant + \advance\scratchdimen -\@@agtopoffset + \advance\scratchdimen -\@@agbottomoffset \relax + \ifdim\scratchdimen>2\lineheight\relax % reasonable, will be configurable + \ifdim\ht0>\scratchdimen % larger than page + \setbox2\vsplit0 to \scratchdimen + \else + \setbox2\box0 + \chardef\backgroundsplit\zerocount % no split \fi + \setbox2\vbox \ifcase\backgroundsplit\or to \textheight \fi % max split + {\vskip\@@agtopoffset + \popsplitproperties + \unvcopy2 + \prevdepth\dp2 + \obeydepth + \vskip\@@agbottomoffset + \vfill} + \@@agbefore + \ifcase\backgroundsplit\or\or % partial split + \ifdim\pagegoal<\maxdimen + \pagegoal=1.2\pagegoal % be a bit more tolerant + \fi + \fi + \startlinecorrection + %\localframed[\??ag][\c!offset=\v!overlay]{\hskip\@@agleftoffset\box2\hskip\@@agrightoffset}% + \ifnum\backgroundsplitmode=\plusthree \hskip\dimen2 \fi % + \localframed[\??ag][\c!offset=\v!overlay]{\box2}% new ** + \stoplinecorrection + \ifcase\backgroundsplit % no split + \@@agafter + \else % some split + \vfill\eject % geen \page ! + \fi + \else + \page \fi - \startlinecorrection - %\localframed[\??ag][\c!offset=\v!overlay]{\hskip\@@agleftoffset\box2\hskip\@@agrightoffset}% - \hskip\dimen2\localframed[\??ag][\c!offset=\v!overlay]{\box2}% new ** - \stoplinecorrection - \ifcase\backgroundsplit % no split - \@@agafter - \else % some split - \vfill\eject % geen \page ! - \fi - \else - \page - \fi - \ifdim\ht0>\zeropoint \repeat + \ifdim\ht0>\zeropoint \repeat + \fi \egroup \endgraf} diff --git a/tex/context/base/core-snc.tex b/tex/context/base/core-snc.tex index 55c6e15df..ac6960f4d 100644 --- a/tex/context/base/core-snc.tex +++ b/tex/context/base/core-snc.tex @@ -116,8 +116,21 @@ \def\dopresyncposition[#1][#2]{\setxvalue{\s!preset:\s!syncpos:#1}{\noexpand\dodopresyncposition{#1}{#2}}} \def\flushsyncpositions % this order ! - {\the\presetsyncpositions - \the\resetsyncpositions} + {\begingroup + \the\presetsyncpositions + \the\resetsyncpositions + \endgroup} + +\def\flushsyncxxsets#1% + {\setbox\scratchbox\hbox{\the#1}% + \ifvoid\scratchbox\else + \prewordbreak \let\prewordbreak\relax % only once + \smashbox\scratchbox + \box\scratchbox + \fi} + +\def\flushsyncresets {\flushsyncxxsets\resetsyncpositions } +\def\flushsyncpresets{\flushsyncxxsets\presetsyncpositions} % \appendtoks \flushsyncpositions \to \everypar % \appendtoks \flushsyncpositions \to \everyheadstart @@ -126,16 +139,6 @@ % % \appendtoks \flushsyncpositions \to \neverypar -\def\flushsyncxxsets#1#2% - {\setbox\scratchbox\hbox{\the#1}% - \ifvoid\scratchbox\else - \smashbox\scratchbox - #2\box\scratchbox - \fi} - -\def\flushsyncresets {\flushsyncxxsets\resetsyncpositions \relax} -\def\flushsyncpresets{\flushsyncxxsets\presetsyncpositions\prewordbreak} % check prewordbreak - \protect \endinput \starttext diff --git a/tex/context/base/core-spa.tex b/tex/context/base/core-spa.tex index 406a50ef5..4e53a6dcf 100644 --- a/tex/context/base/core-spa.tex +++ b/tex/context/base/core-spa.tex @@ -3932,14 +3932,14 @@ % see later for the real definition, which in the simple case is: \def\doalignline#1#2% \\ == newline - {\bgroup + {\begingroup \setlocalhsize % new \def\\{\egroup\par\doalignline{#1}{#2}\bgroup}% \dowithnextbox - {\noindent + {\noindentation % was \ noindent \hbox to \localhsize {\ifcase\alignstrutmode\or\strut\fi - #1\unhbox\nextbox#2}\egroup} + #1\unhbox\nextbox#2}\endgroup} \hbox} % directe commando's diff --git a/tex/context/base/font-ini.tex b/tex/context/base/font-ini.tex index d8a06d68c..75c59605b 100644 --- a/tex/context/base/font-ini.tex +++ b/tex/context/base/font-ini.tex @@ -3846,6 +3846,13 @@ \def\definestyle{\definealternativestyle} +%D Maybe too geneneric, but probably ok is the following. (Maybe one +%D day we will use a dedicated grouped command for styles.) + +\appendtoks + \let\groupedcommand\thirdofthreearguments +\to \simplifiedcommands + %D This command also defines the keyword as command. This means %D that the example definition of \type{bold} we gave before, %D results in a command \type{\bold} which can be used as: @@ -4675,6 +4682,7 @@ \definealternativestyle [\v!normal] [\tf] [] \definealternativestyle [\v!bold] [\bf] [] \definealternativestyle [\v!type] [\tt] [] +\definealternativestyle [\v!mono] [\tt] [] \definealternativestyle [\v!slanted] [\sl] [] \definealternativestyle [\v!italic] [\it] [] \definealternativestyle [\v!boldslanted,\v!slantedbold] [\bs] [] diff --git a/tex/context/base/sort-ini.tex b/tex/context/base/sort-ini.tex index e3c6daa28..86f3091c0 100644 --- a/tex/context/base/sort-ini.tex +++ b/tex/context/base/sort-ini.tex @@ -97,7 +97,7 @@ {\edef\utfsortb{\@EA\string\csname\doutfunihash{#1}{\recurselevel}\endcsname}% \ifx\utfsortb\utfsorta \else \edef\utfsortc{\numbertoutf{\numexpr#1*256+\recurselevel\relax}}% - \expanded{\exportsortshortcut{\utfsortc}{\utfsortb}}% + \expanded{\exportsortshortcut{\utfsortc}{\utfsortb\space}}% space is really needed \fi}% \egroup} diff --git a/tex/context/base/spec-def.tex b/tex/context/base/spec-def.tex index a4db1b544..62313585e 100644 --- a/tex/context/base/spec-def.tex +++ b/tex/context/base/spec-def.tex @@ -964,6 +964,7 @@ \defineoutput [xetex] [dpx] \defineoutput [xtx] [dpx] \defineoutput [xdv] [dvi,xtx] +\defineoutput [xdv2pdf] [dvi,xtx] %D Please let me know if we need more. From now on we default %D to: diff --git a/tex/context/base/x-newmml.tex b/tex/context/base/x-newmml.tex index 517d67f55..e45f52bc0 100644 --- a/tex/context/base/x-newmml.tex +++ b/tex/context/base/x-newmml.tex @@ -2375,50 +2375,50 @@ \doifXMLparelse{apply}{open} \donothing{\getXMLarguments{apply}{open="("}}% slow \doifXMLparelse{apply}{close}\donothing{\getXMLarguments{apply}{close=")"}}% slow \fi - \doifXMLparelse{apply}{open} - {\def\MMLdoL{\left \XMLpar{apply}{open} {(}} - \def\MMLdoR{\right\XMLpar{apply}{close}{)}}} - {\let\MMLdoL\donothing - \let\MMLdoR\donothing} \advance\MMLapplydepth\plusone \begingroup - \let\MMLctempresetlist\empty - \doifelse {\getXMLstackname\plusone} {apply} { - % ... .. - \doifelseMMCfunctioninapply \plusone {plus,minus} { - % yet incomplete and rather untested - % x - } { - \MMLcreset - } - \MMLdoL - \getXMLstackdata\plusone - \ifconditional\somepostponedMMLactions - \postponedMMLactions - \else - \left(\MMLcreset\getXMLstackdata\plustwo\right) - \fi - \MMLdoR + \doifXMLparelse{apply}{open} % now inside the group + {\edef\MMLdoL{\noexpand\left \XMLpar{apply}{open} {(}} + \edef\MMLdoR{\noexpand\right\XMLpar{apply}{close}{)}}} + {\let\MMLdoL\donothing + \let\MMLdoR\donothing} + \let\MMLctempresetlist\empty + \doifelse {\getXMLstackname\plusone} {apply} { + % ... .. + \doifelseMMCfunctioninapply \plusone {plus,minus} { + % yet incomplete and rather untested + % x } { - \doifelse {\getXMLstackname\plusone} {fn} { + \MMLcreset + } + \MMLdoL + \getXMLstackdata\plusone + \ifconditional\somepostponedMMLactions + \postponedMMLactions + \else + \left(\MMLcreset\getXMLstackdata\plustwo\right) + \fi + \MMLdoR + } { + \doifelse {\getXMLstackname\plusone} {fn} { + % \MMLdoL/R are to be taken care of in the next setup + \directsetup{mmc:fn:apply} + } { + \doifelse {\getXMLstackname\plusone} {csymbol} { % \MMLdoL/R are to be taken care of in the next setup - \directsetup{mmc:fn:apply} + \directsetup{mmc:csymbol:apply} } { - \doifelse {\getXMLstackname\plusone} {csymbol} { + \doifelse {\getXMLstackname\plusone} {ci} { % \MMLdoL/R are to be taken care of in the next setup - \directsetup{mmc:csymbol:apply} + \directsetup{mmc:ci:apply} } { - \doifelse {\getXMLstackname\plusone} {ci} { - % \MMLdoL/R are to be taken care of in the next setup - \directsetup{mmc:ci:apply} - } { - \MMLdoL - \getXMLstackdata\plusone - \MMLdoR - } + \MMLdoL + \getXMLstackdata\plusone + \MMLdoR } } } + } \endgroup \advance\MMLapplydepth\minusone \directsetup{apply:flush} diff --git a/tex/context/base/x-sm2om.xsl b/tex/context/base/x-sm2om.xsl index a37ce1e75..241452dbf 100644 --- a/tex/context/base/x-sm2om.xsl +++ b/tex/context/base/x-sm2om.xsl @@ -39,6 +39,25 @@ /x-openmath.xsl + + + + + + + + + + + + + + + + + + + @@ -62,9 +81,26 @@ - - - + + + + + + + + + + + + + + + + + + + + @@ -111,16 +147,62 @@ - - interval1 - interval_ - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + interval1 + interval_ + + + + + + + + + diff --git a/tex/context/interface/keys-cz.xml b/tex/context/interface/keys-cz.xml index e165887d8..c9a48bcf6 100644 --- a/tex/context/interface/keys-cz.xml +++ b/tex/context/interface/keys-cz.xml @@ -1,6 +1,6 @@ - + diff --git a/tex/context/interface/keys-de.xml b/tex/context/interface/keys-de.xml index 281f596ba..47813d71e 100644 --- a/tex/context/interface/keys-de.xml +++ b/tex/context/interface/keys-de.xml @@ -1,6 +1,6 @@ - + diff --git a/tex/context/interface/keys-en.xml b/tex/context/interface/keys-en.xml index 1e5439012..d6114118b 100644 --- a/tex/context/interface/keys-en.xml +++ b/tex/context/interface/keys-en.xml @@ -1,6 +1,6 @@ - + diff --git a/tex/context/interface/keys-fr.xml b/tex/context/interface/keys-fr.xml index 5977c0a3a..156aebbb7 100644 --- a/tex/context/interface/keys-fr.xml +++ b/tex/context/interface/keys-fr.xml @@ -1,6 +1,6 @@ - + diff --git a/tex/context/interface/keys-it.xml b/tex/context/interface/keys-it.xml index c5422a6c6..0d1c06664 100644 --- a/tex/context/interface/keys-it.xml +++ b/tex/context/interface/keys-it.xml @@ -1,6 +1,6 @@ - + diff --git a/tex/context/interface/keys-nl.xml b/tex/context/interface/keys-nl.xml index a65e8f658..d0c54aed9 100644 --- a/tex/context/interface/keys-nl.xml +++ b/tex/context/interface/keys-nl.xml @@ -1,6 +1,6 @@ - + diff --git a/tex/context/interface/keys-ro.xml b/tex/context/interface/keys-ro.xml index 204033ebd..7a80b3881 100644 --- a/tex/context/interface/keys-ro.xml +++ b/tex/context/interface/keys-ro.xml @@ -1,6 +1,6 @@ - + -- cgit v1.2.3