From 1622025163b8509d883ee2eeaae1246a9da4d000 Mon Sep 17 00:00:00 2001 From: Context Git Mirror Bot Date: Wed, 8 Apr 2015 20:15:05 +0200 Subject: 2015-04-08 19:51:00 --- tex/context/base/back-exp.lua | 11 +++-- tex/context/base/back-exp.mkiv | 4 +- tex/context/base/cont-new.mkiv | 2 +- tex/context/base/context-version.pdf | Bin 4190 -> 4194 bytes tex/context/base/context.mkiv | 2 +- tex/context/base/mult-def.mkiv | 6 +++ tex/context/base/status-files.pdf | Bin 24529 -> 24545 bytes tex/context/base/status-lua.pdf | Bin 416994 -> 416995 bytes tex/context/base/strc-itm.mkvi | 50 +++++++++++++++------ tex/context/base/strc-lst.lua | 32 ++++++++++++- tex/context/base/strc-tag.lua | 2 + tex/context/base/strc-tag.mkiv | 2 + tex/context/base/syst-aux.mkiv | 15 +++++++ tex/generic/context/luatex/luatex-fonts-merged.lua | 2 +- 14 files changed, 104 insertions(+), 24 deletions(-) diff --git a/tex/context/base/back-exp.lua b/tex/context/base/back-exp.lua index c37a725ac..974ae1e43 100644 --- a/tex/context/base/back-exp.lua +++ b/tex/context/base/back-exp.lua @@ -614,9 +614,9 @@ do } end - function structurestags.setitem(head) + function structurestags.setitem(kind) itemgroups[locatedtag("item")] = { - head = head, + kind = kind, } end @@ -632,7 +632,10 @@ do function extras.item(di,element,n,fulltag) local hash = itemgroups[fulltag] if hash then - setattribute(di,"head",hash.head and "yes" or nil) + local kind = hash.kind + if kind and kind ~= "" then + setattribute(di,"kind",kind) + end end end @@ -3464,7 +3467,7 @@ implement { implement { name = "settagitem", actions = structurestags.setitem, - arguments = "boolean" + arguments = "string" } implement { diff --git a/tex/context/base/back-exp.mkiv b/tex/context/base/back-exp.mkiv index 64ec1a674..b29f45f82 100644 --- a/tex/context/base/back-exp.mkiv +++ b/tex/context/base/back-exp.mkiv @@ -152,9 +152,9 @@ \numexpr\currentitemlevel\relax {\currentitemgroupsymbol}% \fi}% - \unexpanded\def\dotagsetitem + \unexpanded\def\dotagsetitem#1% {\iftrialtypesetting\else - \clf_settagitem\ifconditional\c_strc_itemgroups_head true\else false\fi\relax + \clf_settagitem{#1}% \fi}% \to \everyenableelements diff --git a/tex/context/base/cont-new.mkiv b/tex/context/base/cont-new.mkiv index 4a7dcb59a..b4f3ab2ab 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{2015.04.08 14:19} +\newcontextversion{2015.04.08 19:49} %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 7b5df2493..54fcaed76 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 51212fd07..b0057c819 100644 --- a/tex/context/base/context.mkiv +++ b/tex/context/base/context.mkiv @@ -39,7 +39,7 @@ %D up and the dependencies are more consistent. \edef\contextformat {\jobname} -\edef\contextversion{2015.04.08 14:19} +\edef\contextversion{2015.04.08 19:49} \edef\contextkind {beta} %D For those who want to use this: diff --git a/tex/context/base/mult-def.mkiv b/tex/context/base/mult-def.mkiv index 6efeb3069..c755597c0 100644 --- a/tex/context/base/mult-def.mkiv +++ b/tex/context/base/mult-def.mkiv @@ -34,6 +34,12 @@ % start todo in mult-def.lua: +\def\s!head {head} +\def\s!symbol {symbol} +\def\s!sub {sub} +\def\s!margin {margin} +\def\s!edge {edge} + \def\v!alphabetic {alphabetic} \def\v!Alphabetic {Alphabetic} diff --git a/tex/context/base/status-files.pdf b/tex/context/base/status-files.pdf index aa810be4e..108f8877d 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 55f533996..84a544541 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-itm.mkvi b/tex/context/base/strc-itm.mkvi index b69d5bac0..80703022e 100644 --- a/tex/context/base/strc-itm.mkvi +++ b/tex/context/base/strc-itm.mkvi @@ -486,8 +486,8 @@ \csname\??itemgroupfirst#option\endcsname \fi} -\ifdefined\dotagsetitemgroup \else \let\dotagsetitemgroup\relax \fi -\ifdefined\dotagsetitem \else \let\dotagsetitem \relax \fi +\ifdefined\dotagsetitemgroup \else \let\dotagsetitemgroup\relax \fi +\ifdefined\dotagsetitem \else \let\dotagsetitem \gobbleoneargument \fi \def\strc_itemgroups_tag_start_group {\dostarttaggedchained\t!itemgroup\currentparentitemgroup\??itemgroup @@ -1046,7 +1046,7 @@ \setfalse\c_strc_itemgroups_concat \fi \dostarttagged\t!item\empty - \dotagsetitem + % \dotagsetitem\empty \dostarttagged\t!itemtag\empty \strc_itemgroups_insert_item \dostoptagged @@ -1087,18 +1087,24 @@ \fi \fi \strc_itemgroups_start_item[#reference]% - \groupedcommand\strc_itemgroups_start_head_indeed\strc_itemgroups_stop_head_indeed} + \pickupgroupedcommand + \strc_itemgroups_start_head_indeed + \strc_itemgroups_stop_head_indeed + \strc_itemgroups_head_body_indeed} \unexpanded\def\stopitemgrouphead - {\stopitemgroupitem} + {\dostoptagged + \stopitemgroupitem} \unexpanded\def\strc_itemgroups_start_head_indeed {\settrue\c_strc_itemgroups_head - \dotagsetitem % weird place + \dotagsetitem\s!head% % weird place + \dostarttagged\t!itemhead\empty \useitemgroupstyleandcolor\c!headstyle\c!headcolor\ignorespaces} \unexpanded\def\strc_itemgroups_stop_head_indeed {\removeunwantedspaces + \dostoptagged \ifconditional\c_strc_itemgroups_text \space \ignorespaces @@ -1107,7 +1113,10 @@ \fi \strc_itemgroups_insert_breakno \ifconditional\c_strc_itemgroups_pack\else\strc_itemgroups_after_head_command\fi - \strc_itemgroups_insert_breakno + \strc_itemgroups_insert_breakno} + +\unexpanded\def\strc_itemgroups_head_body_indeed + {\dostarttagged\t!itembody\empty \noindentation} % Simple commands. @@ -1125,30 +1134,37 @@ \unexpanded\def\strc_itemgroups_start_symbol#text% {\def\strc_itemgroups_extra_symbol{#text}% \settrue\c_strc_itemgroups_symbol - \startitemgroupitem} + \startitemgroupitem + \dotagsetitem\s!symbol} \unexpanded\def\strc_itemgroups_start_dummy {\strc_itemgroups_start_symbol\strut\strut} % two ? \unexpanded\def\strc_itemgroups_start_subitem {\settrue\c_strc_itemgroups_sub - \startitemgroupitem} + \startitemgroupitem + \dotagsetitem\s!sub} \unexpanded\def\strc_itemgroups_start_edge#text% {\strc_itemgroups_start_symbol {\strc_itemgroups_calculate_list_width\c_strc_itemgroups_nesting + \dostarttagged\t!ignore\empty % for the moment, maybe an attribute \hbox to \d_strc_itemgroups_list_width - {#text\hskip\itemgroupparameter\c!distance}}} + {#text\hskip\itemgroupparameter\c!distance}% + \dostoptagged}} \unexpanded\def\strc_itemgroups_start_margin#text% {\def\strc_itemgroups_margin_symbol % brrr - {\llap + {\dostarttagged\t!ignore\empty % for the moment, maybe an attribute + \llap {\begingroup \useitemgroupstyleandcolor\c!marstyle\c!marcolor #text% keep em/ex local \endgroup - \hskip\dimexpr\leftskip+\leftmargindistance\relax}}% - \startitemgroupitem} + \hskip\dimexpr\leftskip+\leftmargindistance\relax}% + \dostoptagged}% + \startitemgroupitem + \dotagsetitem\s!margin} \unexpanded\def\strc_itemgroups_start_text#text% {\def\strc_itemgroups_extra_symbol{#text}% @@ -1222,7 +1238,9 @@ {\dontcomplain \hbox to \d_strc_itemgroups_list_width {\ifconditional\c_strc_itemgroups_sub + \dostarttagged\t!ignore\empty \llap{+\enspace}% + \dostoptagged \fi \strc_itemgroups_left_sym_filler \box\b_strc_itemgroups % can already have a forced widt, only factor handled here @@ -1232,7 +1250,9 @@ \def\strc_itemgroups_handle_lapped_item_negative {\llap {\ifconditional\c_strc_itemgroups_sub + \dostarttagged\t!ignore\empty \llap{+\enspace}% + \dostoptagged \fi \box\b_strc_itemgroups \hskip\leftmargindistance}} @@ -1240,7 +1260,9 @@ \def\strc_itemgroups_handle_groups_text_item {\hbox {\ifconditional\c_strc_itemgroups_sub + \dostarttagged\t!ignore\empty +\enspace + \dostoptagged \fi \box\b_strc_itemgroups \hskip\interwordspace}% @@ -1249,7 +1271,9 @@ \def\strc_itemgroups_handle_groups_inline_item {\hbox to \d_strc_itemgroups_list_width {\ifconditional\c_strc_itemgroups_sub + \dostarttagged\t!ignore\empty \llap{+\enspace}% + \dostoptagged \fi \box\b_strc_itemgroups \hss}} % was: \hfill diff --git a/tex/context/base/strc-lst.lua b/tex/context/base/strc-lst.lua index 634d3a49a..8ea0a75b9 100644 --- a/tex/context/base/strc-lst.lua +++ b/tex/context/base/strc-lst.lua @@ -60,6 +60,11 @@ lists.pushed = pushed lists.kinds = kinds lists.names = names +local sorters = sorters +local sortstripper = sorters.strip +local sortsplitter = sorters.splitters.utf +local sortcomparer = sorters.comparers.basic + local sectionblocks = allocate() lists.sectionblocks = sectionblocks @@ -75,6 +80,7 @@ local variables = interfaces.variables local v_all = variables.all local v_reference = variables.reference +local v_title = variables.title local v_number = variables.reference local v_command = variables.command local v_text = variables.text @@ -343,7 +349,7 @@ end local splitter = lpeg.splitat(":") -- maybe also :: or have a block parameter -local sorters = { +local listsorters = { [v_command] = function(a,b) if a.metadata.kind == "command" or b.metadata.kind == "command" then return a.references.internal < b.references.internal @@ -354,6 +360,28 @@ local sorters = { [v_all] = function(a,b) return a.references.internal < b.references.internal end, + [v_title] = function(a,b) + local da = a.titledata + local db = b.titledata + if da and db then + local ta = da.title + local tb = db.title + if ta and tb then + local sa = da.split + if not sa then + sa = sortsplitter(sortstripper(ta)) + da.split = sa + end + local sb = db.split + if not sb then + sb = sortsplitter(sortstripper(tb)) + db.split = sb + end + return sortcomparer(da,db) == -1 + end + end + return a.references.internal < b.references.internal + end } -- was: names, criterium, number, collected, forced, nested, sortorder @@ -412,7 +440,7 @@ local function filtercollected(specification) end -- if sortorder then -- experiment - local sorter = sorters[sortorder] + local sorter = listsorters[sortorder] if sorter then if trace_lists then report_lists("sorting list using method %a",sortorder) diff --git a/tex/context/base/strc-tag.lua b/tex/context/base/strc-tag.lua index 8c77965ae..0b14c1d9f 100644 --- a/tex/context/base/strc-tag.lua +++ b/tex/context/base/strc-tag.lua @@ -78,6 +78,8 @@ local properties = allocate { item = { pdf = "LI", nature = "display" }, itemtag = { pdf = "Lbl", nature = "mixed" }, itemcontent = { pdf = "LBody", nature = "mixed" }, + itemhead = { pdf = "Div", nature = "display" }, + itembody = { pdf = "Div", nature = "display" }, description = { pdf = "Div", nature = "display" }, descriptiontag = { pdf = "Div", nature = "mixed" }, diff --git a/tex/context/base/strc-tag.mkiv b/tex/context/base/strc-tag.mkiv index a401492b9..f2b59c29c 100644 --- a/tex/context/base/strc-tag.mkiv +++ b/tex/context/base/strc-tag.mkiv @@ -40,6 +40,8 @@ \def\t!item {item} % Li \def\t!itemtag {itemtag} % Lbl \def\t!itemcontent {itemcontent} % LBody +\def\t!itemhead {itemhead} % Div +\def\t!itembody {itembody} % Div \def\t!description {description} % Li \def\t!descriptiontag {descriptiontag} % Lbl diff --git a/tex/context/base/syst-aux.mkiv b/tex/context/base/syst-aux.mkiv index c39f0cc0d..308ed5a3b 100644 --- a/tex/context/base/syst-aux.mkiv +++ b/tex/context/base/syst-aux.mkiv @@ -4514,6 +4514,18 @@ {\m_syst_helpers_handle_group_after \egroup}% +\unexpanded\def\syst_helpers_handle_group_pickup#1#2#3% no inner group (so no kerning interference) + {\bgroup + \def\m_syst_helpers_handle_group_before{#1}% + \def\m_syst_helpers_handle_group_after {#2\egroup#3}% + \afterassignment\m_syst_helpers_handle_group_pickup_before + \let\next=} + +\def\m_syst_helpers_handle_group_pickup_before + {\bgroup + \aftergroup\m_syst_helpers_handle_group_after + \m_syst_helpers_handle_group_before} + \unexpanded\def\syst_helpers_handle_group_nop {\ifnum\currentgrouptype=\semisimplegroupcode \expandafter\syst_helpers_handle_group_nop_a @@ -4551,6 +4563,9 @@ \unexpanded\def\simplegroupedcommand#1#2% {\doifelsenextbgroup{\syst_helpers_handle_group_simple{#1}{#2}}{\syst_helpers_handle_group_nop{#1}{#2}}} +\unexpanded\def\pickupgroupedcommand#1#2#3% + {\doifelsenextbgroup{\syst_helpers_handle_group_pickup{#1}{#2}{#3}}{\syst_helpers_handle_group_nop{#1}{#2}}} + %D Users should be aware of the fact that grouping can %D interfere with ones paragraph settings that are executed %D after the paragraph is closed. One should therefore diff --git a/tex/generic/context/luatex/luatex-fonts-merged.lua b/tex/generic/context/luatex/luatex-fonts-merged.lua index 2d65bb5e2..e4a24cab7 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 : 04/08/15 14:19:47 +-- merge date : 04/08/15 19:49:24 do -- begin closure to overcome local limits and interference -- cgit v1.2.3