diff options
author | Hans Hagen <pragma@wxs.nl> | 2009-08-19 17:10:00 +0200 |
---|---|---|
committer | Hans Hagen <pragma@wxs.nl> | 2009-08-19 17:10:00 +0200 |
commit | a8e81e5eab3d41a14e5bc9a8a6f0345bbea1a0e2 (patch) | |
tree | 8be73e943d5705566b163a768a83c04ae9676ae6 | |
parent | b4b3a706fa151ca1769854921a4424f52d9f7421 (diff) | |
download | context-a8e81e5eab3d41a14e5bc9a8a6f0345bbea1a0e2.tar.gz |
stable 2009.08.19 17:10
-rw-r--r-- | tex/context/base/attr-ini.mkiv | 2 | ||||
-rw-r--r-- | tex/context/base/cont-new.tex | 2 | ||||
-rw-r--r-- | tex/context/base/context.mkiv | 2 | ||||
-rw-r--r-- | tex/context/base/context.tex | 2 | ||||
-rw-r--r-- | tex/context/base/core-def.mkiv | 10 | ||||
-rw-r--r-- | tex/context/base/font-ini.mkiv | 249 | ||||
-rw-r--r-- | tex/context/base/grph-inc.mkii | 5 | ||||
-rw-r--r-- | tex/context/base/grph-inc.mkiv | 12 | ||||
-rw-r--r-- | tex/context/base/math-def.mkiv | 6 | ||||
-rw-r--r-- | tex/context/base/node-bck.lua | 116 | ||||
-rw-r--r-- | tex/context/base/node-bck.mkiv | 163 | ||||
-rw-r--r-- | tex/context/base/strc-doc.lua | 2 | ||||
-rw-r--r-- | tex/context/base/strc-ref.lua | 9 | ||||
-rw-r--r-- | tex/context/base/strc-ref.mkiv | 28 | ||||
-rw-r--r-- | tex/context/base/strc-sec.mkiv | 7 | ||||
-rw-r--r-- | tex/context/base/syst-aux.mkiv | 10 | ||||
-rw-r--r-- | tex/context/base/tabl-tbl.mkiv | 30 | ||||
-rw-r--r-- | tex/context/bib/t-bib.tex | 4 | ||||
-rw-r--r-- | tex/generic/context/luatex-fonts-merged.lua | 2 |
19 files changed, 583 insertions, 78 deletions
diff --git a/tex/context/base/attr-ini.mkiv b/tex/context/base/attr-ini.mkiv index 7d9cb100e..b90d4976b 100644 --- a/tex/context/base/attr-ini.mkiv +++ b/tex/context/base/attr-ini.mkiv @@ -23,7 +23,7 @@ \definesystemattribute[state] \definesystemattribute[skip] \definesystemattribute[penalty] -\definesystemattribute[colormodel][global] % no reset \chardef\colormodelattribute \dogetattributeid{colormodel} +\definesystemattribute[colormodel][global] \chardef\colormodelattribute \dogetattributeid{colormodel} \definesystemattribute[color] \chardef\colorattribute \dogetattributeid{color} \definesystemattribute[transparency] \chardef\transparencyattribute \dogetattributeid{transparency} \definesystemattribute[background] \chardef\backgroundattribute \dogetattributeid{background} diff --git a/tex/context/base/cont-new.tex b/tex/context/base/cont-new.tex index 54a26704d..161d4c918 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{2009.08.17 19:06} +\newcontextversion{2009.08.19 17: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 fdba7661a..03f26c8f0 100644 --- a/tex/context/base/context.mkiv +++ b/tex/context/base/context.mkiv @@ -20,7 +20,7 @@ \loadcorefile{syst-ini} -\ifnum\luatexversion<42 +\ifnum\luatexversion<43 \writestatus{!!!!}{Your luatex binary is way too old, you need at least version 0.42.} \expandafter\end \fi diff --git a/tex/context/base/context.tex b/tex/context/base/context.tex index 3f6608a1c..5f9615230 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{2009.08.17 19:06} +\edef\contextversion{2009.08.19 17:10} %D For those who want to use this: diff --git a/tex/context/base/core-def.mkiv b/tex/context/base/core-def.mkiv index 782fe3f67..583eb5870 100644 --- a/tex/context/base/core-def.mkiv +++ b/tex/context/base/core-def.mkiv @@ -63,10 +63,10 @@ % temporary here: -\ifx\in \undefined\else \let\normalmathin \in \unexpanded\def\in {\mathortext\normalmathin \dospecialin } \fi -\ifx\at \undefined\else \let\normalmathat \at \unexpanded\def\at {\mathortext\normalmathat \dospecialat } \fi -\ifx\about\undefined\else \let\normalmathabout\about \unexpanded\def\about{\mathortext\normalmathabout\dospecialabout} \fi -\ifx\from \undefined\else \let\normalmathfrom \from \unexpanded\def\from {\mathortext\normalmathfrom \dospecialfrom } \fi -\ifx\over \undefined\else \let\normalmathover \over \unexpanded\def\over {\mathortext\normalmathover \dospecialabout} \fi +\ifdefined\in \let\normalmathin \in \unexpanded\def\in {\mathortext\normalmathin \dospecialin } \else \let\in \dospecialin \fi +\ifdefined\at \let\normalmathat \at \unexpanded\def\at {\mathortext\normalmathat \dospecialat } \else \let\at \dospecialat \fi +\ifdefined\about \let\normalmathabout\about \unexpanded\def\about{\mathortext\normalmathabout\dospecialabout} \else \let\about\dospecialabout \fi +\ifdefined\from \let\normalmathfrom \from \unexpanded\def\from {\mathortext\normalmathfrom \dospecialfrom } \else \let\from \dospecialfrom \fi +\ifdefined\over \let\normalmathover \over \unexpanded\def\over {\mathortext\normalmathover \dospecialabout} \else \let\over \dospecialabout \fi \protect \endinput diff --git a/tex/context/base/font-ini.mkiv b/tex/context/base/font-ini.mkiv index a31ed6e66..c39bdb8b7 100644 --- a/tex/context/base/font-ini.mkiv +++ b/tex/context/base/font-ini.mkiv @@ -2211,15 +2211,54 @@ \let\fontstrategy\relax -\def\synchronizefont +% \def\synchronizefont +% {\tryingfonttrue +% \ifx\fontclass\empty\else +% \global\let\fontstrategy\dofontclassstrategy +% \the\fontstrategies \relax % \relax still needed ? +% \fi +% \iftryingfont +% \global\let\fontstrategy\dofontstrategy +% \the\fontstrategies \relax % \relax still needed ? +% \fi +% \autofontsizefalse +% \ifskipfontcharacteristics +% \setfontcharacteristics +% \the\everyfontswitch +% \fi} + +% \def\dofontstrategy#1#2#3#4#5% +% {\ifcsname#2#3#4#5\endcsname +% #1\csname#2#3#4#5\endcsname \tryingfontfalse +% \fi} + +% \def\dofontclassstrategy#1#2#3#4#5% +% {\ifcsname\fontclass#2#3#4#5\endcsname +% #1\csname\fontclass#2#3#4#5\endcsname \tryingfontfalse +% \fi} + +% \def\synchronizefont % we can have dups i.e. no need to let fontstrategy +% {\tryingfonttrue +% \ifx\fontclass\empty\else +% \global\let\fontstrategy\dofontclassstrategy +% \applyfontstrategies +% \fi +% \iftryingfont +% \global\let\fontstrategy\dofontstrategy +% \applyfontstrategies +% \fi +% \autofontsizefalse +% \ifskipfontcharacteristics +% \setfontcharacteristics +% \the\everyfontswitch +% \fi} + +\def\synchronizefont % we can have dups i.e. no need to let fontstrategy {\tryingfonttrue - \ifx\fontclass\empty\else - \global\let\fontstrategy\dofontclassstrategy - \the\fontstrategies \relax % \relax still needed ? - \fi - \iftryingfont - \global\let\fontstrategy\dofontstrategy - \the\fontstrategies \relax % \relax still needed ? + \ifx\fontclass\empty + \applyfontstrategies + \else + \applyfontclassstrategies \fi \autofontsizefalse \ifskipfontcharacteristics @@ -2227,39 +2266,185 @@ \the\everyfontswitch \fi} -\def\dofontstrategy#1#2#3#4#5% - {\ifcsname#2#3#4#5\endcsname - #1\csname#2#3#4#5\endcsname \tryingfontfalse +% \appendtoks \iftryingfont \fontstrategy \autofontsizefalse % --- --- --- --- % pt tt bf a +% \fontbody \fontstyle \fontalternative \fontsize +% \fi \to \fontstrategies +% +% \appendtoks \iftryingfont \fontstrategy \autofontsizetrue % --- --- --- def % pt tt bf +% \fontbody \fontstyle \fontalternative \defaultfontsize +% \fi \to \fontstrategies +% +% \appendtoks \iftryingfont \fontstrategy \autofontsizetrue % --- --- def --- % pt tt tf a +% \fontbody \fontstyle \defaultfontalternative \fontsize +% \fi \to \fontstrategies +% +% \appendtoks \iftryingfont \fontstrategy \autofontsizetrue % --- --- def def % pt tt tf +% \fontbody \fontstyle \defaultfontalternative \defaultfontsize +% \fi \to \fontstrategies +% +% \appendtoks \iftryingfont \fontstrategy \autofontsizefalse % --- def def def % pt rm tf +% \fontbody \defaultfontstyle \defaultfontalternative \defaultfontsize +% \fi \to \fontstrategies +% +% \appendtoks \iftryingfont \fontstrategy \autofontsizetrue % def def def def % rm tf +% \defaultfontbody \defaultfontstyle \defaultfontalternative \defaultfontsize +% \fi \to \fontstrategies + +% \def\fontstrategiesa % --- --- --- --- % pt tt bf a +% {\fontstrategy \autofontsizefalse \fontbody \fontstyle \fontalternative \fontsize +% \iftryingfont \fontstrategiesb \fi} +% \def\fontstrategiesb % --- --- --- def % pt tt bf +% {\fontstrategy \autofontsizetrue \fontbody \fontstyle \fontalternative \defaultfontsize +% \iftryingfont \fontstrategiesc \fi} +% \def\fontstrategiesc % --- --- def --- % pt tt tf a +% {\fontstrategy \autofontsizetrue \fontbody \fontstyle \defaultfontalternative \fontsize +% \iftryingfont \fontstrategiesd \fi} +% \def\fontstrategiesd % --- --- def def % pt tt tf +% {\fontstrategy \autofontsizetrue \fontbody \fontstyle \defaultfontalternative \defaultfontsize +% \iftryingfont \fontstrategiese \fi} +% \def\fontstrategiese % --- def def def % pt rm tf +% {\fontstrategy \autofontsizefalse \fontbody \defaultfontstyle \defaultfontalternative \defaultfontsize +% \iftryingfont \fontstrategiesf \fi} +% \def\fontstrategiesf % def def def def % rm tf +% {\fontstrategy \autofontsizetrue \defaultfontbody \defaultfontstyle \defaultfontalternative \defaultfontsize} + +% \fontstrategies {\fontstrategiesa} +% \let\applyfontstrategies\fontstrategiesa + +% \def\fontclassstrategiesa % --- --- --- --- % pt tt bf a +% {\dofontclassstrategy \autofontsizefalse \fontbody \fontstyle \fontalternative \fontsize +% \iftryingfont \fontclassstrategiesb \fi} +% \def\fontclassstrategiesb % --- --- --- def % pt tt bf +% {\dofontclassstrategy \autofontsizetrue \fontbody \fontstyle \fontalternative \defaultfontsize +% \iftryingfont \fontclassstrategiesc \fi} +% \def\fontclassstrategiesc % --- --- def --- % pt tt tf a +% {\dofontclassstrategy \autofontsizetrue \fontbody \fontstyle \defaultfontalternative \fontsize +% \iftryingfont \fontclassstrategiesd \fi} +% \def\fontclassstrategiesd % --- --- def def % pt tt tf +% {\dofontclassstrategy \autofontsizetrue \fontbody \fontstyle \defaultfontalternative \defaultfontsize +% \iftryingfont \fontclassstrategiese \fi} +% \def\fontclassstrategiese % --- def def def % pt rm tf +% {\dofontclassstrategy \autofontsizefalse \fontbody \defaultfontstyle \defaultfontalternative \defaultfontsize +% \iftryingfont \fontclassstrategiesf \fi} +% \def\fontclassstrategiesf % def def def def % rm tf +% {\dofontclassstrategy \autofontsizetrue \defaultfontbody \defaultfontstyle \defaultfontalternative \defaultfontsize} + +\def\fontclassstrategiesa % --- --- --- --- % pt tt bf a + {\ifcsname\fontclass\fontbody \fontstyle \fontalternative \fontsize\endcsname + \autofontsizefalse + \csname\fontclass\fontbody \fontstyle \fontalternative \fontsize\endcsname + \else + \expandafter\fontclassstrategiesb + \fi} + +\def\fontclassstrategiesb % --- --- --- def % pt tt bf + {\ifcsname\fontclass\fontbody \fontstyle \fontalternative \defaultfontsize\endcsname + \autofontsizetrue + \csname\fontclass\fontbody \fontstyle \fontalternative \defaultfontsize\endcsname + \else + \expandafter\fontclassstrategiesc + \fi} + +\def\fontclassstrategiesc % --- --- def --- % pt tt tf a + {\ifcsname\fontclass\fontbody \fontstyle \defaultfontalternative \fontsize\endcsname + \autofontsizetrue + \csname\fontclass\fontbody \fontstyle \defaultfontalternative \fontsize\endcsname + \else + \expandafter\fontclassstrategiesd \fi} -\def\dofontclassstrategy#1#2#3#4#5% - {\ifcsname\fontclass#2#3#4#5\endcsname - #1\csname\fontclass#2#3#4#5\endcsname \tryingfontfalse +\def\fontclassstrategiesd % --- --- def def % pt tt tf + {\ifcsname\fontclass\fontbody \fontstyle \defaultfontalternative \defaultfontsize\endcsname + \autofontsizetrue + \csname\fontclass\fontbody \fontstyle \defaultfontalternative \defaultfontsize\endcsname + \else + \expandafter\fontclassstrategiese \fi} -\appendtoks \iftryingfont \fontstrategy \autofontsizefalse % --- --- --- --- % pt tt bf a - \fontbody \fontstyle \fontalternative \fontsize -\fi \to \fontstrategies +\def\fontclassstrategiese % --- def def def % pt rm tf + {\ifcsname\fontclass\fontbody \defaultfontstyle \defaultfontalternative \defaultfontsize\endcsname + \autofontsizefalse + \csname\fontclass\fontbody \defaultfontstyle \defaultfontalternative \defaultfontsize\endcsname + \else + \expandafter\fontclassstrategiesf + \fi} -\appendtoks \iftryingfont \fontstrategy \autofontsizetrue % --- --- --- def % pt tt bf - \fontbody \fontstyle \fontalternative \defaultfontsize -\fi \to \fontstrategies +\def\fontclassstrategiesf % def def def def % rm tf + {\ifcsname\fontclass\defaultfontbody \defaultfontstyle \defaultfontalternative \defaultfontsize\endcsname + \autofontsizetrue + \csname\fontclass\defaultfontbody \defaultfontstyle \defaultfontalternative \defaultfontsize\endcsname + \else + \expandafter\fontstrategiesa + \fi} -\appendtoks \iftryingfont \fontstrategy \autofontsizetrue % --- --- def --- % pt tt tf a - \fontbody \fontstyle \defaultfontalternative \fontsize -\fi \to \fontstrategies +% no class + +% \def\fontstrategiesa % --- --- --- --- % pt tt bf a +% {\dofontstrategy \autofontsizefalse \fontbody \fontstyle \fontalternative \fontsize +% \iftryingfont \fontstrategiesb \fi} +% \def\fontstrategiesb % --- --- --- def % pt tt bf +% {\dofontstrategy \autofontsizetrue \fontbody \fontstyle \fontalternative \defaultfontsize +% \iftryingfont \fontstrategiesc \fi} +% \def\fontstrategiesc % --- --- def --- % pt tt tf a +% {\dofontstrategy \autofontsizetrue \fontbody \fontstyle \defaultfontalternative \fontsize +% \iftryingfont \fontstrategiesd \fi} +% \def\fontstrategiesd % --- --- def def % pt tt tf +% {\dofontstrategy \autofontsizetrue \fontbody \fontstyle \defaultfontalternative \defaultfontsize +% \iftryingfont \fontstrategiese \fi} +% \def\fontstrategiese % --- def def def % pt rm tf +% {\dofontstrategy \autofontsizefalse \fontbody \defaultfontstyle \defaultfontalternative \defaultfontsize +% \iftryingfont \fontstrategiesf \fi} +% \def\fontstrategiesf % def def def def % rm tf +% {\dofontstrategy \autofontsizetrue \defaultfontbody \defaultfontstyle \defaultfontalternative \defaultfontsize} + +\def\fontstrategiesa % --- --- --- --- % pt tt bf a + {\ifcsname\fontbody \fontstyle \fontalternative \fontsize\endcsname + \autofontsizefalse + \csname\fontbody \fontstyle \fontalternative \fontsize\endcsname + \else + \expandafter\fontstrategiesb + \fi} -\appendtoks \iftryingfont \fontstrategy \autofontsizetrue % --- --- def def % pt tt tf - \fontbody \fontstyle \defaultfontalternative \defaultfontsize -\fi \to \fontstrategies +\def\fontstrategiesb % --- --- --- --- % pt tt bf a + {\ifcsname\fontbody \fontstyle \fontalternative \defaultfontsize\endcsname + \autofontsizetrue + \csname\fontbody \fontstyle \fontalternative \defaultfontsize\endcsname + \else + \expandafter\fontstrategiesc + \fi} -\appendtoks \iftryingfont \fontstrategy \autofontsizefalse % --- def def def % pt rm tf - \fontbody \defaultfontstyle \defaultfontalternative \defaultfontsize -\fi \to \fontstrategies +\def\fontstrategiesc % --- --- --- --- % pt tt bf a + {\ifcsname\fontbody \fontstyle \defaultfontalternative \fontsize\endcsname + \autofontsizetrue + \csname\fontbody \fontstyle \defaultfontalternative \fontsize\endcsname + \else + \expandafter\fontstrategiesd + \fi} + +\def\fontstrategiesd % --- --- --- --- % pt tt bf a + {\ifcsname\fontbody \fontstyle \defaultfontalternative \defaultfontsize\endcsname + \autofontsizetrue + \csname\fontbody \fontstyle \defaultfontalternative \defaultfontsize\endcsname + \else + \expandafter\fontstrategiese + \fi} + +\def\fontstrategiese % --- --- --- --- % pt tt bf a + {\ifcsname\fontbody \defaultfontstyle \defaultfontalternative \defaultfontsize\endcsname + \autofontsizefalse + \csname\fontbody \defaultfontstyle \defaultfontalternative \defaultfontsize\endcsname + \else + \expandafter\fontstrategiesf + \fi} + +\def\fontstrategiesf % --- --- --- --- % pt tt bf a + {\ifcsname\defaultfontbody \defaultfontstyle \defaultfontalternative \defaultfontsize\endcsname + \autofontsizetrue + \csname\defaultfontbody \defaultfontstyle \defaultfontalternative \defaultfontsize\endcsname + \fi} -\appendtoks \iftryingfont \fontstrategy \autofontsizetrue % def def def def % rm tf - \defaultfontbody \defaultfontstyle \defaultfontalternative \defaultfontsize -\fi \to \fontstrategies +\let\applyfontstrategies \fontstrategiesa +\let\applyfontclassstrategies\fontclassstrategiesa %D Let's synchronize: diff --git a/tex/context/base/grph-inc.mkii b/tex/context/base/grph-inc.mkii index acb5ae7e9..dde7ab2e6 100644 --- a/tex/context/base/grph-inc.mkii +++ b/tex/context/base/grph-inc.mkii @@ -611,6 +611,7 @@ \doshowfigurestate{state : figure not found (\expandedfigurename)}% \global\setbox\foundexternalfigure\naturalvbox {\doscalebox\??ef{\blackrule[\c!width=\naturalfigurewidth,\c!height=\naturalfigureheight]}}% + \xdef\noffigurepages{0}% \or \doshowfiguremessage8\expandedfigurename \doshowfigurestate{state : reusing existing figure}% @@ -896,8 +897,8 @@ \doresetobjects} \def\doiffigureelse#1% - {\getfiguredimensions[#1]% - \ifcase\figurewidth + {\getfiguredimensions[#1]% so data is available ! + \ifdim\analyzedfigurewidth=\zeropoint % todo: \figurestatus \expandafter\secondoftwoarguments \else \expandafter\firstoftwoarguments diff --git a/tex/context/base/grph-inc.mkiv b/tex/context/base/grph-inc.mkiv index 3fe30458e..c8c0e36b7 100644 --- a/tex/context/base/grph-inc.mkiv +++ b/tex/context/base/grph-inc.mkiv @@ -270,11 +270,11 @@ \egroup \egroup} -\def\signalexternalfigure +\def\signalexternalfigure % global {\ifcase\figurestatus - \resetsystemmode\v!figure % todo, also: \v!resource + \global\resetsystemmode\v!figure % todo, also: \v!resource \else - \setsystemmode \v!figure % todo, also: \v!resource + \global\setsystemmode \v!figure % todo, also: \v!resource \fi} \def\startfoundexternalfigure#1#2% @@ -345,15 +345,15 @@ \def\dogetfiguredimensions[#1][#2]% {\startnointerference - \testexternalfigureonly + \settrue\testexternalfigureonly \externalfigure[#1][#2,\c!display=,\c!object=\v!no]% \stopnointerference} \let\getfiguredimensionsonly\getfiguredimensions \def\doiffigureelse#1% - {\getfiguredimensions[#1]% - \ifcase\figurewidth % todo: \figurestatus + {\getfiguredimensions[#1]% so data is available ! + \ifdim\figurewidth=\zeropoint % todo: \figurestatus \expandafter\secondoftwoarguments \else \expandafter\firstoftwoarguments diff --git a/tex/context/base/math-def.mkiv b/tex/context/base/math-def.mkiv index 0438777fa..ad5e40672 100644 --- a/tex/context/base/math-def.mkiv +++ b/tex/context/base/math-def.mkiv @@ -331,8 +331,8 @@ % tricky .. todo -\appendtoks - \def\over{\primitive\over}% -\to \everymathematics +% \appendtoks +% \def\over{\primitive\over}% +% \to \everymathematics \protect \endinput diff --git a/tex/context/base/node-bck.lua b/tex/context/base/node-bck.lua new file mode 100644 index 000000000..6a01294f8 --- /dev/null +++ b/tex/context/base/node-bck.lua @@ -0,0 +1,116 @@ +if not modules then modules = { } end modules ['node-bck'] = { + version = 1.001, + comment = "companion to node-bck.tex", + author = "Hans Hagen, PRAGMA-ADE, Hasselt NL", + copyright = "PRAGMA ADE / ConTeXt Development Team", + license = "see context related readme files" +} + +local hlist = node.id("hlist") +local vlist = node.id("vlist") + +local has_attribute = node.has_attribute +local set_attribute = node.set_attribute +local traverse = node.traverse + +local new_rule = nodes.rule +local new_glue = nodes.glue + +local a_color = attributes.private('color') +local a_transparency = attributes.private('transparency') +local a_colorspace = attributes.private('colormodel') +local a_background = attributes.private('background') + +local function add_backgrounds(head) -- boxes, inline will be done too + local id = head.id + if id == vlist or id == hlist then + local current = head.list + while current do + local id = current.id + if id == hlist then -- and current.list + local background = has_attribute(current,a_background) + if background then + -- direct to hbox + -- colorspace is already set so we can omit that and stick to color + local mode = has_attribute(current,a_colorspace) + if mode then + local glue = new_glue(-current.width) + local rule = new_rule(current.width,current.height,current.depth) + local color = has_attribute(current,a_color) + local transparency = has_attribute(current,a_transparency) + set_attribute(rule,a_colorspace, mode) + if color then + set_attribute(rule,a_color, color) + end + if transparency then + set_attribute(rule,a_transparency,transparency) + end + rule.next = glue + glue.next = current.list + current.list = rule + end + else + -- temporary hack for aligments + local list, background, found = current.list, nil, nil + for l in traverse(list) do + background = has_attribute(l,a_background) + if background then + found = l + break + end + end + if background then + local mode = has_attribute(found,a_colorspace) + if mode then + local glue = new_glue(-current.width) + local rule = new_rule(current.width,current.height,current.depth) + local color = has_attribute(found,a_color) + local transparency = has_attribute(found,a_transparency) + set_attribute(rule,a_colorspace, mode) + if color then + set_attribute(rule,a_color, color) + end + if transparency then + set_attribute(rule,a_transparency,transparency) + end + rule.next = glue + glue.next = list + current.list = rule + end + else + add_backgrounds(current) + end + end + elseif id == vlist then -- and current.list + -- direct to vbox + local background = has_attribute(current,a_background) + if background then + local mode = has_attribute(current,a_colorspace) + if mode then + local glue = new_glue(-current.height-current.depth) + local rule = new_rule(current.width,current.height,current.depth) + local color = has_attribute(current,a_color) + local transparency = has_attribute(current,a_transparency) + set_attribute(rule,a_colorspace, mode) + if color then + set_attribute(rule,a_color, color) + end + if transparency then + set_attribute(rule,a_transparency,transparency) + end + rule.next = glue + glue.next = current.list + current.list = rule + end + end + add_backgrounds(current) + end + current = current.next + end + end + return head, true +end + +nodes.add_backgrounds = add_backgrounds + +tasks.appendaction("shipouts","normalizers","nodes.add_backgrounds") diff --git a/tex/context/base/node-bck.mkiv b/tex/context/base/node-bck.mkiv new file mode 100644 index 000000000..758e598e8 --- /dev/null +++ b/tex/context/base/node-bck.mkiv @@ -0,0 +1,163 @@ +%D \module +%D [ file=node-bck, +%D version=2009.06.08, +%D title=\CONTEXT\ Node Macros, +%D subtitle=Backgrounds, +%D author=Hans Hagen, +%D date=\currentdate, +%D copyright=PRAGMA] +%C +%C This module is part of the \CONTEXT\ macro||package and is +%C therefore copyrighted by \PRAGMA. See mreadme.pdf for +%C details. + +\writestatus{loading}{ConTeXt Node Support / Backgrounds} + +%D This is first attempt to replacing backgrounds in a few +%D tables mechanisms. + +\unprotect + +\registerctxluafile{node-bck}{1.001} + +%D Box helpers: + +\def\doaddbackgroundtobox#1[#2]% + {\begingroup\faststartcolor[#2]% + \normalexpanded{\noexpand\faststopcolor\endgroup#1 + attr \backgroundattribute \plusone + attr \colormodelattribute \the\attribute\colormodelattribute + attr \colorattribute \the\attribute\colorattribute + attr \transparencyattribute \the\attribute\transparencyattribute}} + +\def\backgroundvbox{\doaddbackgroundtobox\vbox} +\def\backgroundvtop{\doaddbackgroundtobox\vtop} +\def\backgroundhbox{\doaddbackgroundtobox\hbox} + +\def\colorattr#1% + {\ifcsname(cs:\currentpalet#1)\endcsname + \thecolorattr{\currentpalet#1}% + \else\ifcsname(cs:#1)\endcsname + \thecolorattr{#1}% + \fi\fi} + +\def\thecolorattr#1% + {attr \colormodelattribute \attribute\colormodelattribute + attr \colorattribute \csname(cs:#1)\endcsname + attr \transparencyattribute \csname(ts:#1)\endcsname} + +\def\backgroundcolorattr#1% + {\ifcsname(cs:\currentpalet#1)\endcsname + \thebackgroundcolorattr{\currentpalet#1}% + \else\ifcsname(cs:#1)\endcsname + \thebackgroundcolorattr{#1}% + \fi\fi} + +\def\thebackgroundcolorattr#1% + {attr \backgroundattribute \plusone + attr \colormodelattribute \attribute\colormodelattribute + attr \colorattribute \csname(cs:#1)\endcsname + attr \transparencyattribute \csname(ts:#1)\endcsname} + +% \def\backgroundvbox[#1]{\vbox \backgroundcolorattr{#1}} +% \def\backgroundvtop[#1]{\vtop \backgroundcolorattr{#1}} +% \def\backgroundhbox[#1]{\hbox \backgroundcolorattr{#1}} + +%D tabulate: + +\def\tabulatenormalcolumn#1% + {\doiffastoptionalcheckelse{\tabulatenormalcolumnyes#1}{\tabulatenormalcolumnnop#1}} + +\def\tabulatenormalcolumnnop#1% overloads anch-pgr + {&\iftabulateequal\tabulateequalpos\else\tabulatenormalpos\fi&\global\chardef\tabulatetype#1&} + +\def\tabulatenormalcolumnyes#1[#2]% + {&\iftabulateequal\tabulateequalpos\else\tabulatenormalpos\fi&\global\chardef\tabulatetype#1&% + \iftrialtypesetting\else\settabulatecolor{#2}\fi\ignorespaces} + +\newcount\maxtabularcolorcolumn + +\def\settabulatecolor#1% we could store the attributes at the cost of a lua call + {\begingroup + \global\settrue\tabulatehascolors + \ifnum\tabulatecolumn>\maxtabularcolorcolumn + \global\maxtabularcolorcolumn\tabulatecolumn + \fi + \setxvalue{\??tt:c:\the\tabulatecolumn}{#1}% + \dosetattribute{background}\plusone + \faststartcolor[#1]\strut\char0\faststopcolor + \endgroup} + +\def\repeatsettabulatecolor + {\begingroup + \ifcsname\??tt:c:\the\tabulatecolumn\endcsname + \dosetattribute{background}\plusone + \faststartcolor[\csname\??tt:c:\the\tabulatecolumn\endcsname]\strut\char0\faststopcolor + \fi + \endgroup} + +\def\resettabulatecolors + {\ifcase\maxtabularcolorcolumn\else + \doresettabulatecolors + \fi} + +\def\doresettabulatecolors + {\dorecurse\maxtabularcolorcolumn{\letgvalue{\??tt:c:\recurselevel}\undefined}} % slow + +\appendtoks + \resettabulatecolors +\to \everyaftertabulaterow + +\def\splitofftabulatebox % overloads in anch-pgr + {\dontcomplain + \global\setbox\tabulatebox % % % global ? % % % + \vsplit\tablebox\tabulatecolumn to \lineheight + \setbox\tabulatebox\normalvbox + {\unvbox\tabulatebox}% + \setbox\tabulatebox\hbox to \wd\tabulatebox + {\iftrialtypesetting\else\ifconditional\tabulatehascolors\repeatsettabulatecolor\fi\fi + \hss\dotabulatehook{\box\tabulatebox}\hss}% + \ht\tabulatebox\strutht + \dp\tabulatebox\strutdp + \box\tabulatebox + \iftrialtypesetting\else\ifconditional\tablehaspositions\doflushtabulateepos\fi\fi} + +\appendtoks + \global\setfalse\tabulatehascolors +\to \everytabulate + +\protect \endinput + +% test + +\starttext + +\backgroundvbox[green] {\input tufte } \par +\backgroundvbox[blue] {\input ward } \par +\backgroundvbox[red] {\input knuth } \par +\backgroundhbox[yellow]{\rotate[rotation=45]{hello world}} \par + +\starttabulate[||p||] +\NC test \NC test \NC test \NC \NR +\NC test \NC[green] \input tufte \NC[yellow] test \NC \NR +\NC test \NC test \NC test \NC \NR +\NC test \NC test \NC test \NC \NR +\NC test \NC test \NC test \NC \NR +\NC test \NC test \NC test \NC \NR +\NC[blue] test \NC[red] test \NC test \NC \NR +\NC test \NC test \NC test \NC \NR +\NC test \NC test \NC test \NC \NR +\NC test \NC test \NC test \NC \NR +\NC test \NC test \NC[gray] test \NC \NR +\NC test \NC test \NC test \NC \NR +\NC test \NC test \NC test \NC \NR +\NC[blue] test \NC test \NC test \NC \NR +\NC test \NC test \NC test \NC \NR +\NC test \NC test \NC[magenta] test \NC \NR +\NC test \NC test \NC test \NC \NR +\NC test \NC[cyan] \dorecurse{10}{\input ward }\NC test \NC \NR +\NC test \NC test \NC test \NC \NR +\NC test \NC[yellow] test \NC test \NC \NR +\stoptabulate + +\stoptext diff --git a/tex/context/base/strc-doc.lua b/tex/context/base/strc-doc.lua index 76599c371..cb279e320 100644 --- a/tex/context/base/strc-doc.lua +++ b/tex/context/base/strc-doc.lua @@ -187,7 +187,9 @@ end function sections.somelevel(given) -- old number local numbers, ownnumbers, forced, status, olddepth = data.numbers, data.ownnumbers, data.forced, data.status, data.depth +--~ print("old",olddepth,given.metadata.name,levelmap[given.metadata.name]) local newdepth = tonumber(levelmap[given.metadata.name] or (olddepth > 0 and olddepth) or 1) -- hm, levelmap only works for section-* +--~ print("new",newdepth) local directives = given.directives local resetset = (directives and directives.resetset) or "" local resetter = sets.getall("structure:resets",data.block,resetset) diff --git a/tex/context/base/strc-ref.lua b/tex/context/base/strc-ref.lua index b1b77f45f..eb4f74ce8 100644 --- a/tex/context/base/strc-ref.lua +++ b/tex/context/base/strc-ref.lua @@ -690,6 +690,15 @@ function filters.generic.title(data) end end +function filters.generic.text(data) + if data then + local entries = data.entries + if entries then + helpers.title(entries.text or "?",data.metadata) + end + end +end + function filters.generic.number(data) -- todo: spec and then no stopper if data then helpers.prefix(data) diff --git a/tex/context/base/strc-ref.mkiv b/tex/context/base/strc-ref.mkiv index 8bf724b99..5db3d0013 100644 --- a/tex/context/base/strc-ref.mkiv +++ b/tex/context/base/strc-ref.mkiv @@ -11,6 +11,17 @@ %C therefore copyrighted by \PRAGMA. See mreadme.pdf for %C details. +% todo: (1) configure references, (2) rendering => with presets +% +% \starttext +% \definestructureconversionset[default][Character,number,Romannumerals,Character][number] +% \definestructureseparatorset [default][.,.,--][.] +% \setupstructurehead[subsection][sectionstopper=),sectionsegments=4:4] + +% \setupreferencing[sectionsegments=3:4] +% \section {One} \subsection[sec:test]{Two} See \in[sec:test] +% \stoptext + \writestatus{loading}{ConTeXt Structure Macros / Cross Referencing} \registerctxluafile{strc-ref}{1.001} @@ -704,15 +715,22 @@ %D and~\type{[} becomes active (and when asked for, typeset %D in a different color and typeface). -\definecommand in {\dospecialin} -\definecommand at {\dospecialat} -\definecommand about {\dospecialabout} -\definecommand from {\dospecialfrom} -\definecommand over {\dospecialabout} % needed here, else math problems +% \unexpanded\def\in {\mathortext\donormalmathin \dospecialin} +% \unexpanded\def\at {\mathortext\donormalmathat \dospecialat} +% \unexpanded\def\about{\mathortext\donormalmathabout\dospecialabout} +% \unexpanded\def\from {\mathortext\donormalmathfrom \dospecialfrom} +% \unexpanded\def\over {\mathortext\donormalmathover \dospecialabout} + +% \definecommand in {\dospecialin} +% \definecommand at {\dospecialat} +% \definecommand about {\dospecialabout} +% \definecommand from {\dospecialfrom} +% \definecommand over {\dospecialabout} % needed here, else math problems \def\currentreferencenumber {\ctxlua{jobreferences.filter("number")}} \def\currentreferencepage {\ctxlua{jobreferences.filter("page")}} \def\currentreferencetitle {\ctxlua{jobreferences.filter("title")}} +\def\currentreferencetext {\ctxlua{jobreferences.filter("text")}} \def\currentreferencerealpage{\ctxlua{jobreferences.realpage()}} \unexpanded\def\dospecialabout[#1]% diff --git a/tex/context/base/strc-sec.mkiv b/tex/context/base/strc-sec.mkiv index d64af6a53..ddc601eb8 100644 --- a/tex/context/base/strc-sec.mkiv +++ b/tex/context/base/strc-sec.mkiv @@ -145,7 +145,7 @@ % deeptextcommand and deepnumbercommand are left undefined ! -\def\dodefineuniquestructurehead#1#2% class, parameters +\def\dodefineuniquestructurehead#1#2% class, parent {\def\currentstructurehead{#1}% \presetlabeltext[#1=]% \getparameters[\??nh#1][\c!label=#1,#2]% @@ -183,14 +183,15 @@ \doifelse{#1}{#2} {\getparameters[\??nh#1][\c!label=#1]% \doifundefined{\??li#1}{\definelist[#1][\c!prefix=\v!no]}}% definestructurelist ? - {\getparameters[\??nh#1][\s!parent=\??nh#2,\c!label=#1]% + {\getparameters[\??nh#1][\s!parent=\??nh#2,\c!label=#1,\c!coupling=#2]% \definemarking[#1][#2]% \definemarking[#1\v!number][#2\c!number]% \doifundefined{\??li#1}{\definelist[#1][#2][\c!prefix=\v!no]}}% definestructurelist ? \the\everystructureheadsetup} \appendtoks - \setstructurelevel\currentstructurehead{\structuresectionheadsection{\structuresectionheadcoupling\currentstructurehead}}% +% \setstructurelevel\currentstructurehead{\structuresectionheadsection{\structuresectionheadcoupling\currentstructurehead}}% + \setstructurelevel\currentstructurehead{\thenamedstructureheadlevel\currentstructurehead}% \doifelse{\structureheadparameter\c!ownnumber}\v!yes {\setevalue\currentstructurehead{\noexpand\dohandlestructureheadown[\currentstructurehead]}} {\setevalue\currentstructurehead{\noexpand\dohandlestructureheadnop[\currentstructurehead]}}% diff --git a/tex/context/base/syst-aux.mkiv b/tex/context/base/syst-aux.mkiv index 7b119f578..995a0cb6e 100644 --- a/tex/context/base/syst-aux.mkiv +++ b/tex/context/base/syst-aux.mkiv @@ -350,14 +350,16 @@ %D The next one is handy in predictable situations: -\def\doiffastoptionalcheckelse - {\futurelet\nexttoken\dodoiffastoptionalcheckelse} +\long\def\doiffastoptionalcheckelse#1#2% + {\def\nextoptionalcommandyes{#1}% + \def\nextoptionalcommandnop{#2}% + \futurelet\nexttoken\dodoiffastoptionalcheckelse} \def\dodoiffastoptionalcheckelse {\ifx\nexttoken\nextoptionalcharactertoken - \expandafter\firstoftwoarguments + \expandafter\nextoptionalcommandyes \else - \expandafter\secondoftwoarguments + \expandafter\nextoptionalcommandnop \fi} %D This macro uses some auxiliary macros. Although we were able diff --git a/tex/context/base/tabl-tbl.mkiv b/tex/context/base/tabl-tbl.mkiv index af2b50c86..bfff978ab 100644 --- a/tex/context/base/tabl-tbl.mkiv +++ b/tex/context/base/tabl-tbl.mkiv @@ -792,17 +792,17 @@ \def\doparsetabulate {\futurelet\next\dodoparsetabulate} -\def\dodoparsetabulate % \@EAEAEA gebruiken - {\ifx\next\relax - % exit - \else\ifx*\next - \let\next\dorepeatparsetabulate - \else\ifx\bgroup\next - \let\next\dododoparsetabulate - \else - \let\next\dodododoparsetabulate - \fi\fi\fi - \next}% +% \def\dodoparsetabulate % \@EAEAEA gebruiken +% {\ifx\next\relax +% % exit +% \else\ifx*\next +% \let\next\dorepeatparsetabulate +% \else\ifx\bgroup\next +% \let\next\dododoparsetabulate +% \else +% \let\next\dodododoparsetabulate +% \fi\fi\fi +% \next}% \def\dorepeatparsetabulate*#1#2% {\dorecurse{#1}{\!!toksb\expandafter{\the\!!toksb#2}}% \dorecurse{#1}{\appendtoks#2\to\!!toksb}% @@ -816,6 +816,14 @@ {\!!toksb\expandafter{\the\!!toksb#1}% \appendtoks#1\to\!!toksb \doparsetabulate} +\letvalue{\??tt<\meaning *}\dorepeatparsetabulate +\letvalue{\??tt<\meaning \bgroup}\dododoparsetabulate +\letvalue{\??tt<\meaning \relax}\donothing +\letvalue{\??tt<\s!unknown }\dodododoparsetabulate + +\def\dodoparsetabulate + {\csname\??tt<\ifcsname\??tt<\meaning\next\endcsname\meaning\next\else\s!unknown\fi\endcsname} + \setvalue{\??tt:\c!split:\v!yes }{\splittabulatetrue} \setvalue{\??tt:\c!split:\v!repeat}{\splittabulatetrue} \setvalue{\??tt:\c!split:\v!no }{\splittabulatefalse} diff --git a/tex/context/bib/t-bib.tex b/tex/context/bib/t-bib.tex index 11ed1309c..876bad8e2 100644 --- a/tex/context/bib/t-bib.tex +++ b/tex/context/bib/t-bib.tex @@ -1092,7 +1092,7 @@ \else\ifcsname#2\s!en#3\endcsname \csname#2\s!en#3\endcsname \fi\fi - \fi\fi} + \fi\fi} \def\docompletepublications[#1]% {\begingroup @@ -1435,7 +1435,7 @@ \edef\currentbibauthor{\currentbibauthor ##1\bibalternative{andtext}}% \else \edef\currentbibauthor{\currentbibauthor ##1\bibalternative{namesep}}% - \fi + \fi \fi }% \processcommalist[#2]\bibprocessauthoritem } diff --git a/tex/generic/context/luatex-fonts-merged.lua b/tex/generic/context/luatex-fonts-merged.lua index a44570a48..3834afce5 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 : 08/17/09 19:08:24 +-- merge date : 08/19/09 17:12:50 do -- begin closure to overcome local limits and interference |