From c3976d6be794a9eb876a2c0dab5839ea828691bd Mon Sep 17 00:00:00 2001 From: Marius Date: Mon, 10 Jun 2013 23:40:23 +0300 Subject: beta 2013.06.10 22:31 --- tex/context/base/char-def.lua | 3 +- tex/context/base/cont-new.mkiv | 2 +- tex/context/base/context-version.pdf | Bin 4131 -> 4104 bytes tex/context/base/context.mkiv | 2 +- tex/context/base/math-act.lua | 4 +- tex/context/base/math-stc.mkvi | 2 + tex/context/base/status-files.pdf | Bin 24645 -> 24634 bytes tex/context/base/status-lua.pdf | Bin 213142 -> 213137 bytes tex/context/base/strc-con.mkvi | 6 +- tex/context/base/strc-not.mkvi | 22 ++--- tex/context/base/supp-box.lua | 55 ++++++++++-- tex/context/base/supp-box.mkiv | 99 ++++++++++++++++----- tex/generic/context/luatex/luatex-fonts-merged.lua | 2 +- 13 files changed, 147 insertions(+), 50 deletions(-) (limited to 'tex') diff --git a/tex/context/base/char-def.lua b/tex/context/base/char-def.lua index f64efa5c3..22c498ddd 100644 --- a/tex/context/base/char-def.lua +++ b/tex/context/base/char-def.lua @@ -57675,11 +57675,12 @@ characters.data={ adobename="overline", category="po", cjkwd="a", + comment=[[mathspec={ { class="topaccent", name="overbar" }, { class="botaccent", name="underbar" } }"]], description="OVERLINE", direction="on", linebreak="al", mathextensible="l", - comment=[[mathspec={ { class="topaccent", name="overbar" }, { class="botaccent", name="underbar" } }"]], + mathfiller="barfill", mathspec={ { class="under", diff --git a/tex/context/base/cont-new.mkiv b/tex/context/base/cont-new.mkiv index 7b585b38a..2dfef3f31 100644 --- a/tex/context/base/cont-new.mkiv +++ b/tex/context/base/cont-new.mkiv @@ -11,7 +11,7 @@ %C therefore copyrighted by \PRAGMA. See mreadme.pdf for %C details. -\newcontextversion{2013.06.10 12:24} +\newcontextversion{2013.06.10 22:31} %D This file is loaded at runtime, thereby providing an excellent place for %D hacks, patches, extensions and new features. diff --git a/tex/context/base/context-version.pdf b/tex/context/base/context-version.pdf index 8aed0b0df..f3726f9a2 100644 Binary files a/tex/context/base/context-version.pdf and b/tex/context/base/context-version.pdf differ diff --git a/tex/context/base/context.mkiv b/tex/context/base/context.mkiv index 0e48ae1c4..2efac7624 100644 --- a/tex/context/base/context.mkiv +++ b/tex/context/base/context.mkiv @@ -25,7 +25,7 @@ %D up and the dependencies are more consistent. \edef\contextformat {\jobname} -\edef\contextversion{2013.06.10 12:24} +\edef\contextversion{2013.06.10 22:31} \edef\contextkind {beta} %D For those who want to use this: diff --git a/tex/context/base/math-act.lua b/tex/context/base/math-act.lua index ddc4de179..7c75dc56e 100644 --- a/tex/context/base/math-act.lua +++ b/tex/context/base/math-act.lua @@ -298,7 +298,7 @@ end local function accent_to_extensible(target,newchr,original,oldchr,height,depth) local characters = target.characters --- if not characters[newchr] then + -- if not characters[newchr] then -- xits needs an enforce local olddata = characters[oldchr] if olddata then height = height or 0 @@ -350,7 +350,7 @@ local function accent_to_extensible(target,newchr,original,oldchr,height,depth) end end end --- end + -- end end function tweaks.fixoverline(target,original) diff --git a/tex/context/base/math-stc.mkvi b/tex/context/base/math-stc.mkvi index 8d5b1d18f..ae601bc4c 100644 --- a/tex/context/base/math-stc.mkvi +++ b/tex/context/base/math-stc.mkvi @@ -750,6 +750,7 @@ {\expandafter\let\csname\??mathextensiblefallbacks\number#2\expandafter\endcsname\csname#1\endcsname \expandafter\let\csname #1\expandafter\endcsname\csname#1\endcsname} +\defineextensiblefiller [barfill] ["203E] \defineextensiblefiller [relfill] ["002D] \defineextensiblefiller [equalfill] ["003D] \defineextensiblefiller [leftarrowfill] ["2190] @@ -771,6 +772,7 @@ \defineextensiblefiller [Leftarrowfill] ["27F8] \defineextensiblefiller [Rightarrowfill] ["27F9] \defineextensiblefiller [Leftrightarrowfill] ["27FA] +\defineextensiblefiller [Leftrightarrowfill] ["27FA] %D Extra: diff --git a/tex/context/base/status-files.pdf b/tex/context/base/status-files.pdf index 022b6158e..a5197f7b8 100644 Binary files a/tex/context/base/status-files.pdf and b/tex/context/base/status-files.pdf differ diff --git a/tex/context/base/status-lua.pdf b/tex/context/base/status-lua.pdf index 8c4c25ffa..c124504c2 100644 Binary files a/tex/context/base/status-lua.pdf and b/tex/context/base/status-lua.pdf differ diff --git a/tex/context/base/strc-con.mkvi b/tex/context/base/strc-con.mkvi index 11cd31983..2d49a60db 100644 --- a/tex/context/base/strc-con.mkvi +++ b/tex/context/base/strc-con.mkvi @@ -709,7 +709,8 @@ \startsetups[\??constructionrenderings:\v!serried:\v!fit] \let\\=\crlf \noindent - \ifhbox\constructionheadbox\unhcopy\else\copy\fi\constructionheadbox + \ifhbox\constructionheadbox\unhcopy\else\copy\fi\constructionheadbox % why copy? leftover? + \penalty\plustenthousand % new \hskip\constructionsheaddistance\relax \useconstructionstyleandcolor\c!style\c!color \ignorespaces @@ -718,8 +719,9 @@ \startsetups[\??constructionrenderings:\v!serried:\v!broad] \let\\=\crlf \noindent - \ifhbox\constructionheadbox\unhcopy\else\copy\fi\constructionheadbox + \ifhbox\constructionheadbox\unhcopy\else\copy\fi\constructionheadbox % why copy? leftover? \ifconditional\c_strc_constructions_distance_none \else + \penalty\plustenthousand % new \hskip\constructionsheaddistance \!!plus .5\constructionsheaddistance \!!minus .25\constructionsheaddistance\relax \fi \useconstructionstyleandcolor\c!style\c!color diff --git a/tex/context/base/strc-not.mkvi b/tex/context/base/strc-not.mkvi index 19f84e906..d2c916daa 100644 --- a/tex/context/base/strc-not.mkvi +++ b/tex/context/base/strc-not.mkvi @@ -1177,16 +1177,17 @@ \usesetupsparameter\noteparameter % experimental \doifelse{\noteparameter\c!paragraph}\v!yes {\nointerlineskip + \vboxtohboxslack.5\emwidth % we can instead use \hboxestohboxslack later \startvboxtohbox - \handlenoteitself{#tag}{#id}% - % add some slack + \handlenoteitself{#tag}{#id}% + \strc_notes_between_paragraphs \stopvboxtohbox} {\handlenoteitself{#tag}{#id}}% \egroup \the\everyafternoteinsert \endgroup} -\unexpanded\def\betweennoteitself#tag% +\unexpanded\def\betweennoteitself#tag% used ? {\edef\currentnote{#tag}% \doif{\noteparameter\c!paragraph}\v!yes\strc_notes_between_paragraphs} @@ -1345,18 +1346,11 @@ \def\strc_notes_between_paragraphs_first {\glet\strc_notes_between_paragraphs_indeed\strc_notes_between_paragraphs}% shape works reverse -\def\strc_notes_flush_global % will be done in lua instead +\def\strc_notes_flush_global {\doifelse{\noteparameter\c!paragraph}\v!yes - {\vbox - {\beginofshapebox - \iftrialtypesetting\unvcopied\else\unvboxed\fi\currentnoteinsertionnumber - \endofshapebox - \let\strc_notes_between_paragraphs_indeed\strc_notes_between_paragraphs_first % shape works reverse - \doreshapebox - {\hbox{\unhbox\shapebox\strc_notes_between_paragraphs_indeed}} - \donothing \donothing \donothing % get rid of penalties etc - \innerflushshapebox - \convertvboxtohbox}} + {\vbox\starthboxestohbox + \iftrialtypesetting\unvcopy\else\unvbox\fi\currentnoteinsertionnumber + \stophboxestohbox} {\iftrialtypesetting\unvcopied\else\unvboxed\fi\currentnoteinsertionnumber}} %D Supporting end notes is surprisingly easy. Even better, we diff --git a/tex/context/base/supp-box.lua b/tex/context/base/supp-box.lua index c7382834a..8e75b4f63 100644 --- a/tex/context/base/supp-box.lua +++ b/tex/context/base/supp-box.lua @@ -22,10 +22,14 @@ local glue_code = nodecodes.glue local glyph_code = nodecodes.glyph local new_penalty = nodes.pool.penalty +local new_hlist = nodes.pool.hlist +local new_glue = nodes.pool.glue local free_node = node.free -local copynodelist = node.copy_list -local copynode = node.copy +local copy_list = node.copy_list +local copy_node = node.copy +local find_tail = node.tail + local texbox = tex.box local function hyphenatedlist(list) @@ -73,9 +77,9 @@ local function applytochars(list,what,nested) applytochars(current.list,what,nested) context.endhbox() elseif id ~= glyph_code then - noaction(copynode(current)) + noaction(copy_node(current)) else - doaction(copynode(current)) + doaction(copy_node(current)) end current = current.next end @@ -90,10 +94,10 @@ local function applytowords(list,what,nested) local id = current.id if id == glue_code then if start then - doaction(copynodelist(start,current)) + doaction(copy_list(start,current)) start = nil end - noaction(copynode(current)) + noaction(copy_node(current)) elseif nested and (id == hlist_code or id == vlist_code) then context.beginhbox() applytowords(current.list,what,nested) @@ -104,9 +108,46 @@ local function applytowords(list,what,nested) current = current.next end if start then - doaction(copynodelist(start)) + doaction(copy_list(start)) end end commands.applytochars = applytochars commands.applytowords = applytowords + +function commands.vboxlisttohbox(original,target,inbetween) + local current = texbox[original].list + local head = nil + local tail = nil + while current do + if current.id == hlist_code then + local list = current.list + if head then + if inbetween > 0 then + local n = new_glue(0,0,inbetween) + tail.next = n + n.prev = tail + tail = n + end + tail.next = list + list.prev = tail + else + head = list + end + tail = find_tail(list) + tail.next = nil + current.list = nil + end + current = current.next + end + local result = new_hlist() + result.list = head + texbox[target] = result +end + +function commands.hboxtovbox(original) + local b = texbox[original] + local factor = tex.baselineskip.width / tex.hsize + b.depth = 0 + b.height = b.width * factor +end diff --git a/tex/context/base/supp-box.mkiv b/tex/context/base/supp-box.mkiv index 833096222..f78a8554c 100644 --- a/tex/context/base/supp-box.mkiv +++ b/tex/context/base/supp-box.mkiv @@ -1730,35 +1730,56 @@ %D These macros are used in reformatting footnotes, so they do %D what they're meant for. -\unexpanded\def\setvboxtohbox - {\bgroup - \ifdim\baselineskip<16pt \relax - \scratchdimen\baselineskip - \multiply\scratchdimen 1024 - \else - \message{cropping \baselineskip to 16pt}% - \scratchdimen\maxdimen - \fi - \divide\scratchdimen \hsize - \multiply\scratchdimen 64 - \xdef\vboxtohboxfactor{\withoutpt\the\scratchdimen}% - \egroup} +\newdimen\vboxtohboxslack +\newdimen\hboxestohboxslack + +% Create line and fake height of paragraph by messign with heights: +% a nice hack by DEK himself. + +%\unexpanded\def\setvboxtohbox +% {\bgroup +% \ifdim\baselineskip<16pt \relax +% \scratchdimen\baselineskip +% \multiply\scratchdimen 1024 +% \else +% \message{cropping \baselineskip to 16pt}% +% \scratchdimen\maxdimen +% \fi +% \divide\scratchdimen \hsize +% \multiply\scratchdimen 64 +% \xdef\vboxtohboxfactor{\withoutpt\the\scratchdimen}% +% \egroup} +% +% \unexpanded\def\startvboxtohbox +% {\bgroup +% \setvboxtohbox +% \setbox\scratchbox\hbox\bgroup} +% +% \unexpanded\def\stopvboxtohbox +% {\ifcase\vboxtohboxslack\else\hskip\zeropoint\!!minus\vboxtohboxslack\fi +% \egroup +% \dp\scratchbox\zeropoint +% \ht\scratchbox\vboxtohboxfactor\wd\scratchbox +% \box\scratchbox +% \egroup} + +% More modern: \unexpanded\def\startvboxtohbox - {\bgroup - \setvboxtohbox - \setbox\scratchbox\hbox\bgroup} + {\bgroup + \setbox\scratchbox\hbox\bgroup} \unexpanded\def\stopvboxtohbox - {\egroup - \dp\scratchbox\zeropoint - \ht\scratchbox\vboxtohboxfactor\wd\scratchbox + {\ifcase\vboxtohboxslack\else\hskip\zeropoint\!!minus\vboxtohboxslack\fi + \egroup + \ctxcommand{hboxtovbox(\number\scratchbox)}% \box\scratchbox \egroup} +% A possible reconstruction: + \unexpanded\def\convertvboxtohbox - {\setvboxtohbox - \makehboxofhboxes + {\makehboxofhboxes \setbox0\hbox{\unhbox0 \removehboxes}% \noindent\unhbox0\par} @@ -1776,6 +1797,42 @@ {\removehboxes}\unhbox0 \fi} +% And one special for notes: + +% \unexpanded\def\starthboxestohbox +% {\bgroup +% \beginofshapebox} +% +% \unexpanded\def\stophboxestohbox +% {\endofshapebox +% \doreshapebox +% {\hbox\bgroup +% \unhbox\shapebox +% \ifcase\hboxestohboxslack\else\hskip\zeropoint\!!minus\hboxestohboxslack\fi +% \egroup}% +% \donothing +% \donothing +% \donothing % get rid of penalties etc +% \innerflushshapebox +% \convertvboxtohbox +% \par +% \egroup} + +% More modern: + +\unexpanded\def\starthboxestohbox + {\bgroup + \setbox\scratchbox\vbox\bgroup} + +\unexpanded\def\stophboxestohbox + {\egroup + \ctxcommand{vboxlisttohbox(\number\scratchbox,\number\nextbox,\number\dimexpr\hboxestohboxslack)}% + \dontleavehmode + \unhbox\nextbox + \removeunwantedspaces + \par + \egroup} + %D \macros %D {unhhbox} %D diff --git a/tex/generic/context/luatex/luatex-fonts-merged.lua b/tex/generic/context/luatex/luatex-fonts-merged.lua index 81e3fec30..406e567b3 100644 --- a/tex/generic/context/luatex/luatex-fonts-merged.lua +++ b/tex/generic/context/luatex/luatex-fonts-merged.lua @@ -1,6 +1,6 @@ -- merged file : luatex-fonts-merged.lua -- parent file : luatex-fonts.lua --- merge date : 06/10/13 12:24:08 +-- merge date : 06/10/13 22:31:59 do -- begin closure to overcome local limits and interference -- cgit v1.2.3