From 8098b3762ab0700f87d8dd18e3c37e43b5b54357 Mon Sep 17 00:00:00 2001 From: Hans Hagen Date: Tue, 23 Feb 2010 14:10:00 +0100 Subject: beta 2010.02.23 14:10 --- tex/context/base/buff-ini.lua | 19 +++--- tex/context/base/buff-ini.mkiv | 11 ++- tex/context/base/cont-new.tex | 2 +- tex/context/base/context.mkiv | 2 +- tex/context/base/context.tex | 2 +- tex/context/base/font-ini.mkiv | 2 +- tex/context/base/font-otb.lua | 2 +- tex/context/base/font-otf.lua | 2 +- tex/context/base/font-tfm.lua | 8 ++- tex/context/base/luat-cbk.lua | 18 ++--- tex/context/base/luat-dum.lua | 2 +- tex/context/base/node-ini.mkiv | 19 ------ tex/context/base/node-pag.lua | 11 +-- tex/context/base/node-tsk.lua | 4 +- tex/context/base/spac-hor.mkiv | 96 ++++++++++++++++++++++---- tex/context/base/spac-ver.mkiv | 102 +++++++++++++++++++++++----- tex/context/base/toks-ini.lua | 2 +- tex/context/base/type-otf.mkiv | 1 + tex/context/base/x-fig-03.tex | 10 +-- tex/context/bib/bibl-apa-de.tex | 4 +- tex/generic/context/luatex-fonts-merged.lua | 16 +++-- 21 files changed, 240 insertions(+), 95 deletions(-) diff --git a/tex/context/base/buff-ini.lua b/tex/context/base/buff-ini.lua index 1c20e24ac..1a76791ad 100644 --- a/tex/context/base/buff-ini.lua +++ b/tex/context/base/buff-ini.lua @@ -217,15 +217,12 @@ end -- The optional prefix hack is there for the typesetbuffer feature and -- in mkii we needed that (this hidden feature is used in a manual). -local function prepared(name,list) - if not name or name == "" then - name = tex.jobname - end - if list then - -- ok - else +local function prepared(name,list) -- list is optional + if not list or list == "" then list = name - name = tex.jobname .. "-" .. name .. ".tmp" + end + if not name or name == "" then + name = tex.jobname .. "-" .. list .. ".tmp" end local content = buffers.collect(list,nil) or "" if content == "" then @@ -237,11 +234,15 @@ end local capsule = "\\starttext\n%s\n\\stoptext\n" local command = "context %s" -function buffers.save(name,list,encapsulate) +function buffers.save(name,list,encapsulate) -- list is optional local name, content = prepared(name,list) io.savedata(name, (encapsulate and format(capsule,content)) or content) end +function commands.savebuffer(list,name) -- name is optional + buffers.save(name,list) +end + function buffers.run(name,list,encapsulate) local name, content = prepared(name,list) local data = io.loaddata(name) diff --git a/tex/context/base/buff-ini.mkiv b/tex/context/base/buff-ini.mkiv index 001796cfe..c6300a624 100644 --- a/tex/context/base/buff-ini.mkiv +++ b/tex/context/base/buff-ini.mkiv @@ -338,8 +338,15 @@ \c!after=] % only mkiv: +% +% \startbuffer[x] +% x +% \stopbuffer +% +% \savebuffer[x][temp.log] + +\unexpanded\def\savebuffer{\dodoubleempty\dosavebuffer} -\def\savebuffer{\dosingleempty\dosavebuffer} -\def\dosavebuffer[#1]{\ctxlua{buffers.save("#1")}} +\def\dosavebuffer[#1][#2]{\ctxlua{commands.savebuffer("#1","#2")}} \protect \endinput diff --git a/tex/context/base/cont-new.tex b/tex/context/base/cont-new.tex index 9022a8e99..45e1675b7 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{2010.02.22 19:38} +\newcontextversion{2010.02.23 14:10} %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.mkiv b/tex/context/base/context.mkiv index a650f03b9..826b90c7e 100644 --- a/tex/context/base/context.mkiv +++ b/tex/context/base/context.mkiv @@ -73,7 +73,7 @@ \loadmarkfile{node-fin} \loadmarkfile{node-mig} \loadmarkfile{node-par} -\loadmarkfile{node-pag} +%loadmarkfile{node-pag} \loadmarkfile{core-var} diff --git a/tex/context/base/context.tex b/tex/context/base/context.tex index eb2750649..bbc70ee28 100644 --- a/tex/context/base/context.tex +++ b/tex/context/base/context.tex @@ -20,7 +20,7 @@ %D your styles an modules. \edef\contextformat {\jobname} -\edef\contextversion{2010.02.22 19:38} +\edef\contextversion{2010.02.23 14:10} %D For those who want to use this: diff --git a/tex/context/base/font-ini.mkiv b/tex/context/base/font-ini.mkiv index ef2e259c0..94d14de8c 100644 --- a/tex/context/base/font-ini.mkiv +++ b/tex/context/base/font-ini.mkiv @@ -483,7 +483,7 @@ \let\currentmathsize\empty -\def\mathsizesuffix{\ifcase0\currentmathsize\or\mathtextsuffix\or\mathscriptscriptsuffix\or\mathscriptsuffix\fi} +\def\mathsizesuffix{\ifcase0\currentmathsize\or\mathtextsuffix\or\mathscriptsuffix\or\mathscriptscriptsuffix\fi} \def\dodosetmathfamily#1#2% {\ifcsname\fontclass \fontbody\c!mm\fontfamily\fontsize\currentmathsize\endcsname \autofontsizefalse diff --git a/tex/context/base/font-otb.lua b/tex/context/base/font-otb.lua index a6845800d..a4cd5be02 100644 --- a/tex/context/base/font-otb.lua +++ b/tex/context/base/font-otb.lua @@ -218,7 +218,7 @@ function prepare_base_substitutions(tfmdata,kind,value) -- we can share some cod end if characters[upc] then if trace_baseinit and trace_alternatives then - logs.report("define otf","%s: base alternate %s => %s",cref(kind,lookup),gref(descriptions,k),gref(descriptions,upc)) + logs.report("define otf","%s: base alternate %s %s => %s",cref(kind,lookup),tostring(value),gref(descriptions,k),gref(descriptions,upc)) end changed[k] = upc end diff --git a/tex/context/base/font-otf.lua b/tex/context/base/font-otf.lua index 3488bdfe8..94f5dcf16 100644 --- a/tex/context/base/font-otf.lua +++ b/tex/context/base/font-otf.lua @@ -175,7 +175,7 @@ otf.tables.valid_fields = { local function load_featurefile(ff,featurefile) if featurefile then - featurefile = resolvers.find_file(file.addsuffix(featurefile,'fea')) -- "FONTFEATURES" + featurefile = resolvers.find_file(file.addsuffix(featurefile,'fea'),'fea') if featurefile and featurefile ~= "" then if trace_loading then logs.report("load otf", "featurefile: %s", featurefile) diff --git a/tex/context/base/font-tfm.lua b/tex/context/base/font-tfm.lua index fd3d8b4dd..1e39dc4e3 100644 --- a/tex/context/base/font-tfm.lua +++ b/tex/context/base/font-tfm.lua @@ -36,6 +36,7 @@ fonts.initializers = fonts.initializers or { } fonts.initializers.common = fonts.initializers.common or { } local fontdata = fonts.ids +local disc = node.id('disc') local glyph = node.id('glyph') local set_attribute = node.set_attribute @@ -679,7 +680,8 @@ function fonts.analyzers.aux.setstate(head,font) local descriptions = tfmdata.descriptions local first, last, current, n, done = nil, nil, head, 0, false -- maybe make n boolean while current do - if current.id == glyph and current.font == font then + local id = current.id + if id == glyph and current.font == font then local d = descriptions[current.char] if d then if d.class == "mark" then @@ -700,6 +702,10 @@ function fonts.analyzers.aux.setstate(head,font) end first, last, n = nil, nil, 0 end + elseif id == disc then + -- always in the middle + set_attribute(current,state,2) -- midi + last = current else -- finish if first and first == last then set_attribute(last,state,4) -- isol diff --git a/tex/context/base/luat-cbk.lua b/tex/context/base/luat-cbk.lua index 30930a40c..aa6f8c794 100644 --- a/tex/context/base/luat-cbk.lua +++ b/tex/context/base/luat-cbk.lua @@ -123,14 +123,16 @@ function callbacks.push(name, func) end function callbacks.pop(name) - if frozen[name] then - -- do nothing - elseif #stack == 0 then - -- some error - else - -- this fails: register_callback(name, remove(stack[name])) - local func = remove(stack[name]) - register_callback(name, func) + if not frozen[name] then + local sn = stack[name] + if not sn or #sn == 0 then + -- some error + register_callback(name, nil) -- ! really needed + else + -- this fails: register_callback(name, remove(stack[name])) + local func = remove(sn) + register_callback(name, func) + end end end diff --git a/tex/context/base/luat-dum.lua b/tex/context/base/luat-dum.lua index 34dd9ed6b..832f80d86 100644 --- a/tex/context/base/luat-dum.lua +++ b/tex/context/base/luat-dum.lua @@ -64,7 +64,7 @@ local remapper = { function resolvers.find_file(name,kind) name = string.gsub(name,"\\","\/") kind = string.lower(kind) - return kpse.find_file(name,(kind and kind ~= "" and (remapper[kind] or kind)) or "tex") + return kpse.find_file(name,(kind and kind ~= "" and (remapper[kind] or kind)) or file.extname(name,"tex")) end function resolvers.findbinfile(name,kind) diff --git a/tex/context/base/node-ini.mkiv b/tex/context/base/node-ini.mkiv index 76a714704..0659539bc 100644 --- a/tex/context/base/node-ini.mkiv +++ b/tex/context/base/node-ini.mkiv @@ -66,25 +66,6 @@ \def\resetallattributes{\the\attributesresetlist} -% \appendtoks -% \ctxlua { -% callbacks.push('hpack_filter') -% callbacks.push('vpack_filter') -% callbacks.push('buildpage_filter') -% callbacks.push('pre_linebreak_filter') -% callbacks.push('pre_output_filter') -% }% -% \to \everybeforeoutput -% \appendtoks -% \ctxlua { -% callbacks.pop('hpack_filter') -% callbacks.pop('vpack_filter') -% callbacks.pop('buildpage_filter') -% callbacks.pop('pre_linebreak_filter') -% callbacks.pop('pre_output_filter') -% }% -% \to \everyafteroutput - \newcount\shownodescounter \def\shownextnodes {\afterassignment\doshownodes\shownextnodescounter} diff --git a/tex/context/base/node-pag.lua b/tex/context/base/node-pag.lua index fd1504eac..2f149ab44 100644 --- a/tex/context/base/node-pag.lua +++ b/tex/context/base/node-pag.lua @@ -6,6 +6,8 @@ if not modules then modules = { } end modules ['node-pag'] = { license = "see context related readme files" } +-- this callback might disappear + pagebuilders = pagebuilders or { } local starttiming, stoptiming = statistics.starttiming, statistics.stoptiming @@ -17,10 +19,11 @@ local function processor(head,groupcode,size,packtype,maxdepth,direction) local _, done = actions(head,groupcode,size,packtype,maxdepth,direction) stoptiming(pagebuilders) return (done and head) or true +-- return vpack(head) end -callbacks.register('pre_output_filter', processor, "preparing output box") +--~ callbacks.register('pre_output_filter', processor, "preparing output box") -statistics.register("output preparation time", function() - return statistics.elapsedseconds(pagebuilders) -end) +--~ statistics.register("output preparation time", function() +--~ return statistics.elapsedseconds(pagebuilders) +--~ end) diff --git a/tex/context/base/node-tsk.lua b/tex/context/base/node-tsk.lua index 553f0fc3b..9accfc6d7 100644 --- a/tex/context/base/node-tsk.lua +++ b/tex/context/base/node-tsk.lua @@ -218,8 +218,9 @@ function tasks.table(name) --maybe move this to task-deb.lua local list, order = lst.list, lst.order if list and order then context.starttabulate { "|l|l|" } - HL() NC() bold("category") NC() bold("function") NC() NR() HL() + NC() bold("category") NC() bold("function") NC() NR() for i=1,#order do + HL() local o = order[i] local l = list[o] if #l == 0 then @@ -229,7 +230,6 @@ function tasks.table(name) --maybe move this to task-deb.lua NC() type(o) NC() type(v) NC() NR() end end - HL() end context.stoptabulate() end diff --git a/tex/context/base/spac-hor.mkiv b/tex/context/base/spac-hor.mkiv index a6754937b..74893bf25 100644 --- a/tex/context/base/spac-hor.mkiv +++ b/tex/context/base/spac-hor.mkiv @@ -478,29 +478,99 @@ \definenarrowermethod[\v!none ]{} % todo: definenarrower +% +% \definecomplexorsimple\startnarrower +% +% \def\simplestartnarrower +% {\startnarrower[\v!middle]} +% +% \def\complexstartnarrower[#1]% +% {\@@slbefore % was hard coded \par +% \bgroup +% \global\ctxleftskip \zeropoint +% \global\ctxrightskip\zeropoint +% \global\ctxmidskip \zeropoint +% \processcommalistwithparameters[#1]\donarrower +% \advance\leftskip \dimexpr\ctxleftskip +\ctxmidskip\relax +% \advance\rightskip \dimexpr\ctxrightskip+\ctxmidskip\relax +% \seteffectivehsize} +% +% \def\stopnarrower +% {\@@slafter % was hard coded \par / needed, else skips forgotten +% \egroup} +% +% \def\setupnarrower +% {\dodoubleargument\getparameters[\??sl]} + +%D Contrary to \MKII\ we can now define classes of narrower (generalized +%D by Wolfgang). This environment will be enhanced for bidi. + +\def\narrowerparameter #1{\csname\donarrowerparameter{\??sl\@@narrower}#1\endcsname} +\def\donarrowerparameter #1#2{\ifcsname#1#2\endcsname#1#2\else\expandafter\donarrowerparentparameter\csname#1\s!parent\endcsname#2\fi} +\def\donarrowerparentparameter#1#2{\ifx#1\relax\s!empty\else\donarrowerparameter#1#2\fi} + +\getparameters + [\??sl] + [\c!before=\endgraf, + \c!after=\endgraf, + \c!left=1.5em, + \c!right=1.5em, + \c!middle=1.5em] + +\def\definenarrower + {\dodoubleempty\dodefinenarrower} + +\def\dodefinenarrower[#1][#2]% + {\getparameters[\??sl#1][\s!parent=\??sl,#2]% + \setvalue{\e!start#1}{\dodoubleempty\dostartnarrower[#1]}% + \setvalue{\e!stop #1}{\dostopnarrower}} -\definecomplexorsimple\startnarrower +\def\setupnarrower + {\dodoubleempty\dosetupnarrower} + +\def\dosetupnarrower[#1][#2]% + {\doifelsenothing{#2} + {\getparameters[\??sl][#1]} + {\def\docommand##1{\getparameters[\??sl##1][#2]}% + \processcommacommand[#1]\docommand}} + +\definenarrowermethod[\v!left ]{\global\advance\ctxleftskip \narrowerparameter\c!left \relax} +\definenarrowermethod[\v!middle ]{\global\advance\ctxmidskip \narrowerparameter\c!middle\relax} +\definenarrowermethod[\v!right ]{\global\advance\ctxrightskip \narrowerparameter\c!right \relax} +\definenarrowermethod[-\v!left ]{\global\advance\ctxleftskip -\narrowerparameter\c!left \relax} +\definenarrowermethod[-\v!middle]{\global\advance\ctxmidskip -\narrowerparameter\c!middle\relax} +\definenarrowermethod[-\v!right ]{\global\advance\ctxrightskip-\narrowerparameter\c!right \relax} +\definenarrowermethod[\v!reset ]{\global\ctxleftskip \zeropoint + \global\ctxmidskip \zeropoint + \global\ctxrightskip\zeropoint\relax} +\definenarrowermethod[\v!none ]{} -\def\simplestartnarrower - {\startnarrower[\v!middle]} +\def\dostartnarrower[#1][#2]% + {\bgroup + \ifsecondargument % \doifsomethingelse{#2}? + \dodostartnarrower[#1][#2]% + \else + \dodostartnarrower[#1][\v!middle]% + \fi} -\def\complexstartnarrower[#1]% - {\@@slbefore % was hard coded \par - \bgroup +\def\dodostartnarrower[#1][#2]% + {\edef\@@narrower{#1}% + \narrowerparameter\c!before \global\ctxleftskip \zeropoint \global\ctxrightskip\zeropoint \global\ctxmidskip \zeropoint - \processcommalistwithparameters[#1]\donarrower - \advance\leftskip \dimexpr\ctxleftskip +\ctxmidskip\relax - \advance\rightskip \dimexpr\ctxrightskip+\ctxmidskip\relax + \processcommalistwithparameters[#2]\donarrower + \advance\leftskip \dimexpr\ctxleftskip +\ctxmidskip\relax + \advance\rightskip\dimexpr\ctxrightskip+\ctxmidskip\relax \seteffectivehsize} -\def\stopnarrower - {\@@slafter % was hard coded \par / needed, else skips forgotten +\def\dostopnarrower + {\narrowerparameter\c!after \egroup} -\def\setupnarrower - {\dodoubleargument\getparameters[\??sl]} +\def\v!narrower{narrower} + +\definenarrower[\v!narrower] \newdimen\@@effectivehsize \def\effectivehsize {\hsize} \newdimen\@@effectiveleftskip \def\effectiveleftskip {\leftskip} diff --git a/tex/context/base/spac-ver.mkiv b/tex/context/base/spac-ver.mkiv index 7768f80b5..07b47b92d 100644 --- a/tex/context/base/spac-ver.mkiv +++ b/tex/context/base/spac-ver.mkiv @@ -1826,16 +1826,89 @@ %D \stoplines %D \stoptyping +% \def\setuplines +% {\dodoubleargument\getparameters[\??rg]} +% +% \def\startlines +% {\@@rgbefore +% \pushmacro\checkindentation +% \whitespace +% %\page[\v!preference]} gaat mis na koppen, nieuw: later \nobreak +% \begingroup +% \setupindenting[\@@rgindenting]% +% \typesettinglinestrue +% \setupwhitespace[\v!none]% +% \obeylines +% \ignorespaces +% \gdef\afterfirstobeyedline % tzt two pass, net als opsomming +% {\gdef\afterfirstobeyedline +% {\nobreak +% \doifnot\@@rgoption\v!packed{\global\let\afterfirstobeyedline\relax}}}% +% \def\obeyedline +% {\par +% \futurelet\next\dobetweenthelines}% +% \activatespacehandler\@@rgspace +% \GotoPar} +% +% \def\stoplines +% {\endgroup +% \popmacro\checkindentation +% \@@rgafter} +% +% \def\dobetweenthelines +% {\doifmeaningelse\next\obeyedline +% {\@@rginbetween} +% {\afterfirstobeyedline}} +% +% \setuplines +% [\c!option=, +% \c!before=\blank, +% \c!after=\blank, +% \c!inbetween=\blank, +% \c!indenting=\v!no, +% \c!space=\v!default] + +%D Contrary to \MKII\ we can now define classes of lines (generalized by +%D Wolfgang). I will probably rewrite bits in \LUA. + +\def\linesparameter #1{\csname\dolinesparameter{\??rg\@@lines}#1\endcsname} +\def\dolinesparameter #1#2{\ifcsname#1#2\endcsname#1#2\else\expandafter\dolinesparentparameter\csname#1\s!parent\endcsname#2\fi} +\def\dolinesparentparameter#1#2{\ifx#1\relax\s!empty\else\dolinesparameter#1#2\fi} + +\getparameters + [\??rg] + [\c!option=, + \c!before=\blank, + \c!after=\blank, + \c!inbetween=\blank, + \c!indenting=\v!no, + \c!space=\v!default] + +\def\definelines + {\dodoubleempty\dodefinelines} + +\def\dodefinelines[#1][#2]% + {\getparameters[\??rg#1][\s!parent=\??rg,#2]% + \setvalue{\e!start#1}{\dostartlines[#1]}% + \setvalue{\e!stop #1}{\dostoplines}} + \def\setuplines - {\dodoubleargument\getparameters[\??rg]} + {\dodoubleempty\dosetuplines} + +\def\dosetuplines[#1][#2]% + {\doifelsenothing{#2} + {\getparameters[\??rg][#1]} + {\def\docommand##1{\getparameters[\??rg##1][#2]}% + \processcommacommand[#1]\docommand}} -\def\startlines - {\@@rgbefore +\def\dostartlines[#1]% + {\bgroup + \edef\@@lines{#1}% + \linesparameter\c!before \pushmacro\checkindentation \whitespace - %\page[\v!preference]} gaat mis na koppen, nieuw: later \nobreak \begingroup - \setupindenting[\@@rgindenting]% + \setupindenting[\linesparameter\c!indenting]% \typesettinglinestrue \setupwhitespace[\v!none]% \obeylines @@ -1843,30 +1916,25 @@ \gdef\afterfirstobeyedline % tzt two pass, net als opsomming {\gdef\afterfirstobeyedline {\nobreak - \doifnot\@@rgoption\v!packed{\global\let\afterfirstobeyedline\relax}}}% + \doifnot{\linesparameter\c!option}\v!packed{\global\let\afterfirstobeyedline\relax}}}% \def\obeyedline {\par \futurelet\next\dobetweenthelines}% - \activatespacehandler\@@rgspace + \activatespacehandler{\linesparameter\c!space}% \GotoPar} -\def\stoplines +\def\dostoplines {\endgroup \popmacro\checkindentation - \@@rgafter} + \linesparameter\c!after + \egroup} \def\dobetweenthelines {\doifmeaningelse\next\obeyedline - {\@@rginbetween} + {\linesparameter\c!inbetween} {\afterfirstobeyedline}} -\setuplines - [\c!option=, - \c!before=\blank, - \c!after=\blank, - \c!inbetween=\blank, - \c!indenting=\v!no, - \c!space=\v!default] +\definelines[\v!lines] \def\emptylines {\dosingleempty\doemptylines} diff --git a/tex/context/base/toks-ini.lua b/tex/context/base/toks-ini.lua index 1313b04a2..46dfa4eff 100644 --- a/tex/context/base/toks-ini.lua +++ b/tex/context/base/toks-ini.lua @@ -56,7 +56,7 @@ collectors.data = collectors.data or { } function tex.printlist(data) callbacks.push('token_filter', function () - callbacks.pop('token_filter') + callbacks.pop('token_filter') -- tricky but the nil assignment helps return data end) end diff --git a/tex/context/base/type-otf.mkiv b/tex/context/base/type-otf.mkiv index 01971147d..262de7b86 100644 --- a/tex/context/base/type-otf.mkiv +++ b/tex/context/base/type-otf.mkiv @@ -1709,6 +1709,7 @@ \stoptypescript \starttypescript [math] [euler] [name] + % \definefontsynonym [MathRoman] [EulerMath] [\s!features=math] \definefontsynonym [MathRoman] [EulerMath] [\s!features=math\mathsizesuffix] \stoptypescript diff --git a/tex/context/base/x-fig-03.tex b/tex/context/base/x-fig-03.tex index bf5ea226c..131752823 100644 --- a/tex/context/base/x-fig-03.tex +++ b/tex/context/base/x-fig-03.tex @@ -11,8 +11,8 @@ %C therefore copyrighted by \PRAGMA. See mreadme.pdf for %C details. -\ifx \undefined \convertMPtoPDF \input supp-pdf.tex \fi -\ifx \undefined \includefigurefile \else \expandafter \endinput \fi +\ifx \undefined \convertMPtoPDF \input supp-pdf.mkii \fi +\ifx \undefined \includefigurefile \else \expandafter \endinput \fi \gdef\getfigurefile#1% {\expandafter\ifx\csname x-fig-f-#1\endcsname\relax @@ -37,8 +37,8 @@ {\doincludefigurefile{#1}} \def\doincludefigurefile#1#2% - {\edef\next{\noexpand\pdfimage + {\edef\next{\noexpand\pdfimage #1 page \getfigurepage{#2} {\getfigurefile{#2}.pdf}}% - \next} + \next} -\endinput +\endinput diff --git a/tex/context/bib/bibl-apa-de.tex b/tex/context/bib/bibl-apa-de.tex index 8f8be59fb..afeebd260 100644 --- a/tex/context/bib/bibl-apa-de.tex +++ b/tex/context/bib/bibl-apa-de.tex @@ -108,7 +108,7 @@ \def\insertchap#1#2#3% {\insertchapter - {#1\insertbibtype{}{\ }{chapter\ }}{#2}% + {#1\insertbibtype{}{\ }{Kapitel\ }}{#2}% {#3}} \def\insertpublisher#1#2#3% @@ -383,4 +383,4 @@ \insertnote{ }{.}{}% } -\protect \ No newline at end of file +\protect diff --git a/tex/generic/context/luatex-fonts-merged.lua b/tex/generic/context/luatex-fonts-merged.lua index 3704975a2..e5ea88025 100644 --- a/tex/generic/context/luatex-fonts-merged.lua +++ b/tex/generic/context/luatex-fonts-merged.lua @@ -1,6 +1,6 @@ -- merged file : c:/data/develop/context/texmf/tex/generic/context/luatex-fonts-merged.lua -- parent file : c:/data/develop/context/texmf/tex/generic/context/luatex-fonts.lua --- merge date : 02/22/10 19:49:18 +-- merge date : 02/23/10 14:20:59 do -- begin closure to overcome local limits and interference @@ -1997,7 +1997,7 @@ local remapper = { function resolvers.find_file(name,kind) name = string.gsub(name,"\\","\/") kind = string.lower(kind) - return kpse.find_file(name,(kind and kind ~= "" and (remapper[kind] or kind)) or "tex") + return kpse.find_file(name,(kind and kind ~= "" and (remapper[kind] or kind)) or file.extname(name,"tex")) end function resolvers.findbinfile(name,kind) @@ -3410,6 +3410,7 @@ fonts.initializers = fonts.initializers or { } fonts.initializers.common = fonts.initializers.common or { } local fontdata = fonts.ids +local disc = node.id('disc') local glyph = node.id('glyph') local set_attribute = node.set_attribute @@ -4053,7 +4054,8 @@ function fonts.analyzers.aux.setstate(head,font) local descriptions = tfmdata.descriptions local first, last, current, n, done = nil, nil, head, 0, false -- maybe make n boolean while current do - if current.id == glyph and current.font == font then + local id = current.id + if id == glyph and current.font == font then local d = descriptions[current.char] if d then if d.class == "mark" then @@ -4074,6 +4076,10 @@ function fonts.analyzers.aux.setstate(head,font) end first, last, n = nil, nil, 0 end + elseif id == disc then + -- always in the middle + set_attribute(current,state,2) -- midi + last = current else -- finish if first and first == last then set_attribute(last,state,4) -- isol @@ -5914,7 +5920,7 @@ otf.tables.valid_fields = { local function load_featurefile(ff,featurefile) if featurefile then - featurefile = resolvers.find_file(file.addsuffix(featurefile,'fea')) -- "FONTFEATURES" + featurefile = resolvers.find_file(file.addsuffix(featurefile,'fea'),'fea') if featurefile and featurefile ~= "" then if trace_loading then logs.report("load otf", "featurefile: %s", featurefile) @@ -7820,7 +7826,7 @@ function prepare_base_substitutions(tfmdata,kind,value) -- we can share some cod end if characters[upc] then if trace_baseinit and trace_alternatives then - logs.report("define otf","%s: base alternate %s => %s",cref(kind,lookup),gref(descriptions,k),gref(descriptions,upc)) + logs.report("define otf","%s: base alternate %s %s => %s",cref(kind,lookup),tostring(value),gref(descriptions,k),gref(descriptions,upc)) end changed[k] = upc end -- cgit v1.2.3