From d60cd418153b3ea6909c8b4691a160f54c41a670 Mon Sep 17 00:00:00 2001 From: Context Git Mirror Bot Date: Sat, 18 Apr 2015 15:15:04 +0200 Subject: 2015-04-18 14:44:00 --- tex/context/base/char-ini.lua | 9 + tex/context/base/cont-new.mkiv | 2 +- tex/context/base/context-version.pdf | Bin 4181 -> 4187 bytes tex/context/base/context.mkiv | 2 +- tex/context/base/font-chk.lua | 64 ++++--- tex/context/base/font-ext.lua | 15 +- tex/context/base/luat-ini.mkiv | 2 +- tex/context/base/math-noa.lua | 70 ++++++- tex/context/base/mtx-context-arrange.tex | 23 ++- tex/context/base/page-mix.lua | 19 +- tex/context/base/page-one.mkiv | 9 +- tex/context/base/publ-imp-apa.mkvi | 28 ++- tex/context/base/publ-imp-aps.mkvi | 23 ++- tex/context/base/publ-imp-cite.mkvi | 150 ++++++++++----- tex/context/base/publ-imp-default.mkvi | 203 +++++++++++---------- tex/context/base/publ-imp-list.mkvi | 49 ++--- tex/context/base/publ-ini.lua | 5 +- tex/context/base/publ-ini.mkiv | 65 ++++--- tex/context/base/status-files.pdf | Bin 24470 -> 24437 bytes tex/context/base/status-lua.pdf | Bin 250291 -> 250375 bytes tex/context/base/strc-lst.mkvi | 7 +- tex/generic/context/luatex/luatex-fonts-merged.lua | 2 +- 22 files changed, 472 insertions(+), 275 deletions(-) (limited to 'tex') diff --git a/tex/context/base/char-ini.lua b/tex/context/base/char-ini.lua index 56b038cee..a1dd911f2 100644 --- a/tex/context/base/char-ini.lua +++ b/tex/context/base/char-ini.lua @@ -1236,6 +1236,7 @@ if not characters.superscripts then local superscripts = allocate() characters.superscripts = superscripts local subscripts = allocate() characters.subscripts = subscripts + local fractions = allocate() characters.fractions = fractions -- skipping U+02120 (service mark) U+02122 (trademark) @@ -1255,16 +1256,24 @@ if not characters.superscripts then elseif trace_defining then report_defining("ignoring %s %a, char %c, description %a","subscript",ustring(k),k,v.description) end + elseif what == "fraction" then + if #specials > 1 then + fractions[k] = { unpack(specials,2) } + elseif trace_defining then + report_defining("ignoring %s %a, char %c, description %a","fraction",ustring(k),k,v.description) + end end end end -- print(table.serialize(superscripts, "superscripts", { hexify = true })) -- print(table.serialize(subscripts, "subscripts", { hexify = true })) + -- print(table.serialize(fractions, "fractions", { hexify = true })) if storage then storage.register("characters/superscripts", superscripts, "characters.superscripts") storage.register("characters/subscripts", subscripts, "characters.subscripts") + storage.register("characters/fractions", fractions, "characters.fractions") end end diff --git a/tex/context/base/cont-new.mkiv b/tex/context/base/cont-new.mkiv index 93f95a7df..2b7028e33 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.17 02:03} +\newcontextversion{2015.04.18 14:41} %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 fb33b3fd5..9aee6f9bf 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 5f3187eee..034b403c4 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.17 02:03} +\edef\contextversion{2015.04.18 14:41} \edef\contextkind {beta} %D For those who want to use this: diff --git a/tex/context/base/font-chk.lua b/tex/context/base/font-chk.lua index a3ac8f20e..41205ce5e 100644 --- a/tex/context/base/font-chk.lua +++ b/tex/context/base/font-chk.lua @@ -226,6 +226,28 @@ function commands.getplaceholderchar(name) context(helpers.getprivatenode(fontdata[id],name)) end +local function placeholder(font,char) + local tfmdata = fontdata[font] + local properties = tfmdata.properties + local privates = properties.privates + local category = chardata[char].category + local fakechar = mapping[category] + local p = privates and privates[fakechar] + if not p then + addmissingsymbols(tfmdata) + p = properties.privates[fakechar] + end + if properties.lateprivates then + -- frozen already + return "node", getprivatenode(tfmdata,fakechar) + else + -- good, we have \definefontfeature[default][default][missing=yes] + return "char", p + end +end + +checkers.placeholder = placeholder + function checkers.missing(head) local lastfont, characters, found = nil, nil, nil head = tonut(head) @@ -259,27 +281,15 @@ function checkers.missing(head) end elseif action == "replace" then for i=1,#found do - local n = found[i] - local font = getfont(n) - local char = getchar(n) - local tfmdata = fontdata[font] - local properties = tfmdata.properties - local privates = properties.privates - local category = chardata[char].category - local fakechar = mapping[category] - local p = privates and privates[fakechar] - if not p then - addmissingsymbols(tfmdata) - p = properties.privates[fakechar] - end - if properties.lateprivates then -- .frozen - -- bad, we don't have them at the tex end - local fake = getprivatenode(tfmdata,fakechar) - insert_node_after(head,n,fake) - head = remove_node(head,n,true) + local node = found[i] + local kind, char = placeholder(getfont(node),getchar(node)) + if kind == "node" then + insert_node_after(head,node,tonut(char)) + head = remove_node(head,node,true) + elseif kind == "char" then + setfield(node,"char",char) else - -- good, we have \definefontfeature[default][default][missing=yes] - setfield(n,"char",p) + -- error end end else @@ -288,13 +298,17 @@ function checkers.missing(head) return tonode(head), false end -local relevant = { "missing (will be deleted)", "missing (will be flagged)", "missing" } +local relevant = { + "missing (will be deleted)", + "missing (will be flagged)", + "missing" +} -function checkers.getmissing(id) +local function getmissing(id) if id then - local list = checkers.getmissing(font.current()) + local list = getmissing(font.current()) if list then - local _, list = next(checkers.getmissing(font.current())) + local _, list = next(getmissing(font.current())) return list else return { } @@ -324,6 +338,8 @@ function checkers.getmissing(id) end end +checkers.getmissing = getmissing + local tracked = false trackers.register("fonts.missing", function(v) diff --git a/tex/context/base/font-ext.lua b/tex/context/base/font-ext.lua index 2ef79f8c2..b7817c140 100644 --- a/tex/context/base/font-ext.lua +++ b/tex/context/base/font-ext.lua @@ -904,8 +904,11 @@ registerotffeature { -- a handy helper (might change or be moved to another namespace) -local new_special = nodes.pool.special -local new_glyph = nodes.pool.glyph +local nodepool = nodes.pool + +local new_special = nodepool.special +local new_glyph = nodepool.glyph +local new_rule = nodepool.rule local hpack_node = node.hpack local helpers = fonts.helpers @@ -941,13 +944,13 @@ local function getprivatenode(tfmdata,name) if privates then local p = privates[name] if p then - local char = tfmdata.characters[p] + local char = tfmdata.characters[p] local commands = char.commands if commands then - local fake = hpack_node(new_special(commands[1][2])) - fake.width = char.width + local fake = hpack_node(new_special(commands[1][2])) + fake.width = char.width fake.height = char.height - fake.depth = char.depth + fake.depth = char.depth return fake else -- todo: set current attribibutes diff --git a/tex/context/base/luat-ini.mkiv b/tex/context/base/luat-ini.mkiv index 22f96cd7c..b455a4158 100644 --- a/tex/context/base/luat-ini.mkiv +++ b/tex/context/base/luat-ini.mkiv @@ -125,7 +125,7 @@ \def\setdocumentargument #1#2{\clf_setdocumentargument{#1}{#2}} \def\setdocumentargumentdefault#1#2{\clf_setdocumentdefaultargument{#1}{#2}} \def\getdocumentfilename #1{\clf_getdocumentfilename\numexpr#1\relax} -\def\getdocumentargument #1{\clf_getdocumentargument{#1}} +\def\getdocumentargument #1{\clf_getdocumentargument{#1}{}} \def\setdocumentargument #1#2{\clf_setdocumentargument{#1}{#2}} \def\getdocumentargumentdefault#1#2{\clf_getdocumentargument{#1}{#2}} diff --git a/tex/context/base/math-noa.lua b/tex/context/base/math-noa.lua index 0670b3529..893ee6f48 100644 --- a/tex/context/base/math-noa.lua +++ b/tex/context/base/math-noa.lua @@ -525,11 +525,14 @@ end -- normalize scripts local unscript = { } noads.processors.unscript = unscript +local checkers = { } noads.processors.checkers = checkers local superscripts = characters.superscripts local subscripts = characters.subscripts +local fractions = characters.fractions local replaced = { } +local unknowns = { } local function replace(pointer,what,n,parent) pointer = parent -- we're following the parent list (chars trigger this) @@ -608,22 +611,83 @@ local function replace(pointer,what,n,parent) -- we could return stop end +local tracked = false trackers.register("fonts.missing", function(v) tracked = v end) +local checked = { } -- simple case +local cached = table.setmetatableindex("table") -- complex case + +local function check(pointer,what,n,parent) + if tracked then + -- slower as we check each font too and we always replace as math has + -- more demands than text + local char = getchar(pointer) + local font = font_of_family(getfield(pointer,"fam")) + local fake = cached[font][char] + if fake then + unknowns[char] = unknowns[char] + 1 + setfield(pointer,"char",fake) + else + local chars = fontcharacters[font] + if not chars[char] then + unknowns[char] = 1 + local kind, fake = fonts.checkers.placeholder(font,char) + if kind == "char" then + cached[font][char] = fake + setfield(pointer,"char",fake) + else + cached[font][char] = 0x3F + end + end + end + else + -- only simple checking, report at the end so one should take + -- action anyway ... we can miss a few checks but that is ok + -- as there is at least one reported + local char = getchar(pointer) + local done = unknowns[char] + if done then + unknowns[char] = done + 1 + setfield(pointer,"char",0x3F) + elseif not checked[char] then + local font = font_of_family(getfield(pointer,"fam")) + local chars = fontcharacters[font] + if not chars[char] then + unknowns[char] = 1 + setfield(pointer,"char",0x3F) + if trace_normalizing then + report_normalizing("character %C is not available",char) + end + end + end + checked[char] = true + end +end + unscript[math_char] = replace -- not noads as we need to recurse +checkers[math_char] = check -- not noads as we need to recurse function handlers.unscript(head,style,penalties) processnoads(head,unscript,"unscript") + processnoads(head,checkers,"checkers") return true end -statistics.register("math script replacements", function() - if next(replaced) then +local function collected(list) + if list and next(list) then local n, t = 0, { } - for k, v in table.sortedpairs(replaced) do + for k, v in table.sortedpairs(list) do n = n + v t[#t+1] = formatters["%C"](k) end return formatters["% t (n=%s)"](t,n) end +end + +statistics.register("math script replacements", function() + return collected(replaced) +end) + +statistics.register("unknown math characters", function() + return collected(unknowns) end) -- math alternates: (in xits lgf: $ABC$ $\cal ABC$ $\mathalternate{cal}\cal ABC$) diff --git a/tex/context/base/mtx-context-arrange.tex b/tex/context/base/mtx-context-arrange.tex index 39373f0e2..fb53406d8 100644 --- a/tex/context/base/mtx-context-arrange.tex +++ b/tex/context/base/mtx-context-arrange.tex @@ -31,6 +31,7 @@ % % end help + \input mtx-context-common.tex \doifdocumentargument {paperoffset} { @@ -46,6 +47,7 @@ \setdocumentargument{sided}{singlesided} } + \setuppapersize [\getdocumentargument{paperformat_paper}] [\getdocumentargument{paperformat_print}] @@ -95,16 +97,17 @@ \starttext \startluacode - local format = string.format - local fprint = function(...) tex.sprint(tex.ctxcatcodes,format(...)) end - - if #document.files > 0 then - if document.arguments.sort then - table.sort(document.files) + local arguments = document.arguments + local files = document.files + local noffiles = #files + if noffiles > 0 then + if arguments.sort then + table.sort(files) end - local emptypages = document.arguments.addempty or "" - local textwidth = document.arguments.textwidth or "0cm" - for _, filename in ipairs(document.files) do + local emptypages = arguments.addempty or "" + local textwidth = arguments.textwidth or "0cm" + for i=1,noffiles do + local filename = files[i] if not string.find(filename,"^mtx%-context%-") then context.insertpages ( { filename }, @@ -114,7 +117,7 @@ end end else - fprint("no files given") + context("no files given") end \stopluacode diff --git a/tex/context/base/page-mix.lua b/tex/context/base/page-mix.lua index 474d010bf..2bf89f737 100644 --- a/tex/context/base/page-mix.lua +++ b/tex/context/base/page-mix.lua @@ -245,16 +245,16 @@ local function preparesplit(specification) -- a rather large function return end slidenodes(head) -- we can have set prev's to nil to prevent backtracking - local discarded = { } - local originalhead = head - local originalwidth = specification.originalwidth or getfield(list,"width") + local discarded = { } + local originalhead = head + local originalwidth = specification.originalwidth or getfield(list,"width") local originalheight = specification.originalheight or getfield(list,"height") - local current = head - local skipped = 0 - local height = 0 - local depth = 0 - local skip = 0 - local splitmethod = specification.splitmethod or false + local current = head + local skipped = 0 + local height = 0 + local depth = 0 + local skip = 0 + local splitmethod = specification.splitmethod or false if splitmethod == v_none then splitmethod = false end @@ -434,6 +434,7 @@ local function preparesplit(specification) -- a rather large function local function checked(advance,where,locked) local total = skip + height + depth + advance local delta = total - target +-- - 65536*3 local state = "same" local okay = false local skipped = 0 diff --git a/tex/context/base/page-one.mkiv b/tex/context/base/page-one.mkiv index 196f6e5a2..4cf59da2d 100644 --- a/tex/context/base/page-one.mkiv +++ b/tex/context/base/page-one.mkiv @@ -454,10 +454,13 @@ \fi\fi \fi} + \def\page_one_place_float_here_indeed - {%\ifgridsnapping \else - \baselinecorrection - %\fi + {\ifgridsnapping + % otherwise real bad outcome + \else + \baselinecorrection % this has to be done better (and definitely not in column mode) + \fi \doplacefloatbox \page_floats_report_total \dohandlenextfloatindent} diff --git a/tex/context/base/publ-imp-apa.mkvi b/tex/context/base/publ-imp-apa.mkvi index a6b9ffa70..a1814b0a4 100644 --- a/tex/context/base/publ-imp-apa.mkvi +++ b/tex/context/base/publ-imp-apa.mkvi @@ -65,6 +65,8 @@ \c!separator:names:3={,\nobreakspace\textampersand\space}, % comma separated list \c!separator:names:4={\nobreakspace\textampersand\space}] % last of two, no comma! +% First, we define a namespace for a few special fields + \definebtx [apa:list:author] [apa:list] @@ -93,6 +95,8 @@ [apa:list:short] [apa:list] +% Next, we define a namespace for each category + %D In order to be able to get journals expanded (or normalized or abbreviated) you need %D to load a list: %D @@ -100,7 +104,6 @@ %D \btxloadjournallist[journals.txt] % the jabref list %D \stoptyping -% TODO \definebtx [apa:list:journal] @@ -197,6 +200,14 @@ [apa:list:title:electronic] [apa:list:title] +\definebtx + [apa:list:title:music] + [apa:list:title] + +\definebtx + [apa:list:title:film] + [apa:list:title] + \definebtx [apa:list:title:other] [apa:list:title] @@ -282,10 +293,8 @@ \c!right={]\poppunctuation}] \definebtx - [apa:cite:author:year] % todo - [apa:cite:authoryear] - [\c!left=(, - \c!right=)] + [apa:cite:author:year] % todo + [apa:cite] \definebtx [apa:cite:author:years] % todo @@ -410,6 +419,8 @@ \c!separator:3=\btxparameter{\c!separator:2}, \c!separator:4=\btxparameter{\c!separator:2}] +% Now we setup for the details of the renderings + %D Sometimes we have verbose injections in an entry and these can be language %D dependent, so we use labels. %D @@ -601,6 +612,8 @@ % cite setups +% The following differs from the default returning n.d. if year is empty + \startsetups btx:apa:cite:author:year \texdefinition{\s!btx:\s!cite:concat} \btxparameter\c!left @@ -630,6 +643,8 @@ \fastsetup{btx:apa:cite:author:year} \stopsetups +% The following differs from the default by including the labels p. and pp. + \startsetups btx:apa:page:list \fastsetup{\s!btx:\s!page:concat} \ifx\currentbtxlastpage\empty @@ -666,7 +681,7 @@ % It can be removed using the command: % \resetsetups [apa:list:sameauthor] -% Or texdefinition? +% :rule, :empty or :ditto ... \startsetups apa:list:sameauthor \fastsetup{apa:list:sameauthor:rule} @@ -678,6 +693,7 @@ \c!height=1.5\linewidth]% \linewidth is just too thin with respect to font strokes... \stopsetups + \startsetups [apa:list:sameauthor:\v!empty] \kern\dimexpr\listparameter\c!margin-\interwordspace\relax \stopsetups diff --git a/tex/context/base/publ-imp-aps.mkvi b/tex/context/base/publ-imp-aps.mkvi index 2b3da954e..3bc2a1d21 100644 --- a/tex/context/base/publ-imp-aps.mkvi +++ b/tex/context/base/publ-imp-aps.mkvi @@ -78,16 +78,31 @@ [aps:list:invertedshort] [aps:list] +% This is for numbering=num + \definebtx - [aps:list:short] + [aps:list:num] [aps:list] + [left={[}, + right={]}] % This is for numbering=yes + \definebtx [aps:list:yes] - [aps:list] - [left={[}, - right={]}] + [aps:list:num] + +% This is for numbering=short + +\definebtx + [aps:list:short] + [aps:list:num] + +% This is for numbering=bib + +\definebtx + [aps:list:bib] + [aps:list:num] %D In order to be able to get journals expanded (or normalized or abbreviated) you need %D to load a list: diff --git a/tex/context/base/publ-imp-cite.mkvi b/tex/context/base/publ-imp-cite.mkvi index d763c2d4f..dfc16c795 100644 --- a/tex/context/base/publ-imp-cite.mkvi +++ b/tex/context/base/publ-imp-cite.mkvi @@ -140,8 +140,9 @@ \currentbtxrighttext \stopsetups -\startsetups btx:cite:range +\startsetups btx:cite:author \texdefinition{\s!btx:\s!cite:concat} + \btxparameter\c!left \currentbtxlefttext \ifx\currentbtxfirst\empty \fastsetup{\s!btx:\s!cite:\s!empty} @@ -149,54 +150,57 @@ \texdefinition {\s!btx:\s!cite:inject} { \btxcitereference \currentbtxfirst - \ifx\currentbtxsecond\empty \else - \btxparameter\c!range - \currentbtxsecond - \fi - \ifx\currentbtxthird\empty \else - \currentbtxthird - \fi + } + \fi + \ifx\currentbtxsecond\empty \else + \relax % keeps a following space + \btxparameter\v!inbetween + \texdefinition {\s!btx:\s!cite:inject} { + \currentbtxsecond + } + \fi + \ifx\currentbtxthird\empty \else + \texdefinition {\s!btx:\s!cite:inject} { + \currentbtxthird } \fi \currentbtxrighttext + \btxparameter\c!right \stopsetups -\startsetups btx:cite:listelement +\startsetups btx:cite:range \texdefinition{\s!btx:\s!cite:concat} \currentbtxlefttext \ifx\currentbtxfirst\empty \fastsetup{\s!btx:\s!cite:\s!empty} \else - \texdefinition {\s!btx:\s!cite:inject} { - \btxcitereference - \currentbtxfirst - } + \texdefinition {\s!btx:\s!cite:inject} { + \btxcitereference + \btxusecommand[\currentbtxspecification:cite:\currentbtxcitealternative] { + \currentbtxfirst + \ifx\currentbtxsecond\empty \else + \btxparameter\c!range + \currentbtxsecond + \fi + \ifx\currentbtxthird\empty \else + \currentbtxthird + \fi + } + } \fi \currentbtxrighttext \stopsetups -\startsetups btx:cite:author +\startsetups btx:cite:listelement \texdefinition{\s!btx:\s!cite:concat} \currentbtxlefttext \ifx\currentbtxfirst\empty \fastsetup{\s!btx:\s!cite:\s!empty} \else - \texdefinition {\s!btx:\s!cite:inject} { - \btxcitereference - \currentbtxfirst - } - \fi - \ifx\currentbtxsecond\empty \else - \relax % keeps a following space - \btxparameter\v!inbetween - \texdefinition {\s!btx:\s!cite:inject} { - \currentbtxsecond - } - \fi - \ifx\currentbtxthird\empty \else - \texdefinition {\s!btx:\s!cite:inject} { - \currentbtxthird - } + \texdefinition {\s!btx:\s!cite:inject} { + \btxcitereference + \currentbtxfirst + } \fi \currentbtxrighttext \stopsetups @@ -208,39 +212,85 @@ \currentbtxrighttext \stopsetups -% these three are goodies to get something bit are not set up as it makes no +% these three are goodies to get something but are not set up as it makes no % sense to have something root for combinations like this (esp not because one % gets default anyway -\startsetups btx:cite:authoryear - \fastsetup{btx:cite:author} +% AB: not so sure about that. Why define them in default rather than here? + +\startsetups \s!btx:\s!cite:authoryear + \fastsetup{\s!btx:\s!cite:author} \stopsetups -\startsetups btx:cite:authoryears - \fastsetup{btx:cite:author} +\startsetups \s!btx:\s!cite:authoryears + \fastsetup{\s!btx:\s!cite:authoryear} \stopsetups -\startsetups btx:cite:authornum - \fastsetup{btx:cite:author} +\startsetups \s!btx:\s!cite:authornum + \fastsetup{\s!btx:\s!cite:authoryear} \stopsetups -\startsetups btx:cite:authorref - \ifx{\btxparameter\c!alternative}{authoryear} - \fastsetup{btx:cite:authoryears} +\startsetups \s!btx:\s!cite:authorref + \ifx{\\s!btxparameter\c!alternative}{authoryear} + \fastsetup{\s!btx:\s!cite:authoryears} \else\ifx{\btxparameter\c!alternative}{num} - \fastsetup{btx:cite:authornum} + \fastsetup{\s!btx:\s!cite:authornum} \else - \fastsetup{btx:cite:author} + \fastsetup{\s!btx:\s!cite:author} \fi\fi \stopsetups -\startsetups btx:cite:num - \fastsetup{btx:cite:range} +\startsetups \s!btx:\s!cite:num + \fastsetup{\s!btx:\s!cite:range} +\stopsetups +\startsetups \s!btx:\s!cite:default + \fastsetup{\s!btx:\s!cite:num} +\stopsetups +\startsetups \s!btx:\s!cite:textnum + \fastsetup{\s!btx:\s!cite:num} +\stopsetups +\startsetups \s!btx:\s!cite:year + \fastsetup{\s!btx:\s!cite:range} +\stopsetups +\startsetups \s!btx:\s!cite:short + \fastsetup{\s!btx:\s!cite:range} +\stopsetups +\startsetups \s!btx:\s!cite:author:num + \fastsetup{\s!btx:\s!cite:range} +\stopsetups +\startsetups \s!btx:\s!cite:author:year + \fastsetup{\s!btx:\s!cite:range} +\stopsetups +\startsetups \s!btx:\s!cite:author:years + \fastsetup{\s!btx:\s!cite:concat}%?? in range already? + \fastsetup{\s!btx:\s!cite:range} +\stopsetups + +\startsetups \s!btx:\s!cite:serial + \fastsetup{\s!btx:\s!cite:range} +\stopsetups +\startsetups \s!btx:\s!cite:tag + \fastsetup{\s!btx:\s!cite:normal} +\stopsetups +\startsetups \s!btx:\s!cite:key + \fastsetup{\s!btx:\s!cite:normal} +\stopsetups +\startsetups \s!btx:\s!cite:category + \fastsetup{\s!btx:\s!cite:normal} +\stopsetups + +% the following correspond to fields, but can be used in many renderings + +\startsetups \s!btx:\s!cite:keywords + \fastsetup{\s!btx:\s!cite:list} +\stopsetups +\startsetups \s!btx:\s!cite:type + \fastsetup{\s!btx:\s!cite:normal} \stopsetups -\startsetups btx:cite:default - \fastsetup{btx:cite:num} +\startsetups \s!btx:\s!cite:title + \fastsetup{\s!btx:\s!cite:normal} \stopsetups -\startsetups btx:cite:textnum - \fastsetup{btx:cite:num} +\startsetups \s!btx:\s!cite:pages + \fastsetup{\s!btx:\s!cite:range} \stopsetups -\startsetups btx:cite:year - \fastsetup{btx:cite:range} +\startsetups \s!btx:\s!cite:page + \fastsetup{\s!btx:\s!cite:normal} \stopsetups % the following is kind of specific, but can be used in many renderings diff --git a/tex/context/base/publ-imp-default.mkvi b/tex/context/base/publ-imp-default.mkvi index a78769849..49a0b9eae 100644 --- a/tex/context/base/publ-imp-default.mkvi +++ b/tex/context/base/publ-imp-default.mkvi @@ -488,106 +488,107 @@ %D Citations: -\startsetups \s!btx:\s!default:\s!cite:author - \fastsetup{\s!btx:\s!cite:author} -\stopsetups -\startsetups \s!btx:\s!default:\s!cite:authoryear - \fastsetup{\s!btx:\s!cite:author} -\stopsetups -\startsetups \s!btx:\s!default:\s!cite:authoryears - \fastsetup{\s!btx:\s!cite:author} -\stopsetups -\startsetups \s!btx:\s!default:\s!cite:authornum - \fastsetup{\s!btx:\s!cite:author} -\stopsetups -\startsetups \s!btx:\s!default:\s!cite:authorref - \fastsetup{\s!btx:\s!cite:authorref} -\stopsetups - -\startsetups \s!btx:\s!default:\s!cite:author:num - \fastsetup{\s!btx:\s!cite:range} -\stopsetups -\startsetups \s!btx:\s!default:\s!cite:author:year - \fastsetup{\s!btx:\s!cite:range} -\stopsetups -\startsetups \s!btx:\s!default:\s!cite:author:years - \fastsetup{\s!btx:\s!cite:concat} - \fastsetup{\s!btx:\s!cite:range} -\stopsetups - -\startsetups \s!btx:\s!default:\s!cite:keywords - \fastsetup{\s!btx:\s!cite:list} -\stopsetups -\startsetups \s!btx:\s!default:\s!cite:year - \fastsetup{\s!btx:\s!cite:range} -\stopsetups -\startsetups \s!btx:\s!default:\s!cite:short - \fastsetup{\s!btx:\s!cite:normal} -\stopsetups -\startsetups \s!btx:\s!default:\s!cite:serial - \fastsetup{\s!btx:\s!cite:range} -\stopsetups -\startsetups \s!btx:\s!default:\s!cite:tag - \fastsetup{\s!btx:\s!cite:normal} -\stopsetups -\startsetups \s!btx:\s!default:\s!cite:key - \fastsetup{\s!btx:\s!cite:normal} -\stopsetups -\startsetups \s!btx:\s!default:\s!cite:category - \fastsetup{\s!btx:\s!cite:normal} -\stopsetups -\startsetups \s!btx:\s!default:\s!cite:type - \fastsetup{\s!btx:\s!cite:normal} -\stopsetups -\startsetups \s!btx:\s!default:\s!cite:num - \fastsetup{\s!btx:\s!cite:range} -\stopsetups -\startsetups \s!btx:\s!default:\s!cite:default - \fastsetup{\s!btx:\s!default:\s!cite:num} -\stopsetups -\startsetups \s!btx:\s!default:\s!cite:textnum - \fastsetup{\s!btx:\s!default:\s!cite:num} -\stopsetups -\startsetups \s!btx:\s!default:\s!cite:title - \fastsetup{\s!btx:\s!cite:normal} -\stopsetups -\startsetups \s!btx:\s!default:\s!cite:pages - \fastsetup{\s!btx:\s!cite:range} -\stopsetups -\startsetups \s!btx:\s!default:\s!cite:page - \fastsetup{\s!btx:\s!cite:normal} -\stopsetups -\startsetups \s!btx:\s!default:\s!cite:doi - \fastsetup{\s!btx:\s!cite:url} -\stopsetups -\startsetups \s!btx:\s!default:\s!cite:url - \fastsetup{\s!btx:\s!cite:url} -\stopsetups -\startsetups \s!btx:\s!default:\s!cite:nocite - \fastsetup{\s!btx:\s!cite:nocite}% defined nowhere : -\stopsetups - -\startsetups \s!btx:\s!default:\s!cite:entry - \fastsetup{\s!btx:\s!cite:entry} -\stopsetups -\startsetups \s!btx:\s!default:\s!cite:none - \fastsetup{\s!btx:\s!cite:none} -\stopsetups - -\startsetups \s!btx:\s!default:\s!list:page - \fastsetup{\s!btx:\s!list:page} -\stopsetups -\startsetups \s!btx:\s!default:\s!list:yes - \fastsetup{\s!btx:\s!list:yes} -\stopsetups -\startsetups \s!btx:\s!default:\s!list:num - \fastsetup{\s!btx:\s!list:num} -\stopsetups -\startsetups \s!btx:\s!default:\s!list:bib - \fastsetup{\s!btx:\s!list:bib} -\stopsetups -\startsetups \s!btx:\s!default:\s!list:short - \fastsetup{\s!btx:\s!list:short} -\stopsetups +% \startsetups \s!btx:\s!default:\s!cite:author +% \fastsetup{\s!btx:\s!cite:author} +% \stopsetups +% \startsetups \s!btx:\s!default:\s!cite:authoryear +% \fastsetup{\s!btx:\s!cite:author} +% \stopsetups +% \startsetups \s!btx:\s!default:\s!cite:authoryears +% \fastsetup{\s!btx:\s!cite:author} +% \stopsetups +% \startsetups \s!btx:\s!default:\s!cite:authornum +% \fastsetup{\s!btx:\s!cite:author} +% \stopsetups +% \startsetups \s!btx:\s!default:\s!cite:authorref +% \fastsetup{\s!btx:\s!cite:authorref} +% \stopsetups +% +% \startsetups \s!btx:\s!default:\s!cite:author:num +% \fastsetup{\s!btx:\s!cite:range} +% \stopsetups +% \startsetups \s!btx:\s!default:\s!cite:author:year +% \fastsetup{\s!btx:\s!cite:range} +% \stopsetups +% \startsetups \s!btx:\s!default:\s!cite:author:years +% \fastsetup{\s!btx:\s!cite:concat} +% \fastsetup{\s!btx:\s!cite:range} +% \stopsetups +% +% \startsetups \s!btx:\s!default:\s!cite:keywords +% \fastsetup{\s!btx:\s!cite:list} +% \stopsetups +% \startsetups \s!btx:\s!default:\s!cite:year +% \fastsetup{\s!btx:\s!cite:range} +% \stopsetups +% \startsetups \s!btx:\s!default:\s!cite:short +% \fastsetup{\s!btx:\s!cite:normal} +% \stopsetups +% \startsetups \s!btx:\s!default:\s!cite:serial +% \fastsetup{\s!btx:\s!cite:range} +% \stopsetups +% \startsetups \s!btx:\s!default:\s!cite:tag +% \fastsetup{\s!btx:\s!cite:normal} +% \stopsetups +% \startsetups \s!btx:\s!default:\s!cite:key +% \fastsetup{\s!btx:\s!cite:normal} +% \stopsetups +% \startsetups \s!btx:\s!default:\s!cite:category +% \fastsetup{\s!btx:\s!cite:normal} +% \stopsetups +% \startsetups \s!btx:\s!default:\s!cite:type +% \fastsetup{\s!btx:\s!cite:normal} +% \stopsetups +% \startsetups \s!btx:\s!default:\s!cite:num +% \fastsetup{\s!btx:\s!cite:range} +% \stopsetups +% \startsetups \s!btx:\s!default:\s!cite:default +% \fastsetup{\s!btx:\s!default:\s!cite:num} +% \stopsetups +% \startsetups \s!btx:\s!default:\s!cite:textnum +% \fastsetup{\s!btx:\s!default:\s!cite:num} +% \stopsetups +% \startsetups \s!btx:\s!default:\s!cite:title +% \fastsetup{\s!btx:\s!cite:normal} +% \stopsetups +% \startsetups \s!btx:\s!default:\s!cite:pages +% \fastsetup{\s!btx:\s!cite:range} +% \stopsetups +% \startsetups \s!btx:\s!default:\s!cite:page +% \fastsetup{\s!btx:\s!cite:normal} +% \stopsetups +% \startsetups \s!btx:\s!default:\s!cite:doi +% \fastsetup{\s!btx:\s!cite:url} +% \stopsetups +% \startsetups \s!btx:\s!default:\s!cite:url +% \fastsetup{\s!btx:\s!cite:url} +% \stopsetups +% \startsetups \s!btx:\s!default:\s!cite:nocite +% \fastsetup{\s!btx:\s!cite:nocite}% defined nowhere : +% \stopsetups +% \startsetups \s!btx:\s!default:\s!cite:entry +% \fastsetup{\s!btx:\s!cite:entry} +% \stopsetups +% \startsetups \s!btx:\s!default:\s!cite:none +% \fastsetup{\s!btx:\s!cite:none} +% \stopsetups + +% List + +% \startsetups \s!btx:\s!default:\s!list:page +% \fastsetup{\s!btx:\s!list:page} +% \stopsetups +% \startsetups \s!btx:\s!default:\s!list:yes +% \fastsetup{\s!btx:\s!list:yes} +% \stopsetups +% \startsetups \s!btx:\s!default:\s!list:num +% \fastsetup{\s!btx:\s!list:num} +% \stopsetups +% \startsetups \s!btx:\s!default:\s!list:bib +% \fastsetup{\s!btx:\s!list:bib} +% \stopsetups +% \startsetups \s!btx:\s!default:\s!list:short +% \fastsetup{\s!btx:\s!list:short} +% \stopsetups \stopbtxrenderingdefinitions diff --git a/tex/context/base/publ-imp-list.mkvi b/tex/context/base/publ-imp-list.mkvi index 4c238aa95..e13294f6f 100644 --- a/tex/context/base/publ-imp-list.mkvi +++ b/tex/context/base/publ-imp-list.mkvi @@ -50,36 +50,41 @@ } \stopsetups -\startsetups \s!btx:\s!list:yes - \btxstartstyleandcolor [\currentbtxspecification:list:yes] - \btxusecommand[\currentbtxspecification:list:yes] { - \btxparameter\c!left - \texdefinition {\s!btx:\s!list:inject} { - \currentbtxfirst - \btxparameter\c!stopper - } - \btxparameter\c!right - } - \btxstopstyleandcolor -\stopsetups - -\startsetups \s!btx:\s!list:num +\startsetups \s!btx:\s!list:numbering + \btxparameter\c!left \texdefinition {\s!btx:\s!list:inject} { \currentbtxfirst + \btxparameter\c!stopper } + \btxparameter\c!right \stopsetups -\startsetups \s!btx:\s!list:bib - \texdefinition {\s!btx:\s!list:inject} { - \currentbtxfirst - } +\startsetups \s!btx:\s!list:num + \btxstartstyleandcolor [\currentbtxspecification:list:num] + \btxusecommand[\currentbtxspecification:list:num] { + \fastsetup{\s!btx:\s!list:numbering} + } + \btxstopstyleandcolor +\stopsetups + +\startsetups \s!btx:\s!list:yes + \fastsetup{\s!btx:\s!list:num} \stopsetups \startsetups \s!btx:\s!list:short - \texdefinition {\s!btx:\s!list:inject} { - \currentbtxfirst - \currentbtxsecond - } + \btxstartstyleandcolor [\currentbtxspecification:list:short] + \btxusecommand[\currentbtxspecification:list:short] { + \fastsetup{\s!btx:\s!list:numbering} + } + \btxstopstyleandcolor +\stopsetups + +\startsetups \s!btx:\s!list:bib + \btxstartstyleandcolor [\currentbtxspecification:list:bib] + \btxusecommand[\currentbtxspecification:list:bib] { + \fastsetup{\s!btx:\s!list:numbering} + } + \btxstopstyleandcolor \stopsetups \protect diff --git a/tex/context/base/publ-ini.lua b/tex/context/base/publ-ini.lua index 2855399db..25397727b 100644 --- a/tex/context/base/publ-ini.lua +++ b/tex/context/base/publ-ini.lua @@ -122,6 +122,7 @@ local ctx_btxsetlanguage = context.btxsetlanguage local ctx_btxsetcombis = context.btxsetcombis local ctx_btxsetcategory = context.btxsetcategory local ctx_btxcitesetup = context.btxcitesetup +local ctx_btxsubcitesetup = context.btxsubcitesetup local ctx_btxpagesetup = context.btxpagesetup local ctx_btxsetfirst = context.btxsetfirst local ctx_btxsetsecond = context.btxsetsecond @@ -2861,7 +2862,7 @@ do if trace_detail then report("expanding %a cite setup %a","multiple author",setup) end - ctx_btxcitesetup(setup) + ctx_btxsubcitesetup(setup) ctx_btxstopciteauthor() end end @@ -3036,7 +3037,7 @@ do if trace_detail then report("expanding %a list setup %a","default",variant) end - ctx_btxlistsetup(variant) + ctx_btxlistsetup("default") end function listvariants.num(dataset,block,tag,variant,listindex) diff --git a/tex/context/base/publ-ini.mkiv b/tex/context/base/publ-ini.mkiv index c63fa7ed9..a4452e451 100644 --- a/tex/context/base/publ-ini.mkiv +++ b/tex/context/base/publ-ini.mkiv @@ -482,7 +482,7 @@ %D Tracing -\newconditional\c_btx_trace +\newconditional\c_btx_trace % not used yet \installtextracker {btxrendering} @@ -592,7 +592,8 @@ \endgroup} \unexpanded\def\btxpagesetup - {\fastbtxsetup\s!page\s!list + {\btxsetuptype\plusfour + \fastbtxsetup\s!page\s!list \btxpagereset} % end of page stuff @@ -607,6 +608,7 @@ \begingroup \usebtxstyleandcolor\c!style\c!color \ignorespaces + \btxsetuptype\plusthree \fastbtxsetup\s!list\currentbtxcategory \removeunwantedspaces \endgroup @@ -638,6 +640,7 @@ {\begingroup \def\currentbtxtag{#1}% \ignorespaces + \btxsetuptype\plusthree \fastbtxsetup\s!list\currentbtxcategory \removeunwantedspaces \endgroup} @@ -831,6 +834,7 @@ \unexpanded\def\btxlistsetup#1% used for the reference in the list {\the\everybtxlistentry \everybtxlistentry\emptytoks % so only once per entry to be sure + \btxsetuptype\plusthree \fastbtxsetup\s!list{#1}} \appendtoks @@ -991,7 +995,7 @@ {\currentbtxdataset}% {\currentbtxtag}% {\currentbtxfield}% - { + {% combiner {#1}% kind {list}% etallimit {\btxparameter\c!etallimit}% @@ -1016,7 +1020,7 @@ {\currentbtxdataset}% {\currentbtxtag}% {\s!author}% - { + {% combiner {\btxparameter\c!authorconversion}% kind {cite}% etallimit {\btxparameter\c!etallimit}% @@ -1327,27 +1331,23 @@ \let\publ_fastbtxsetup_normal\fastbtxsetup -% \unexpanded\def\publ_fastbtxsetup_chain_yes#1#2% -% {\inframed[\c!foregroundstyle=\infofont]{% -% \currentbtxspecification :#1:#2\ifcsname\??setup:\s!btx:\currentbtxspecification :#1:#2\endcsname\else->% -% \currentbtxspecificationfallback:#1:#2\ifcsname\??setup:\s!btx:\currentbtxspecificationfallback :#1:#2\endcsname\else->% -% #1:#2\ifcsname\??setup:\s!btx :#1:#2\endcsname\else->% -% \currentbtxspecification :#1:\s!unknown\ifcsname\??setup:\s!btx:\currentbtxspecification :#1:\s!unknown\endcsname\else->% -% \currentbtxspecificationfallback:#1:\s!unknown\ifcsname\??setup:\s!btx:\currentbtxspecificationfallback:#1:\s!unknown\endcsname\else->% -% ?\fi\fi\fi\fi\fi}} - -% \unexpanded\def\publ_fastbtxsetup_chain_nop#1#2% -% {\inframed[\c!foregroundstyle=\infofont]{% -% \currentbtxspecification :#1:#2\ifcsname\??setup:\s!btx:\currentbtxspecification :#1:#2\endcsname\else->% -% #1:#2\ifcsname\??setup:\s!btx :#1:#2\endcsname\else->% -% \currentbtxspecification :#1:\s!unknown\ifcsname\??setup:\s!btx:\currentbtxspecification :#1:\s!unknown\endcsname\else->% -% ?\fi\fi\fi}} +\newconstant\btxsetuptype + +% 0 = unknown darkred +% 1 = cite darkblue +% 2 = subcite darkgreen +% 3 = list darkcyan +% 4 = page darkmagenta +% 5 = unknown darkred \unexpanded\def\publ_fastbtxsetup_chain_inbetween {\allowbreak->\allowbreak} \unexpanded\def\publ_fastbtxsetup_chain_yes#1#2% - {\dontleavehmode\begingroup\infofont\darkblue[% + {\dontleavehmode\begingroup + \infofont + \ifcase\btxsetuptype\darkred\or\darkblue\or\darkgreen\or\darkcyan\or\darkmagenta\else\darkred\fi + [% \currentbtxspecification :#1:#2\ifcsname\??setup:\s!btx:\currentbtxspecification :#1:#2\endcsname\else \publ_fastbtxsetup_chain_inbetween \currentbtxspecificationfallback:#1:#2\ifcsname\??setup:\s!btx:\currentbtxspecificationfallback :#1:#2\endcsname\else @@ -1359,10 +1359,14 @@ \currentbtxspecificationfallback:#1:\s!unknown\ifcsname\??setup:\s!btx:\currentbtxspecificationfallback:#1:\s!unknown\endcsname\else \publ_fastbtxsetup_chain_inbetween unset\fi\fi\fi\fi\fi - ]\endgroup} + ]% + \endgroup} \unexpanded\def\publ_fastbtxsetup_chain_nop#1#2% - {\dontleavehmode\begingroup\infofont\darkred[% + {\dontleavehmode\begingroup + \infofont + \darkred + [% \currentbtxspecification :#1:#2\ifcsname\??setup:\s!btx:\currentbtxspecification :#1:#2\endcsname\else \publ_fastbtxsetup_chain_inbetween #1:#2\ifcsname\??setup:\s!btx :#1:#2\endcsname\else @@ -1370,7 +1374,8 @@ \currentbtxspecification :#1:\s!unknown\ifcsname\??setup:\s!btx:\currentbtxspecification :#1:\s!unknown\endcsname\else \publ_fastbtxsetup_chain_inbetween unset\fi\fi\fi - ]\endgroup} + ]% + \endgroup} \unexpanded\def\publ_fastbtxsetup_chain {\ifx\currentbtxspecificationfallback\empty @@ -1396,15 +1401,15 @@ \setfalse\c_btx_cite_reference_injected \to \everybtxciteentry -% \unexpanded\def\btxcitesetup#1% -% {\the\everybtxciteentry -% \everybtxciteentry\emptytoks % tricky maybe not when subcites -% \currentbtxlefttext -% \fastbtxsetup\s!cite{#1}% -% \currentbtxrighttext} % no \btxcitereset as we loose dataset and such - \unexpanded\def\btxcitesetup#1% {\the\everybtxciteentry + \btxsetuptype\plusone + \everybtxciteentry\emptytoks % tricky maybe not when subcites + \fastbtxsetup\s!cite{#1}} % no \btxcitereset as we loose dataset and such + +\unexpanded\def\btxsubcitesetup#1% + {\the\everybtxciteentry + \btxsetuptype\plustwo \everybtxciteentry\emptytoks % tricky maybe not when subcites \fastbtxsetup\s!cite{#1}} % no \btxcitereset as we loose dataset and such diff --git a/tex/context/base/status-files.pdf b/tex/context/base/status-files.pdf index aca61ed08..dc228ad8a 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 cbd2c0acb..02c9447e8 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-lst.mkvi b/tex/context/base/strc-lst.mkvi index afbfdab31..556d2ab48 100644 --- a/tex/context/base/strc-lst.mkvi +++ b/tex/context/base/strc-lst.mkvi @@ -1267,7 +1267,12 @@ \hskip-\leftskip \ifconditional\c_lists_has_number \ifconditional\c_lists_show_number - \setbox\scratchbox\simplealignedbox\scratchwidth{\usealignparameter\c!numberalign} + \setbox\scratchbox + \ifzeropt\scratchwidth + \hbox + \else + \simplealignedbox\scratchwidth{\listparameter\c!numberalign} + \fi \bgroup \useliststyleandcolor\c!numberstyle\c!numbercolor \currentlistsymbol diff --git a/tex/generic/context/luatex/luatex-fonts-merged.lua b/tex/generic/context/luatex/luatex-fonts-merged.lua index 9c644c813..1d6509ae4 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/17/15 02:03:30 +-- merge date : 04/18/15 14:41:50 do -- begin closure to overcome local limits and interference -- cgit v1.2.3