From 78b6848bf85a62cd46390ddecb93a10b2d6a40d3 Mon Sep 17 00:00:00 2001 From: Context Git Mirror Bot Date: Thu, 30 Oct 2014 19:15:03 +0100 Subject: 2014-10-30 19:02:00 --- tex/context/base/colo-imp-rgb.mkiv | 4 +- tex/context/base/cont-new.mkiv | 2 +- tex/context/base/context-version.pdf | Bin 4378 -> 4382 bytes tex/context/base/context.mkiv | 2 +- tex/context/base/mult-de.mkii | 2 +- tex/context/base/mult-def.lua | 2 +- tex/context/base/mult-en.mkii | 2 +- tex/context/base/mult-fr.mkii | 2 +- tex/context/base/mult-it.mkii | 2 +- tex/context/base/mult-nl.mkii | 2 +- tex/context/base/mult-pe.mkii | 2 +- tex/context/base/mult-ro.mkii | 2 +- tex/context/base/publ-aut.lua | 8 +- tex/context/base/publ-dat.lua | 28 +- tex/context/base/publ-ini.lua | 438 ++++++++++++--------- tex/context/base/publ-ini.mkiv | 94 +++-- tex/context/base/publ-tra.lua | 39 +- tex/context/base/status-files.pdf | Bin 24707 -> 24708 bytes tex/context/base/status-lua.pdf | Bin 333766 -> 333912 bytes tex/context/interface/keys-cs.xml | 2 +- tex/context/interface/keys-de.xml | 2 +- tex/context/interface/keys-en.xml | 2 +- tex/context/interface/keys-fr.xml | 2 +- tex/context/interface/keys-it.xml | 2 +- tex/context/interface/keys-nl.xml | 2 +- tex/context/interface/keys-pe.xml | 2 +- tex/context/interface/keys-ro.xml | 2 +- tex/generic/context/luatex/luatex-fonts-merged.lua | 2 +- 28 files changed, 368 insertions(+), 281 deletions(-) (limited to 'tex') diff --git a/tex/context/base/colo-imp-rgb.mkiv b/tex/context/base/colo-imp-rgb.mkiv index 9bc6befba..dd14cc7d2 100644 --- a/tex/context/base/colo-imp-rgb.mkiv +++ b/tex/context/base/colo-imp-rgb.mkiv @@ -53,8 +53,8 @@ \definecolor [darkmagenta] [r=.4, g=0, b=.4] \definecolor [darkyellow] [r=.4, g=.4, b=0] -\definecolor [darkgray] [s=.60] -\definecolor [middlegray] [s=.725] +\definecolor [darkgray] [s=.40] +\definecolor [middlegray] [s=.625] \definecolor [lightgray] [s=.85] %D These colors are mapped to interface dependant colornames. diff --git a/tex/context/base/cont-new.mkiv b/tex/context/base/cont-new.mkiv index ec8c4c627..c762b8773 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{2014.10.29 17:47} +\newcontextversion{2014.10.30 19:00} %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 977943fe9..5de272046 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 798cac076..a508baabb 100644 --- a/tex/context/base/context.mkiv +++ b/tex/context/base/context.mkiv @@ -28,7 +28,7 @@ %D up and the dependencies are more consistent. \edef\contextformat {\jobname} -\edef\contextversion{2014.10.29 17:47} +\edef\contextversion{2014.10.30 19:00} \edef\contextkind {beta} %D For those who want to use this: diff --git a/tex/context/base/mult-de.mkii b/tex/context/base/mult-de.mkii index 083ea5f08..fce49f985 100644 --- a/tex/context/base/mult-de.mkii +++ b/tex/context/base/mult-de.mkii @@ -1445,7 +1445,6 @@ \setinterfacecommand{paperheight}{papierhoehe} \setinterfacecommand{paperwidth}{papierbreite} \setinterfacecommand{periods}{punkt} -\setinterfacecommand{plaatsruwelijst}{placerawlist} \setinterfacecommand{placebookmarks}{platzierebookmarks} \setinterfacecommand{placecombinedlist}{platzierezusammengestellteliste} \setinterfacecommand{placefloat}{placefloat} @@ -1460,6 +1459,7 @@ \setinterfacecommand{placeongrid}{amgitterausrichten} \setinterfacecommand{placeontopofeachother}{platziereuntereinander} \setinterfacecommand{placepagenumber}{placepagenumber} +\setinterfacecommand{placerawlist}{placerawlist} \setinterfacecommand{placereferencelist}{placereferencelist} \setinterfacecommand{placeregister}{platziereregister} \setinterfacecommand{placerule}{placerule} diff --git a/tex/context/base/mult-def.lua b/tex/context/base/mult-def.lua index 8f18fbf4b..d0e4cbb4d 100644 --- a/tex/context/base/mult-def.lua +++ b/tex/context/base/mult-def.lua @@ -2905,7 +2905,7 @@ return { ["pe"]="نقطه‌ها", ["ro"]="puncte", }, - ["plaatsruwelijst"]={ + ["placerawlist"]={ ["cs"]="placerawlist", ["de"]="placerawlist", ["en"]="placerawlist", diff --git a/tex/context/base/mult-en.mkii b/tex/context/base/mult-en.mkii index 1af7efef3..2c38f7a8d 100644 --- a/tex/context/base/mult-en.mkii +++ b/tex/context/base/mult-en.mkii @@ -1445,7 +1445,6 @@ \setinterfacecommand{paperheight}{paperheight} \setinterfacecommand{paperwidth}{paperwidth} \setinterfacecommand{periods}{periods} -\setinterfacecommand{plaatsruwelijst}{placerawlist} \setinterfacecommand{placebookmarks}{placebookmarks} \setinterfacecommand{placecombinedlist}{placecombinedlist} \setinterfacecommand{placefloat}{placefloat} @@ -1460,6 +1459,7 @@ \setinterfacecommand{placeongrid}{placeongrid} \setinterfacecommand{placeontopofeachother}{placeontopofeachother} \setinterfacecommand{placepagenumber}{placepagenumber} +\setinterfacecommand{placerawlist}{placerawlist} \setinterfacecommand{placereferencelist}{placereferencelist} \setinterfacecommand{placeregister}{placeregister} \setinterfacecommand{placerule}{placerule} diff --git a/tex/context/base/mult-fr.mkii b/tex/context/base/mult-fr.mkii index 5e35fe65a..6b653d88d 100644 --- a/tex/context/base/mult-fr.mkii +++ b/tex/context/base/mult-fr.mkii @@ -1445,7 +1445,6 @@ \setinterfacecommand{paperheight}{hauteurpapier} \setinterfacecommand{paperwidth}{largeurpapier} \setinterfacecommand{periods}{periodes} -\setinterfacecommand{plaatsruwelijst}{placerawlist} \setinterfacecommand{placebookmarks}{placemarquespages} \setinterfacecommand{placecombinedlist}{placelisteinmbriquee} \setinterfacecommand{placefloat}{placeflottant} @@ -1460,6 +1459,7 @@ \setinterfacecommand{placeongrid}{placesurgrille} \setinterfacecommand{placeontopofeachother}{placelesunsaudessusdesautres} \setinterfacecommand{placepagenumber}{placenumeropage} +\setinterfacecommand{placerawlist}{placerawlist} \setinterfacecommand{placereferencelist}{placelistereference} \setinterfacecommand{placeregister}{placeregistre} \setinterfacecommand{placerule}{placeregle} diff --git a/tex/context/base/mult-it.mkii b/tex/context/base/mult-it.mkii index b154fb167..fc7f29664 100644 --- a/tex/context/base/mult-it.mkii +++ b/tex/context/base/mult-it.mkii @@ -1445,7 +1445,6 @@ \setinterfacecommand{paperheight}{altezzacarta} \setinterfacecommand{paperwidth}{ampiezzacarta} \setinterfacecommand{periods}{punti} -\setinterfacecommand{plaatsruwelijst}{placerawlist} \setinterfacecommand{placebookmarks}{mettisegnalibro} \setinterfacecommand{placecombinedlist}{mettielencocombinato} \setinterfacecommand{placefloat}{placefloat} @@ -1460,6 +1459,7 @@ \setinterfacecommand{placeongrid}{mettiingriglia} \setinterfacecommand{placeontopofeachother}{mettiunosullaltro} \setinterfacecommand{placepagenumber}{mettinumeropagina} +\setinterfacecommand{placerawlist}{placerawlist} \setinterfacecommand{placereferencelist}{placereferencelist} \setinterfacecommand{placeregister}{mettiregistro} \setinterfacecommand{placerule}{mettilinea} diff --git a/tex/context/base/mult-nl.mkii b/tex/context/base/mult-nl.mkii index bf441b849..ab2a01641 100644 --- a/tex/context/base/mult-nl.mkii +++ b/tex/context/base/mult-nl.mkii @@ -1445,7 +1445,6 @@ \setinterfacecommand{paperheight}{papierhoogte} \setinterfacecommand{paperwidth}{papierbreedte} \setinterfacecommand{periods}{punten} -\setinterfacecommand{plaatsruwelijst}{plaatsruwelijst} \setinterfacecommand{placebookmarks}{plaatsbookmarks} \setinterfacecommand{placecombinedlist}{plaatssamengesteldelijst} \setinterfacecommand{placefloat}{plaatsplaatsblok} @@ -1460,6 +1459,7 @@ \setinterfacecommand{placeongrid}{plaatsopgrid} \setinterfacecommand{placeontopofeachother}{plaatsonderelkaar} \setinterfacecommand{placepagenumber}{plaatspaginanummer} +\setinterfacecommand{placerawlist}{plaatsruwelijst} \setinterfacecommand{placereferencelist}{plaatsreferentielijst} \setinterfacecommand{placeregister}{plaatsregister} \setinterfacecommand{placerule}{plaatslijn} diff --git a/tex/context/base/mult-pe.mkii b/tex/context/base/mult-pe.mkii index b10e03cb0..792cbb479 100644 --- a/tex/context/base/mult-pe.mkii +++ b/tex/context/base/mult-pe.mkii @@ -1445,7 +1445,6 @@ \setinterfacecommand{paperheight}{ارتفاع‌برگ} \setinterfacecommand{paperwidth}{عرض‌برگ} \setinterfacecommand{periods}{نقطه‌ها} -\setinterfacecommand{plaatsruwelijst}{درج‌لیست‌خام} \setinterfacecommand{placebookmarks}{درج‌چوب‌خط} \setinterfacecommand{placecombinedlist}{درج‌لیست‌مختلط} \setinterfacecommand{placefloat}{درج‌شناور} @@ -1460,6 +1459,7 @@ \setinterfacecommand{placeongrid}{درج‌در‌توری} \setinterfacecommand{placeontopofeachother}{درج‌در‌بالای‌یکدیگر} \setinterfacecommand{placepagenumber}{درج‌شماره‌صفحه} +\setinterfacecommand{placerawlist}{درج‌لیست‌خام} \setinterfacecommand{placereferencelist}{درج‌لیست‌مرجع} \setinterfacecommand{placeregister}{درج‌ثبت} \setinterfacecommand{placerule}{درج‌خط} diff --git a/tex/context/base/mult-ro.mkii b/tex/context/base/mult-ro.mkii index 42cd8d32c..a6c54efc6 100644 --- a/tex/context/base/mult-ro.mkii +++ b/tex/context/base/mult-ro.mkii @@ -1445,7 +1445,6 @@ \setinterfacecommand{paperheight}{inaltimehartie} \setinterfacecommand{paperwidth}{latimehartie} \setinterfacecommand{periods}{puncte} -\setinterfacecommand{plaatsruwelijst}{placerawlist} \setinterfacecommand{placebookmarks}{plaseazasemnecarte} \setinterfacecommand{placecombinedlist}{punelistacombinata} \setinterfacecommand{placefloat}{placefloat} @@ -1460,6 +1459,7 @@ \setinterfacecommand{placeongrid}{plaseazapegrid} \setinterfacecommand{placeontopofeachother}{punedeasuprafiecareia} \setinterfacecommand{placepagenumber}{punenumarpagina} +\setinterfacecommand{placerawlist}{placerawlist} \setinterfacecommand{placereferencelist}{placereferencelist} \setinterfacecommand{placeregister}{puneregistru} \setinterfacecommand{placerule}{punerigla} diff --git a/tex/context/base/publ-aut.lua b/tex/context/base/publ-aut.lua index d108ae42f..9b9b84e4c 100644 --- a/tex/context/base/publ-aut.lua +++ b/tex/context/base/publ-aut.lua @@ -34,6 +34,8 @@ publications.writers = writers local authors = publications.authors or { } publications.authors = authors +local report = logs.reporter("publications","authors") + -- local function makesplitter(separator) -- return Ct { "start", -- start = (Cs((V("outer") + (1-separator))^1) + separator^1)^1, @@ -441,7 +443,11 @@ local default = { "author", "editor" } function authors.getauthor(dataset,tag,categories) local current = datasets[dataset] - local entry = current.luadata[tag] + local luadata = current.luadata + if not luadata then + report("invalid dataset %a",dataset) + end + local entry = luadata[tag] if entry then local category = entry.category local detail = current.details[tag] diff --git a/tex/context/base/publ-dat.lua b/tex/context/base/publ-dat.lua index 0d1e10e66..90346111a 100644 --- a/tex/context/base/publ-dat.lua +++ b/tex/context/base/publ-dat.lua @@ -57,6 +57,9 @@ publications.datasets = datasets local writers = publications.writers or { } publications.writers = writers +local tables = publications.tables or { } +publications.tables = tables + publications.statistics = publications.statistics or { } local publicationsstats = publications.statistics @@ -65,6 +68,23 @@ publicationsstats.nofdefinitions = 0 publicationsstats.nofshortcuts = 0 publicationsstats.nofdatasets = 0 +local privates = { + category = true, + tag = true, + index = true, +} + +local specials = { + key = true, + crossref = true, + keywords = true, + language = true, + comment = true, +} + +tables.privates = privates +tables.specials = specials + if not publications.usedentries then function publications.usedentries() return { } @@ -826,7 +846,7 @@ local savers = { } local s_preamble = [[ % this is an export from context mkiv -@preamble { +@preamble{ \ifdefined\btxcmd % we're probably in context \else @@ -849,7 +869,11 @@ function savers.bib(dataset,filename,usedonly) if not usedonly or usedonly[tag] then r = r + 1 ; result[r] = f_start(data.category or "article",tag) for key, value in sortedhash(data) do - r = r + 1 ; result[r] = f_field(key,value) + if privates[key] then + -- skip + else + r = r + 1 ; result[r] = f_field(key,value) + end end r = r + 1 ; result[r] = s_stop n = n + 1 diff --git a/tex/context/base/publ-ini.lua b/tex/context/base/publ-ini.lua index af83e100b..910348698 100644 --- a/tex/context/base/publ-ini.lua +++ b/tex/context/base/publ-ini.lua @@ -109,7 +109,7 @@ local ctx_btxchecklistentry = context.btxchecklistentry local ctx_btxchecklistcombi = context.btxchecklistcombi local ctx_btxsetcitereference = context.btxsetcitereference local ctx_btxsetlistreference = context.btxsetlistreference -local ctx_btxmissing = context.btxmissing +----- ctx_btxmissing = context.btxmissing local ctx_btxsetdataset = context.btxsetdataset local ctx_btxsettag = context.btxsettag @@ -124,6 +124,8 @@ local ctx_btxsetthird = context.btxsetthird local ctx_btxsetinternal = context.btxsetinternal local ctx_btxsetlefttext = context.btxsetlefttext local ctx_btxsetrighttext = context.btxsetrighttext +local ctx_btxsetbefore = context.btxsetbefore +local ctx_btxsetafter = context.btxsetafter local ctx_btxsetbacklink = context.btxsetbacklink local ctx_btxsetbacktrace = context.btxsetbacktrace local ctx_btxsetcount = context.btxsetcount @@ -315,7 +317,7 @@ setmetatableindex(usedentries,function(t,k) usedentries = allocate { } citetolist = allocate { } listtocite = allocate { } -local names = { } + local names = { } local internals = structures.references.internals local p_collect = (C(R("09")^1) * Carg(1) / function(s,entry) listtocite[tonumber(s)] = entry end + P(1))^0 for i=1,#internals do @@ -352,26 +354,26 @@ local names = { } listtocite[int] = entry end end -local detail = datasets[set].details[tag] -if detail then - local author = detail.author - if author then - for i=1,#author do - local a = author[i] - local s = a.surnames - if s then - local c = concat(s,"+") - local n = names[c] - if n then - n[#n+1] = a - break - else - names[c] = { a } - end - end - end - end -end + local detail = datasets[set].details[tag] + if detail then + local author = detail.author + if author then + for i=1,#author do + local a = author[i] + local s = a.surnames + if s then + local c = concat(s,"+") + local n = names[c] + if n then + n[#n+1] = a + break + else + names[c] = { a } + end + end + end + end + end end end elseif kind == "userdata" then @@ -389,18 +391,13 @@ end -- weird end end - -- to be sure --- setmetatableindex(usedentries,"table") --- setmetatableindex(citetolist,"table") --- setmetatableindex(listtocite,"table") - -- -for k, v in next, names do - if #v > 1 then - for i=1,#v do - v[i].state = 1 + for k, v in next, names do + if #v > 1 then + for i=1,#v do + v[i].state = 1 + end + end end - end -end return usedentries[k] end end) @@ -1491,13 +1488,13 @@ function lists.flushentries(dataset,textmode) end local userdata = li[4] if userdata then - local l = userdata.btxltx - local r = userdata.btxrtx - if l then - ctx_btxsetlefttext (l) + local b = userdata.btxbtx + local a = userdata.btxatx + if b then + ctx_btxsetbefore(b) end - if r then - ctx_btxsetrighttext(r) + if a then + ctx_btxsetafter(a) end end rendering.userdata = userdata @@ -1510,54 +1507,6 @@ function lists.flushentries(dataset,textmode) setspecification(false) end --- function lists.flushentry(specification) --- local tag = specification.reference --- if not tag or tag == "" then --- return --- end --- -- --- local dataset = specification.dataset or "" -- standard --- -- local mark = specification.markentry ~= false --- -- local internal = specification.internal or "" --- -- --- local prefix, rest = lpegmatch(prefixsplitter,tag) --- if rest then --- dataset = prefix --- else --- rest = tag --- end --- -- --- -- if trace_cite then --- -- report_cite("mark, dataset: %s, tags: %s",dataset or "-",rest) --- -- end --- -- --- local reference = publications.parenttag(dataset,rest) --- local found, todo, list = findallused(dataset,reference,internal) --- local valid = { } --- if list and #list > 0 then --- local luadata = datasets[dataset].luadata --- for i=1,#list do --- local tag = list[i] --- if luadata[tag] then --- valid[#valid+1] = { tag, 0, 0 } -- datasets[dataset].details.number --- end --- end --- end --- if #valid > 0 then --- local rendering = renderings[dataset] --- rendering.list = valid --- lists.flushentries(dataset,true) --- else --- ctx_btxmissing(tag) --- end --- local mark = true --- tobemarked = mark and todo --- if found and tobemarked then --- flushmarked(dataset,list) --- commands.flushmarked() -- here (could also be done in caller) --- end --- end - local function getuserdata(dataset,key) local rendering = renderings[dataset] if rendering then @@ -1609,57 +1558,63 @@ local citevariants = { } publications.citevariants = citevariants function commands.btxhandlecite(specification) - local tag = specification.reference - if not tag or tag == "" then + local dataset = specification.dataset or "" -- standard + local reference = specification.reference + local variant = specification.variant or "num" + if not reference or reference == "" then return end -- - local dataset = specification.dataset or "" -- standard - local mark = specification.markentry ~= false - local variant = specification.variant or "num" - local sorttype = specification.sorttype - local compress = specification.compress == v_yes - local internal = specification.internal + specification.variant = variant + specification.compress = specification.compress == v_yes + specification.markentry = specification.markentry ~= false -- - local prefix, rest = lpegmatch(prefixsplitter,tag) - if rest then - dataset = prefix - else - rest = tag + local prefix, rest = lpegmatch(prefixsplitter,reference) + if prefix and rest then + specification.dataset = prefix + specification.reference = rest end - local action = citevariants[variant] -- there is always fallback on default + -- + -- if trace_cite then - report_cite("inject, dataset: %s, tag: %s, variant: %s, compressed",dataset or "-",rest,variant) + report_cite("inject, dataset: %s, tag: %s, variant: %s, compressed", + specification.dataset or "-", + specification.reference, + specification.variant + ) end + -- ctx_setvalue("currentbtxdataset",dataset) - action(dataset,rest,mark,compress,variant,internal) -- maybe pass a table + -- + citevariants[variant](specification) -- we always fall back on default end function commands.btxhandlenocite(specification) - local tag = specification.reference - if not tag or tag == "" then + local dataset = specification.dataset or "" -- standard + local reference = specification.reference + if not reference or reference == "" then return end -- - local dataset = specification.dataset or "" -- standard - local mark = specification.markentry ~= false - local internal = specification.internal or "" + local markentry = specification.markentry ~= false + local internal = specification.internal or "" -- local prefix, rest = lpegmatch(prefixsplitter,tag) if rest then - dataset = prefix - else - rest = tag + dataset = prefix + reference = rest end -- if trace_cite then - report_cite("mark, dataset: %s, tags: %s",dataset or "-",rest) + report_cite("mark, dataset: %s, tags: %s",dataset or "-",reference) end -- - local reference = publications.parenttag(dataset,rest) + local reference = publications.parenttag(dataset,reference) + -- local found, todo, list = findallused(dataset,reference,internal) - tobemarked = mark and todo + -- + tobemarked = markentry and todo if found and tobemarked then flushmarked(dataset,list) commands.flushmarked() -- here (could also be done in caller) @@ -1677,17 +1632,6 @@ end local keysorter = function(a,b) return a.sortkey < b.sortkey end -local function compresslist(source) - for i=1,#source do - if type(source[i].sortkey) ~= "number" then - return source - end - end - local first, last, firstr, lastr - local target, noftarget, tags = { }, 0, { } - sort(source,keysorter) - -- suffixes - local oldvalue = nil -- local suffix = 0 -- local function setsuffix(entry,suffix,sortfld) -- entry.suffix = suffix @@ -1722,7 +1666,17 @@ local function compresslist(source) -- break -- end -- end - -- + +local function compresslist(source) + for i=1,#source do + if type(source[i].sortkey) ~= "number" then + return source + end + end + local first, last, firstr, lastr + local target, noftarget, tags = { }, 0, { } + sort(source,keysorter) + local oldvalue = nil local function flushrange() noftarget = noftarget + 1 if last > first + 1 then @@ -1772,52 +1726,87 @@ local f_missing = formatters["<%s>"] -- maybe also sparse (e.g. pages) --- a bit redundant sccess to datasets +-- a bit redundant access to datasets -local function processcite(dataset,reference,mark,compress,setup,internal,getter,setter,compressor) - reference = publications.parenttag(dataset,reference) +local function processcite(presets,specification) + -- + if specification then + setmetatableindex(specification,presets) + else + specification = presets + end + -- + local dataset = specification.dataset + local reference = specification.reference + local internal = specification.internal + local setup = specification.variant + local compress = specification.compress + local getter = specification.getter + local setter = specification.setter + local compressor = specification.compressor + -- + local reference = publications.parenttag(dataset,reference) + -- local found, todo, list = findallused(dataset,reference,internal) - tobemarked = mark and todo + tobemarked = specification.markentry and todo + -- if found and setup then - local source = { } - local badkey = false + local source = { } + local badkey = false + local luadata = datasets[dataset].luadata for i=1,#found do local entry = found[i] local tag = entry.userdata.btxref - --- we can probably move the test into the flush - -local category = datasets[dataset].luadata[tag].category -if currentspecificationfields[category][setup] then - - local internal = entry.references.internal - local data = getter(dataset,tag,entry,internal) - if compress and not compressor then - local sortkey = data.sortkey - if sortkey then - local key = lpegmatch(numberonly,sortkey) - if key then - data.sortkey = key + -- we can probably move the test into the flush + local category = luadata[tag].category + if currentspecificationfields[category][setup] then + local internal = entry.references.internal + local data = setter(dataset,tag,entry,internal) + if compress and not compressor then + local sortkey = data.sortkey + if sortkey then + local key = lpegmatch(numberonly,sortkey) + if key then + data.sortkey = key + else + badkey = true + end else badkey = true end + end + if type(data) == "table" then + source[#source+1] = data else - badkey = true + report("error in cite rendering %a",setup or "?") end + else + report("cite rendering %a is not available for %a",setup,category) end - source[#source+1] = data + end -else - report("cite rendering %a is not available for %a",setup,category) -end + local lefttext = specification.lefttext + local righttext = specification.righttext + local before = specification.before + local after = specification.after - end + if lefttext and lefttext ~= "" then lefttext = settings_to_array(lefttext) end + if righttext and righttext ~= "" then righttext = settings_to_array(righttext) end + if before and before ~= "" then before = settings_to_array(before) end + if after and after ~= "" then after = settings_to_array(after) end local function flush(i,n,entry,last) local tag = entry.tag local currentcitation = markcite(dataset,tag) + -- ctx_btxstartcite() ctx_btxsettag(tag) + -- + if lefttext then ctx_btxsetlefttext (lefttext [i] or #lefttext == 1 and lefttext [1] or "") end + if righttext then ctx_btxsetrighttext(righttext[i] or #righttext == 1 and righttext[1] or "") end + if before then ctx_btxsetbefore (before [i] or #before == 1 and before [1] or "") end + if after then ctx_btxsetafter (after [i] or #after == 1 and after [1] or "") end + -- ctx_btxsetbacklink(currentcitation) local bl = listtocite[currentcitation] if bl then @@ -1831,7 +1820,7 @@ end if language then ctx_btxsetlanguage(language) end - if not setter(entry,last) then + if not getter(entry,last) then ctx_btxsetfirst(f_missing(tag)) end ctx_btxsetconcat(concatstate(i,n)) @@ -1916,8 +1905,12 @@ setmetatableindex(citevariants,function(t,k) return v end) -function citevariants.default(dataset,reference,mark,compress,variant,internal) - processcite(dataset,reference,mark,compress,variant,internal,setters[variant],getters[variant]) +function citevariants.default(presets) + local variant = presets.variant + processcite(presets,{ + setter = setters[variant], + getter = getters[variant], + }) end -- entry @@ -1935,8 +1928,13 @@ do ctx_btxsetfirst(first.tag) end - function citevariants.entry(dataset,reference,mark,compress,variant,internal) - processcite(dataset,reference,mark,false,"entry",internal,setter,getter) + function citevariants.entry(presets) + processcite(presets,{ + compress = false, + variant = "entry", + setter = setter, + getter = getter, + }) end end @@ -1967,8 +1965,13 @@ do end end - function citevariants.short(dataset,reference,mark,compress,variant,internal) - processcite(dataset,reference,mark,false,"short",internal,setter,getter) + function citevariants.short(presets) + processcite(presets,{ + compress = false, + variant = "short", + setter = setter, + getter = getter, + }) end end @@ -1999,8 +2002,12 @@ do end end - function citevariants.page(dataset,reference,mark,compress,variant,internal) - processcite(dataset,reference,mark,compress,"page",internal,setter,getter) + function citevariants.page(presets) + processcite(presets,{ + variant = "page", + setter = setter, + getter = getter, + }) end end @@ -2024,9 +2031,12 @@ do return simplegetter(first,last,"num") end - function citevariants.num(dataset,reference,mark,compress,variant,internal) - processcite(dataset,reference,mark,compress,"num",internal,setter,getter) - -- processcite(dataset,reference,mark,false,"num",internal,setter,getter) + function citevariants.num(presets) + processcite(presets,{ + variant = "num", + setter = setter, + getter = getter, + }) end end @@ -2050,8 +2060,12 @@ do return simplegetter(first,last,"year") end - function citevariants.year(dataset,reference,mark,compress,variant,internal) - processcite(dataset,reference,mark,compress,"year",internal,setter,getter) + function citevariants.year(presets) + processcite(presets,{ + variant = "year", + setter = setter, + getter = getter, + }) end end @@ -2075,12 +2089,20 @@ do return simplegetter(first,last,"index") end - function citevariants.index(dataset,reference,mark,compress,variant,internal) - processcite(dataset,reference,mark,compress,"index",internal,setter,getter) + function citevariants.index(presets) + processcite(presets,{ + variant = "index", + setter = setter, + getter = getter, + }) end - function citevariants.serial(dataset,reference,mark,compress,variant,internal) - processcite(dataset,reference,mark,compress,"serial",internal,setter,getter) + function citevariants.serial(presets) + processcite(presets,{ + variant = "serial", + setter = setter, + getter = getter, + }) end end @@ -2102,12 +2124,20 @@ do return simplegetter(first,last,"category") end - function citevariants.category(dataset,reference,mark,compress,variant,internal) - processcite(dataset,reference,mark,compress,"category",internal,setter,getter) + function citevariants.category(presets) + processcite(presets,{ + variant = "serial", + setter = setter, + getter = getter, + }) end - function citevariants.type(dataset,reference,mark,compress,variant,internal) - processcite(dataset,reference,mark,compress,"type",internal,setter,getter) + function citevariants.type(presets) + processcite(presets,{ + variant = "type", + setter = setter, + getter = getter, + }) end end @@ -2129,12 +2159,20 @@ do return true end - function citevariants.key(dataset,reference,mark,compress,variant,internal) - return processcite(dataset,reference,mark,compress,"key",internal,setter,getter) + function citevariants.key(presets) + return processcite(presets,{ + variant = "key", + setter = setter, + getter = getter, + }) end - function citevariants.tag(dataset,reference,mark,compress,variant,internal) - return processcite(dataset,reference,mark,compress,"tag",internal,setter,getter) + function citevariants.tag(presets) + return processcite(presets,{ + variant = "tag", + setter = setter, + getter = getter, + }) end end @@ -2292,8 +2330,13 @@ do return true end - function citevariants.author(dataset,reference,mark,compress,variant,internal) - processcite(dataset,reference,mark,false,"author",internal,setter,getter) + function citevariants.author(presets) + processcite(presets,{ + compress = false, + variant = "author", + setter = setter, + getter = getter, + }) end -- authornum @@ -2315,12 +2358,13 @@ do return true end - local function compressor(found) - return authorcompressor(found) -- can be just an alias - end - - function citevariants.authornum(dataset,reference,mark,compress,variant,internal) - processcite(dataset,reference,mark,compress,"authornum",internal,setter,getter,compressor) + function citevariants.authornum(presets) + processcite(presets,{ + variant = "authornum", + setter = setter, + getter = getter, + compressor = authorcompressor, + }) end -- authoryear | authoryears @@ -2342,12 +2386,13 @@ do return true end - local function compressor(found) - return authorcompressor(found) - end - - function citevariants.authoryear(dataset,reference,mark,compress,variant,internal) - processcite(dataset,reference,mark,compress,"authoryear",internal,setter,getter,compressor) + function citevariants.authoryear(presets) + processcite(presets,{ + variant = "authoryear", + setter = setter, + getter = getter, + compressor = authorcompressor, + }) end local function getter(first,last) @@ -2355,8 +2400,13 @@ do return true end - function citevariants.authoryears(dataset,reference,mark,compress,variant,internal) - processcite(dataset,reference,mark,compress,"authoryears",internal,setter,getter,compressor) + function citevariants.authoryears(presets) + processcite(presets,{ + variant = "authoryears", + setter = setter, + getter = getter, + compressor = authorcompressor, + }) end end diff --git a/tex/context/base/publ-ini.mkiv b/tex/context/base/publ-ini.mkiv index b17eb347b..f2210bac4 100644 --- a/tex/context/base/publ-ini.mkiv +++ b/tex/context/base/publ-ini.mkiv @@ -63,6 +63,8 @@ \def\s!btxbck {btxbck} \def\s!btxltx {btxltx} \def\s!btxrtx {btxrtx} +\def\s!btxatx {btxatx} +\def\s!btxbtx {btxbtx} \definelabelclass[btxlabel][2] @@ -456,6 +458,8 @@ \let\currentbtxinternal \empty \unexpanded\def\btxsetinternal {\def\currentbtxinternal} \let\currentbtxlefttext \empty \unexpanded\def\btxsetlefttext {\def\currentbtxlefttext} \let\currentbtxrighttext \empty \unexpanded\def\btxsetrighttext {\def\currentbtxrighttext} +\let\currentbtxbefore \empty \unexpanded\def\btxsetbefore {\def\currentbtxbefore} +\let\currentbtxafter \empty \unexpanded\def\btxsetafter {\def\currentbtxafter} \let\currentbtxlanguage \empty \unexpanded\def\btxsetlanguage {\def\currentbtxlanguage} \let\currentbtxtag \empty \unexpanded\def\btxsettag {\def\currentbtxtag} \let\currentbtxnumber \empty \unexpanded\def\btxsetnumber {\def\currentbtxnumber} @@ -500,6 +504,8 @@ \let\currentbtxinternal \empty \let\currentbtxlefttext \empty \let\currentbtxrighttext\empty + \let\currentbtxbefore \empty + \let\currentbtxafter \empty \let\currentbtxbacklink \empty \let\currentbtxbacktrace\empty \let\currentbtxlanguage \empty @@ -511,6 +517,10 @@ {\let \currentbtxfirst \empty \let \currentbtxsecond \empty \let \currentbtxinternal \empty + \let \currentbtxlefttext \empty + \let \currentbtxrighttext \empty + \let \currentbtxbefore \empty + \let \currentbtxafter \empty \let \currentbtxbacklink \empty \let \currentbtxbacktrace \empty % not used here \let \currentbtxlanguage \empty @@ -538,10 +548,10 @@ \def\btx_start_rendering[#1]% {\edef\currentbtxrendering{#1}% - \btxrenderingparameter\v!before} + \btxrenderingparameter\c!before} \unexpanded\def\stopbtxrendering - {\btxrenderingparameter\v!after + {\btxrenderingparameter\c!after \endgroup} \unexpanded\def\btxtodo#1% @@ -590,8 +600,9 @@ \endgroup} \def\btx_entry_inject_yes - {\ifx\currentbtxlefttext\empty\else - \fastsetup{\s!btx:\currentbtxalternative:lefttext}% + {\edef\p_textstate{\btxrenderingparameter\c!textstate}% + \ifx\p_textstate\v!start + \currentbtxbefore \fi \fastsetup\currentbtxsetup \removeunwantedspaces @@ -599,8 +610,8 @@ \btxrenderingparameter\c!separator \processcommacommand[\currentbtxcombis]\btx_entry_inject_combi \fi - \ifx\currentbtxrighttext\empty\else - \fastsetup{\s!btx:\currentbtxalternative:righttext}% + \ifx\p_textstate\v!start + \currentbtxafter \fi} \def\btx_entry_inject_nop @@ -774,6 +785,8 @@ \strc_references_direct_full_user {\s!btxset="\currentbtxdataset",% \s!btxref="\currentbtxtag",% + \ifx\currentbtxbefore\empty\else\s!btxbtx={\currentbtxbefore},\fi% + \ifx\currentbtxafter \empty\else\s!btxatx={\currentbtxafter },\fi% \ifx\currentbtxbacklink\currentbtxbacktrace\s!btxint="\currentbtxbacklink"\else\s!btxbck="\currentbtxbacktrace"\fi}% {\s!btx::\v!list::\number\c_btx_list_reference}% {\currentbtxnumber}} @@ -797,8 +810,8 @@ [\s!btx]% [\s!btxset=\currentbtxdataset,% \s!btxref=\currentbtxtag,% - \ifx\p_publ_cite_lefttext \empty\else\s!btxltx={\p_publ_cite_lefttext },\fi% - \ifx\p_publ_cite_righttext\empty\else\s!btxrtx={\p_publ_cite_righttext},\fi% + \ifx\currentbtxbefore\empty\else\s!btxbtx={\currentbtxbefore},\fi% + \ifx\currentbtxafter \empty\else\s!btxatx={\currentbtxafter },\fi% \s!btxint=\number\currentbtxbacklink \ifx\currentbtxciteuservariables\empty\else,\currentbtxciteuservariables\fi]}} @@ -979,20 +992,20 @@ % these need to be sort of protected: -%let\p_publ_cite_before \empty -%let\p_publ_cite_after \empty +\let\p_publ_cite_before \empty +\let\p_publ_cite_after \empty \let\p_publ_cite_lefttext \empty \let\p_publ_cite_righttext\empty \let\currentbtxciteuservariables\empty -% \unexpanded\def\btxcite -% {\dontleavehmode -% \begingroup -% \strictdoifnextoptionalelse\publ_cite_tags_options\publ_cite_tags_indeed} -% -% \unexpanded\def\publ_cite_tags_options[#1]% -% {\strictdoifnextoptionalelse{\publ_cite_tags_options_indeed{#1}}{\publ_cite_tags_indeed{#1}}} +\unexpanded\def\btxhybridcite % so one can alias the old + {\dontleavehmode + \begingroup + \strictdoifnextoptionalelse\publ_cite_tags_options\publ_cite_tags_indeed} + +\unexpanded\def\publ_cite_tags_options[#1]% + {\strictdoifnextoptionalelse{\publ_cite_tags_options_indeed{#1}}{\publ_cite_tags_indeed{#1}}} \unexpanded\def\publ_cite_tags_indeed#1% {\letinteractionparameter\c!style\empty @@ -1011,8 +1024,8 @@ \letdummyparameter\c!reference \empty \letdummyparameter\c!extras \empty \letdummyparameter\c!alternative\empty - %letdummyparameter\c!before \empty - %letdummyparameter\c!after \empty + \letdummyparameter\c!before \empty + \letdummyparameter\c!after \empty \letdummyparameter\c!lefttext \empty \letdummyparameter\c!righttext \empty \getdummyparameters[#1]% @@ -1030,27 +1043,23 @@ \let\currentbtxcitevariant\p_alternative \fi \setupcurrentbtxcitevariant[#1]% - \edef\p_extras{\dummyparameter\c!extras}% + % + \edef\p_publ_cite_before {\dummyparameter\c!before}% + \edef\p_publ_cite_after {\dummyparameter\c!after}% + \edef\p_publ_cite_lefttext {\dummyparameter\c!lefttext}% + \edef\p_publ_cite_righttext{\dummyparameter\c!righttext}% + % + \edef\p_extras {\dummyparameter\c!extras}% \ifx\p_extras\empty \else - \edef\p_right{\btxcitevariantparameter\c!right}% - \ifx\p_right\empty \else - \setexpandedbtxcitevariantparameter\p_right{\p_extras\p_right}% + \ifx\p_publ_cite_righttext\empty + \let\p_publ_cite_righttex\p_extras + \else + % ignored: righttext wins over extras \fi \fi - %edef\p_publ_cite_before {\dummyparameter\c!before}% - %edef\p_publ_cite_after {\dummyparameter\c!after}% - \edef\p_publ_cite_lefttext {\dummyparameter\c!lefttext}% - \edef\p_publ_cite_righttext{\dummyparameter\c!righttext}% + % \the\everysetupbtxciteplacement - %ifx\p_publ_cite_before\empty \else - % \p_publ_cite_before - % \space - %fi \publ_cite_variant - %ifx\p_publ_cite_after\empty \else - % \optionalspace - % \p_publ_cite_after - %fi \endgroup} \def\publ_cite_tags_variants_indeed#1[#2]% @@ -1086,6 +1095,10 @@ sorttype = "\btxcitevariantparameter\c!sorttype",% compress = "\btxcitevariantparameter\c!compress",% author = "\btxcitevariantparameter\c!author",% + lefttext = \!!bs\p_publ_cite_lefttext\!!es,% + righttext = \!!bs\p_publ_cite_righttext\!!es,% + before = \!!bs\p_publ_cite_before\!!es,% + after = \!!bs\p_publ_cite_after\!!es,% }}% \btxcitevariantparameter\v!right \ctxcommand{flushmarked()}% @@ -1130,7 +1143,9 @@ %D Cite helpers: \unexpanded\def\btxcitesetup#1% - {\fastsetup{\s!btx:\s!cite:#1}} % no \btxcitereset as we loose dataset and such + {\currentbtxlefttext + \fastsetup{\s!btx:\s!cite:#1}% + \currentbtxrighttext} % no \btxcitereset as we loose dataset and such \unexpanded\def\btxstartsubcite#1% #1 can go {\begingroup @@ -1265,7 +1280,7 @@ field = "\btxregisterparameter\c!field", register = "\btxregisterparameter\c!register", method = "\btxregisterparameter\c!method", - % alternative = "\btxregisterparameter\c!alternative", + alternative = "\btxregisterparameter\c!alternative", }}% \fi} @@ -1322,6 +1337,8 @@ \c!refcommand=authoryears, % todo \c!numbering=\v!yes, % \c!autohang=\v!no, % not used + %\c!saveinlist=\v!no, % maybe for before/after + \c!textstate=\v!start, \c!width=\v!auto, \c!separator={; }, \c!distance=1.5\emwidth] @@ -1538,4 +1555,7 @@ \setupbtx [\c!alternative=apa] +\setupbtxcitevariant + [\c!alternative=authoryear] + \protect diff --git a/tex/context/base/publ-tra.lua b/tex/context/base/publ-tra.lua index 85660fdd8..82f101a6c 100644 --- a/tex/context/base/publ-tra.lua +++ b/tex/context/base/publ-tra.lua @@ -20,22 +20,10 @@ local context = context local ctx_NC, ctx_NR, ctx_HL, ctx_FL, ctx_ML, ctx_LL = context.NC, context.NR, context.HL, context.FL, context.ML, context.LL local ctx_bold, ctx_monobold, ctx_rotate, ctx_llap = context.bold, context.formatted.monobold, context.rotate, context.llap -local ctx_darkgreen, ctx_darkred, ctx_darkblue = context.darkgreen, context.darkred, context.darkblue local ctx_starttabulate, ctx_stoptabulate = context.starttabulate, context.stoptabulate -local privates = { - category = true, - tag = true, - index = true, -} - -local specials = { - key = true, - crossref = true, - keywords = true, - language = true, - comment = true, -} +local privates = publications.tables.privates +local specials = publications.tables.specials function tracers.showdatasetfields(settings) local dataset = settings.dataset @@ -57,22 +45,21 @@ function tracers.showdatasetfields(settings) local fields = fieldspecs[category] or { } ctx_NC() context(k) ctx_NC() context(category) - ctx_NC() + ctx_NC() -- grouping around colors needed for k, v in sortedhash(v) do if privates[k] then -- skip elseif specials[k] then - ctx_darkblue(k) + context("{\\darkblue %s} ",k) else local f = fields[k] if f == "required" then - ctx_darkgreen(k) - elseif not f then - ctx_darkred(k) + context("{\\darkgreen %s} ",k) + elseif f == "optional" then + context("{\\darkyellow %s} ",k) else - context(k) + context("%s ",k) end - context(" ") end end ctx_NC() ctx_NR() @@ -111,14 +98,14 @@ function tracers.showdatasetcompleteness(settings) ctx_NC() if indirect then if value then - ctx_darkblue(lpegmatch(texescape,value)) + context("\\darkblue %s",lpegmatch(texescape,value)) else - ctx_darkred("\\tttf [missing crossref]") + context("\\darkred\\tttf [missing crossref]") end elseif value then context(lpegmatch(texescape,value)) else - ctx_darkred("\\tttf [missing value]") + context("\\darkred\\tttf [missing value]") end ctx_NC() ctx_NR() foundfields[key] = nil @@ -130,7 +117,7 @@ function tracers.showdatasetcompleteness(settings) ctx_NC() context(key) ctx_NC() if indirect then - ctx_darkblue(lpegmatch(texescape,value)) + context("\\darkblue %s",lpegmatch(texescape,value)) elseif value then context(lpegmatch(texescape,value)) end @@ -290,7 +277,7 @@ function tracers.showfields(settings) ctx_NC() local kind = fieldspecs[s_categories[j]][field] if kind == "required" then - ctx_darkgreen("*") + context("\\darkgreen*") elseif kind == "optional" then context("*") end diff --git a/tex/context/base/status-files.pdf b/tex/context/base/status-files.pdf index 2cb0e81eb..884260cf2 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 60d6a7a2e..e8bac42cc 100644 Binary files a/tex/context/base/status-lua.pdf and b/tex/context/base/status-lua.pdf differ diff --git a/tex/context/interface/keys-cs.xml b/tex/context/interface/keys-cs.xml index c3039f79a..fca580ed0 100644 --- a/tex/context/interface/keys-cs.xml +++ b/tex/context/interface/keys-cs.xml @@ -1457,7 +1457,6 @@ - @@ -1472,6 +1471,7 @@ + diff --git a/tex/context/interface/keys-de.xml b/tex/context/interface/keys-de.xml index f70ced334..87f6c6ee4 100644 --- a/tex/context/interface/keys-de.xml +++ b/tex/context/interface/keys-de.xml @@ -1457,7 +1457,6 @@ - @@ -1472,6 +1471,7 @@ + diff --git a/tex/context/interface/keys-en.xml b/tex/context/interface/keys-en.xml index 970aa803b..36a42c4d4 100644 --- a/tex/context/interface/keys-en.xml +++ b/tex/context/interface/keys-en.xml @@ -1457,7 +1457,6 @@ - @@ -1472,6 +1471,7 @@ + diff --git a/tex/context/interface/keys-fr.xml b/tex/context/interface/keys-fr.xml index 1b75b2bc1..637291f18 100644 --- a/tex/context/interface/keys-fr.xml +++ b/tex/context/interface/keys-fr.xml @@ -1457,7 +1457,6 @@ - @@ -1472,6 +1471,7 @@ + diff --git a/tex/context/interface/keys-it.xml b/tex/context/interface/keys-it.xml index 3f40bf3b9..8bd6256f7 100644 --- a/tex/context/interface/keys-it.xml +++ b/tex/context/interface/keys-it.xml @@ -1457,7 +1457,6 @@ - @@ -1472,6 +1471,7 @@ + diff --git a/tex/context/interface/keys-nl.xml b/tex/context/interface/keys-nl.xml index a074db2de..6d392763b 100644 --- a/tex/context/interface/keys-nl.xml +++ b/tex/context/interface/keys-nl.xml @@ -1457,7 +1457,6 @@ - @@ -1472,6 +1471,7 @@ + diff --git a/tex/context/interface/keys-pe.xml b/tex/context/interface/keys-pe.xml index 4e64fa490..d9609d3d7 100644 --- a/tex/context/interface/keys-pe.xml +++ b/tex/context/interface/keys-pe.xml @@ -1457,7 +1457,6 @@ - @@ -1472,6 +1471,7 @@ + diff --git a/tex/context/interface/keys-ro.xml b/tex/context/interface/keys-ro.xml index 8a0a1439c..1de8bc867 100644 --- a/tex/context/interface/keys-ro.xml +++ b/tex/context/interface/keys-ro.xml @@ -1457,7 +1457,6 @@ - @@ -1472,6 +1471,7 @@ + diff --git a/tex/generic/context/luatex/luatex-fonts-merged.lua b/tex/generic/context/luatex/luatex-fonts-merged.lua index 301a4c73e..fbb2a8b6e 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 : 10/29/14 17:47:31 +-- merge date : 10/30/14 19:00:01 do -- begin closure to overcome local limits and interference -- cgit v1.2.3