diff options
| author | Hans Hagen <pragma@wxs.nl> | 2011-09-06 17:46:00 +0200 | 
|---|---|---|
| committer | Hans Hagen <pragma@wxs.nl> | 2011-09-06 17:46:00 +0200 | 
| commit | 77534ea17416d2e316327e79a3fd7b3639659e45 (patch) | |
| tree | e544630414702a2d004306eaf9f958e310d5c07b | |
| parent | 6a5523efcc3df3f9d51d2a98360825904df56630 (diff) | |
| download | context-77534ea17416d2e316327e79a3fd7b3639659e45.tar.gz | |
beta 2011.09.06 17:46
| -rw-r--r-- | tex/context/base/cont-new.mkii | 2 | ||||
| -rw-r--r-- | tex/context/base/cont-new.mkiv | 2 | ||||
| -rw-r--r-- | tex/context/base/context-version.pdf | bin | 4086 -> 4092 bytes | |||
| -rw-r--r-- | tex/context/base/context-version.png | bin | 104502 -> 105777 bytes | |||
| -rw-r--r-- | tex/context/base/context.mkii | 2 | ||||
| -rw-r--r-- | tex/context/base/context.mkiv | 2 | ||||
| -rw-r--r-- | tex/context/base/lpdf-ano.lua | 1 | ||||
| -rw-r--r-- | tex/context/base/mult-aux.mkiv | 21 | ||||
| -rw-r--r-- | tex/context/base/scrn-but.mkvi | 3 | ||||
| -rw-r--r-- | tex/context/base/scrn-ini.mkvi | 29 | ||||
| -rw-r--r-- | tex/context/base/status-files.pdf | bin | 23932 -> 23953 bytes | |||
| -rw-r--r-- | tex/context/base/status-lua.pdf | bin | 162268 -> 162273 bytes | |||
| -rw-r--r-- | tex/context/base/strc-lst.mkiv | 2 | ||||
| -rw-r--r-- | tex/context/base/strc-ref.lua | 39 | ||||
| -rw-r--r-- | tex/context/base/strc-ref.mkiv | 61 | ||||
| -rw-r--r-- | tex/context/base/strc-reg.mkiv | 2 | ||||
| -rw-r--r-- | tex/context/base/typo-krn.lua | 5 | ||||
| -rw-r--r-- | tex/generic/context/luatex/luatex-fonts-merged.lua | 2 | 
18 files changed, 77 insertions, 96 deletions
| diff --git a/tex/context/base/cont-new.mkii b/tex/context/base/cont-new.mkii index 575b21253..786a54b79 100644 --- a/tex/context/base/cont-new.mkii +++ b/tex/context/base/cont-new.mkii @@ -11,7 +11,7 @@  %C therefore copyrighted by \PRAGMA. See mreadme.pdf for  %C details. -\newcontextversion{2011.09.05 23:49} +\newcontextversion{2011.09.06 17:46}  %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/cont-new.mkiv b/tex/context/base/cont-new.mkiv index 764d14381..f3fa1ebf3 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{2011.09.05 23:49} +\newcontextversion{2011.09.06 17:46}  %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-version.pdf b/tex/context/base/context-version.pdfBinary files differ index fe96d9b72..a6f5b3ea2 100644 --- a/tex/context/base/context-version.pdf +++ b/tex/context/base/context-version.pdf diff --git a/tex/context/base/context-version.png b/tex/context/base/context-version.pngBinary files differ index f9dc15ab5..796c6a21a 100644 --- a/tex/context/base/context-version.png +++ b/tex/context/base/context-version.png diff --git a/tex/context/base/context.mkii b/tex/context/base/context.mkii index bc8810642..0c5b11a71 100644 --- a/tex/context/base/context.mkii +++ b/tex/context/base/context.mkii @@ -20,7 +20,7 @@  %D your styles an modules.  \edef\contextformat {\jobname} -\edef\contextversion{2011.09.05 23:49} +\edef\contextversion{2011.09.06 17:46}  %D For those who want to use this: diff --git a/tex/context/base/context.mkiv b/tex/context/base/context.mkiv index 9e6170785..dc50a9492 100644 --- a/tex/context/base/context.mkiv +++ b/tex/context/base/context.mkiv @@ -20,7 +20,7 @@  %D your styles an modules.  \edef\contextformat {\jobname} -\edef\contextversion{2011.09.05 23:49} +\edef\contextversion{2011.09.06 17:46}  %D For those who want to use this: diff --git a/tex/context/base/lpdf-ano.lua b/tex/context/base/lpdf-ano.lua index 3660d5a65..9dfe42039 100644 --- a/tex/context/base/lpdf-ano.lua +++ b/tex/context/base/lpdf-ano.lua @@ -180,7 +180,6 @@ end  local function pdfaction(actions)      local nofactions = #actions -    texcount.referencepagestate = 0 -- goodie, as we do all in the backend, we need to set it here too      if nofactions > 0 then          local a = actions[1]          local action = runners[a.kind] diff --git a/tex/context/base/mult-aux.mkiv b/tex/context/base/mult-aux.mkiv index c5ae2a407..52dbf8966 100644 --- a/tex/context/base/mult-aux.mkiv +++ b/tex/context/base/mult-aux.mkiv @@ -120,19 +120,26 @@          \expandafter\noexpand\csname let#2parameter\endcsname          \expandafter\noexpand\csname reset#2parameter\endcsname}} -\unexpanded\def\doinstallattributehandler#1#2#3% #1 not used here -  {\def#2##1##2% style color -     {\edef\fontattributehash {#3{##1}}% this name is public -      \edef\colorattributehash{#3{##2}}% this name is public +\unexpanded\def\doinstallattributehandler#1#2#3#4% +  {\unexpanded\def#2##1##2% style color +     {\edef\fontattributehash {#1{##1}}% this name is public +      \edef\colorattributehash{#1{##2}}% this name is public        \ifx\fontattributehash \empty\else\dosetfontattribute \fontattributehash {##1}\fi -      \ifx\colorattributehash\empty\else\dosetcolorattribute\colorattributehash{##2}\fi}} +      \ifx\colorattributehash\empty\else\dosetcolorattribute\colorattributehash{##2}\fi}% +   \unexpanded\def#3##1% style +     {\edef\fontattributehash {#1{##1}}% this name is public +      \ifx\fontattributehash \empty\else\dosetfontattribute \fontattributehash {##1}\fi}% +   \unexpanded\def#4##1% color +     {\edef\colorattributehash{#1{##1}}% this name is public +      \ifx\colorattributehash\empty\else\dosetcolorattribute\colorattributehash{##1}\fi}}  \unexpanded\def\installattributehandler#1#2%    {\normalexpanded       {\doinstallattributehandler -        {\noexpand#1}% \??aa +        \expandafter\noexpand\csname #2parameterhash\endcsname          \expandafter\noexpand\csname doset#2attributes\endcsname -        \expandafter\noexpand\csname #2parameterhash\endcsname}} +        \expandafter\noexpand\csname doset#2fontattribute\endcsname +        \expandafter\noexpand\csname doset#2colorattribute\endcsname}}  \let\definehandlerparent\empty diff --git a/tex/context/base/scrn-but.mkvi b/tex/context/base/scrn-but.mkvi index 7ee9f5473..fee8e757c 100644 --- a/tex/context/base/scrn-but.mkvi +++ b/tex/context/base/scrn-but.mkvi @@ -166,8 +166,7 @@     \endgroup}  \def\scrn_button_make_yes -  {\analyzecurrentreference                                           % needed as we act on the state -   \ifcase\referencepagestate +  {\ifcase\referencepagestate\relax       \expandafter\scrn_button_make_normal                             % no state :  something else than a page reference     \or       \ifcase\locationboxpagestate\relax diff --git a/tex/context/base/scrn-ini.mkvi b/tex/context/base/scrn-ini.mkvi index 5715f69c3..e7684f02d 100644 --- a/tex/context/base/scrn-ini.mkvi +++ b/tex/context/base/scrn-ini.mkvi @@ -27,7 +27,7 @@  %D  %D \showsetup{setupinteraction} -\installcommandhandler\??ia{interaction}\??ia +\installcommandhandler\??ia {interaction} \??ia  \let\currentinteraction\empty @@ -107,33 +107,32 @@  %D When we're dealing with pure page references, contrast  %D colors are used when we are already at the page mentioned. -\def\setlocationcolor#1% not grouped ! +\def\setlocationcolor % not grouped !    {\ifnum\referencepagestate=\plusone -     \edef\askedcontrastcolor{\csname#1\c!contrastcolor\endcsname}% +     \edef\askedcontrastcolor{\interactionparameter\c!contrastcolor}%       \ifx\askedcontrastcolor\empty -       \dosetcolorattribute{#1}\c!color +       \dosetinteractioncolorattribute\c!color       \else -       \dosetcolorattribute{#1}\c!contrastcolor +       \dosetinteractioncolorattribute\c!contrastcolor       \fi     \else % we could just set and if > 0 set again -     \dosetcolorattribute{#1}\c!color +     \dosetinteractioncolorattribute\c!color     \fi} -\def\setlocationfont#1% -  {\dosetfontattribute{#1}\c!style} +\def\setlocationfont % not grouped ! +  {\dosetinteractionfontattribute\c!style} -\def\setlocationattributes#1% +\def\setlocationattributes % not grouped !    {\ifnum\referencepagestate=\plusone -     \edef\askedcontrastcolor{\csname#1\c!contrastcolor\endcsname}% +     \edef\askedcontrastcolor{\interactionparameter\c!contrastcolor}%       \ifx\askedcontrastcolor\empty -       \dosetcolorattribute{#1}\c!color +       \dosetinteractionattributes\c!style\c!color       \else -       \dosetcolorattribute{#1}\c!contrastcolor +       \dosetinteractionattributes\c!style\c!contrastcolor       \fi     \else % we could just set and if > 0 set again -     \dosetcolorattribute{#1}\c!color -   \fi -   \dosetfontattribute{#1}\c!style} +     \dosetinteractionattributes\c!style\c!color +   \fi}  \def\setlocationcolorspec#1% \resolver    {\ifnum\referencepagestate=\plusone diff --git a/tex/context/base/status-files.pdf b/tex/context/base/status-files.pdfBinary files differ index aaaede636..7638971e5 100644 --- a/tex/context/base/status-files.pdf +++ b/tex/context/base/status-files.pdf diff --git a/tex/context/base/status-lua.pdf b/tex/context/base/status-lua.pdfBinary files differ index fa9d18a12..4af2b8652 100644 --- a/tex/context/base/status-lua.pdf +++ b/tex/context/base/status-lua.pdf diff --git a/tex/context/base/strc-lst.mkiv b/tex/context/base/strc-lst.mkiv index 09bdd79bf..ec09b3b2d 100644 --- a/tex/context/base/strc-lst.mkiv +++ b/tex/context/base/strc-lst.mkiv @@ -614,7 +614,7 @@          \doif{\namedheadparameter\currentlist\c!interaction}\v!list            {\dosetsimplepagereference{bck:#2}%             \attribute\destinationattribute\currentdestinationattribute}% -        \directgoto{\setlocationcolor\??ia#4}[internal(#2)]% we can get the attribute instead so then we don't need a goto +        \directgoto{\setlocationcolor#4}[internal(#2)]% we can get the attribute instead so then we don't need a goto          \endgroup}% was \directgotobox         {#3{#4}}%     \else diff --git a/tex/context/base/strc-ref.lua b/tex/context/base/strc-ref.lua index d3c3f7ff7..cc7e4799d 100644 --- a/tex/context/base/strc-ref.lua +++ b/tex/context/base/strc-ref.lua @@ -945,8 +945,8 @@ local n = 0  local function identify(prefix,reference)      local set = resolve(prefix,reference)      local bug = false -n = n + 1 -set.n = n +    n = n + 1 +    set.n = n      for i=1,#set do          local var = set[i]          local special, inner, outer, arguments, operation = var.special, var.inner, var.outer, var.arguments, var.operation @@ -1199,6 +1199,7 @@ set.n = n          bug = bug or var.error          set[i] = var      end +--~ references.analyze(set)      references.currentset = mark(set) -- mark, else in api doc      if trace_analyzing then          report_references(table.serialize(set,reference)) @@ -1328,7 +1329,8 @@ function references.filter(name,...) -- number page title ...      local data = currentreference and currentreference.i -- maybe we should take realpage from here      if data then          if name == "realpage" then -            references.realpage() -- special case, does an analysis (maybe we have more) +            local cs = references.analyze() -- normally already analyzed but also sets state +            context(cs.realpage or 0) -- todo, return and in command namespace          else              local kind = data.metadata and data.metadata.kind              if kind then @@ -1499,14 +1501,14 @@ local function checkedpagestate(n,page)      end  end -local function analyze(actions) +function references.analyze(actions)      actions = actions or references.currentset      if not actions then -        actions = { realpage = 0 } -        texcount.referencepagestate = 0 +        actions = { realpage = 0, pagestate = 0 } +    elseif actions.pagestate then +        -- already done      elseif actions.realpage then -        -- already analyzed -        texcount.referencepagestate = checkedpagestate(actions.n,actions.realpage) +        actions.pagestate = checkedpagestate(actions.n,actions.realpage)      else          -- we store some analysis data alongside the indexed array          -- at this moment only the real reference page is analyzed @@ -1517,22 +1519,27 @@ local function analyze(actions)                  local a = actions[i]                  local what = runners[a.kind]                  if what then -                    what = what(a,actions) +                    what = what(a,actions) -- needs documentation                  end              end -            texcount.referencepagestate = checkedpagestate(actions.n,actions.realpage) +            actions.pagestate = checkedpagestate(actions.n,actions.realpage)          else -            texcount.referencepagestate = 0 +            actions.pagestate = 0          end      end      return actions  end -references.analyze = analyze - -function references.realpage() -- special case, we always want result (also does test ... still needed?) -    local cs = analyze() -    context(cs.realpage or 0) +function commands.referencepagestate(actions) +    actions = actions or references.currentset +    if not actions then +        context(0) +    else +        if not actions.pagestate then +            references.analyze(actions) -- delayed unless explicitly asked for +        end +        context(actions.pagestate) +    end  end  local plist diff --git a/tex/context/base/strc-ref.mkiv b/tex/context/base/strc-ref.mkiv index 5800f677f..5c97fba5d 100644 --- a/tex/context/base/strc-ref.mkiv +++ b/tex/context/base/strc-ref.mkiv @@ -290,28 +290,14 @@  \let\currentsubtextreference   \empty  \let\currentsubsubtextreference\empty -\newcount\referencepagestate   % set in backend  \newcount\referencehastexstate % set in backend +\def\referencepagestate{\ctxcommand{referencepagestate()}} +  % referencepagestate:  %  % 0 = no page ref, 1=same page, 2=before, 3=after -%D Text references can contain more than one entry and -%D therefore we check for -%D -%D \starttyping -%D {entry} -%D \stoptyping -%D -%D or -%D -%D \starttyping -%D {{entry}{entry}{entry}} -%D \stoptyping -%D -%D and split accordingly. -  %D Cross references appear as numbers (figure~1.1, chapter~2)  %D or pagenumbers (page~2, page 3--2), and are called with  %D \type{\in} and \type{\at}. In interactive documents we also @@ -332,28 +318,9 @@  %D are references to a file or \URL. The brace delimited  %D references for instance refer to a \JAVASCRIPT. The last  %D example shows that we can pass arguments to the actions. -%D -%D When we split off the components of such a reference, the -%D results are available in: -%D -%D \starttyping -%D \currentreferencespecial -%D \currentreferenceoperation -%D \currentreferencearguments -%D \currentinnerreference -%D \currentouterreference -%D \currentfullreference -%D \stoptyping  \newif\ifreferencefound -% \let\currentfullreference     \empty -% \let\currentreferencespecial  \empty -% \let\currentreferenceoperation\empty -% \let\currentreferencearguments\empty -% \let\currentouterreference    \empty -% \let\currentinnerreference    \empty -  %D Now we've come to the testing step. As we can see below,  %D this macro does bit more than testing: it also resolves  %D the reference. This means that whenever we test for the @@ -469,8 +436,8 @@  %D one wants to use the pagestate the next macro seldom needs to  %D be called. -\def\analyzecurrentreference -  {\ctxlua{structures.references.analyze()}} +% \def\analyzecurrentreference +%   {\ctxlua{structures.references.analyze()}}  %D The inner case is simple. Only two cases have to be taken  %D care of: @@ -876,12 +843,12 @@  \unexpanded\def\somewhere#1#2#3[#4]% #3 gobbles space around #2 % todo    {\doifreferencefoundelse{#4}% kind of inefficient as \goto also analyzes -     {\goto{\analyzecurrentreference\ifcase\referencepagestate\relax#1/#2\or#2\or#1\or#2\fi}[#4]} +     {\goto{\ifcase\referencepagestate\relax#1/#2\or#2\or#1\or#2\fi}[#4]}       {[#1/#2]}}  \unexpanded\def\atpage[#1]% todo    {\doifreferencefoundelse{#1}% kind of inefficient as \goto also analyzes -     {\goto{\analyzecurrentreference\ifcase\referencepagestate +     {\goto{\ifcase\referencepagestate\relax          \labeltexts\v!page\dummyreference        \or          \labeltexts\v!atpage\currentreferencepage @@ -900,7 +867,7 @@    {\hbox{\strut\high       {\setupsymbolset[\interactionparameter\c!symbolset]%        \symbol -        [\ifcase\referencepagestate +        [\ifcase\referencepagestate\relax             \v!somewhere           \or % same             \v!nowhere @@ -1186,7 +1153,7 @@     \global\lastsavedreferenceattribute\attributeunsetvalue     \iflocation       \ctxlua{structures.references.inject("\referenceprefix","#2",\number\ht\strutbox,\number\dp\strutbox,\extrareferencearguments)}% -     \setlocationattributes\??ia +     \setlocationattributes       \setstrut % can be option       \global\lastsavedreferenceattribute\lastreferenceattribute       \attribute\referenceattribute\lastreferenceattribute @@ -1205,7 +1172,7 @@     \attribute\referenceattribute\attributeunsetvalue     \iflocation       \ctxlua{structures.references.inject("\referenceprefix","#2",\number\dimexpr\interactionparameter\c!height\relax,\number\dimexpr\interactionparameter\c!depth\relax,\extrareferencearguments)}% -     \setlocationattributes\??ia +     \setlocationattributes       \attribute\referenceattribute\lastreferenceattribute       \global\lastsavedreferenceattribute\lastreferenceattribute       \dostarttagged\t!link\empty @@ -1226,7 +1193,7 @@       \ctxlua{structures.references.doifelse("\referenceprefix","#3",\extrareferencearguments)}%         {\expandtexincurrentreference          \ctxlua{structures.references.injectcurrentset(\number\ht\strutbox,\number\dp\strutbox)}% -        \setlocationattributes\??ia +        \setlocationattributes          \setstrut % can be option          \global\lastsavedreferenceattribute\lastreferenceattribute          \attribute\referenceattribute\lastreferenceattribute @@ -1249,7 +1216,7 @@       \ctxlua{structures.references.doifelse("\referenceprefix","#3",\extrareferencearguments)}%         {\expandtexincurrentreference          \ctxlua{structures.references.injectcurrentset(\number\dimexpr\interactionparameter\c!height\relax,\number\dimexpr\interactionparameter\c!depth\relax)}% -        \setlocationattributes\??ia +        \setlocationattributes          \global\lastsavedreferenceattribute\lastreferenceattribute          \attribute\referenceattribute\lastreferenceattribute          \dostarttagged\t!link\empty @@ -1268,7 +1235,7 @@     \attribute\referenceattribute\attributeunsetvalue     \iflocation       \ctxlua{structures.references.inject("\referenceprefix","#2",nil,nil,\extrareferencearguments)}% -     \setlocationattributes\??ia +     \setlocationattributes       \global\lastsavedreferenceattribute\lastreferenceattribute       \dostarttagged\t!link\empty       \hbox attr \referenceattribute \lastreferenceattribute {#1}% @@ -1285,7 +1252,7 @@     \attribute\referenceattribute\attributeunsetvalue     \iflocation       \ctxlua{structures.references.inject("\referenceprefix","#3",nil,nil,\extrareferencearguments)}% -     \setlocationcolorspec{#1}% no consequence for strut +     \setlocationcolorspec{#1}% #1=\resolver; no consequence for strut       \global\lastsavedreferenceattribute\lastreferenceattribute       \dostarttagged\t!link\empty       \hbox attr \referenceattribute \lastreferenceattribute {#2}% @@ -1320,7 +1287,7 @@       \ctxlua{structures.references.doifelse("\referenceprefix","#2",\extrareferencearguments)}%         {\expandtexincurrentreference          \ctxlua{structures.references.injectcurrentset(nil,nil)}% -        \setlocationattributes\??ia +        \setlocationattributes          \global\lastsavedreferenceattribute\lastreferenceattribute          \dostarttagged\t!link\empty          \hbox attr \referenceattribute \lastreferenceattribute {#1}% diff --git a/tex/context/base/strc-reg.mkiv b/tex/context/base/strc-reg.mkiv index 0e391a0d7..0467eac96 100644 --- a/tex/context/base/strc-reg.mkiv +++ b/tex/context/base/strc-reg.mkiv @@ -743,7 +743,7 @@     \iflocation       \def\currentregisterseeindex{#3}%       \doifelse{\registerparameter\c!interaction}\v!text -       {\directgoto{\setlocationcolor\??ia\doapplyregisterentrycommand{#1}{#4}}[internal(#2)]} +       {\directgoto{\setlocationcolor\doapplyregisterentrycommand{#1}{#4}}[internal(#2)]}         {\doapplyregisterentrycommand{#1}{#4}}%     \else       \let\currentregisterseeindex\empty diff --git a/tex/context/base/typo-krn.lua b/tex/context/base/typo-krn.lua index 7d8f65a38..3b1a8b413 100644 --- a/tex/context/base/typo-krn.lua +++ b/tex/context/base/typo-krn.lua @@ -45,6 +45,8 @@ local vlist_code         = nodecodes.vlist  local kerning_code       = kerncodes.kerning  local userkern_code      = kerncodes.userkern  local userskip_code      = skipcodes.userskip +local spaceskip_code     = skipcodes.spaceskip +local xspaceskip_code    = skipcodes.xspaceskip  local fonthashes         = fonts.hashes  local fontdata           = fonthashes.identifiers @@ -220,7 +222,8 @@ local function do_process(namespace,attribute,head,force) -- todo: glue so that                          end                      end                  elseif id == glue_code then -                    if start.subtype == userskip_code then +                    local subtype = start.subtype +                    if subtype == userskip_code or subtype == xspaceskip_code or subtype == spaceskip_code then                          local s = start.spec                          local w = s.width                          if w > 0 then diff --git a/tex/generic/context/luatex/luatex-fonts-merged.lua b/tex/generic/context/luatex/luatex-fonts-merged.lua index b5fc340a2..b33e232ea 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  : 09/06/11 14:02:36 +-- merge date  : 09/06/11 17:46:31  do -- begin closure to overcome local limits and interference | 
