summaryrefslogtreecommitdiff
path: root/tex/context
diff options
context:
space:
mode:
Diffstat (limited to 'tex/context')
-rw-r--r--tex/context/base/cont-new.mkiv2
-rw-r--r--tex/context/base/context-version.pdfbin4275 -> 4281 bytes
-rw-r--r--tex/context/base/context.mkiv2
-rw-r--r--tex/context/base/mult-aux.mkiv4
-rw-r--r--tex/context/base/mult-de.mkii1
-rw-r--r--tex/context/base/mult-def.lua3
-rw-r--r--tex/context/base/mult-en.mkii1
-rw-r--r--tex/context/base/mult-fr.mkii1
-rw-r--r--tex/context/base/mult-it.mkii1
-rw-r--r--tex/context/base/mult-nl.mkii1
-rw-r--r--tex/context/base/mult-pe.mkii1
-rw-r--r--tex/context/base/mult-ro.mkii1
-rw-r--r--tex/context/base/pack-com.mkiv5
-rw-r--r--tex/context/base/publ-aut.lua33
-rw-r--r--tex/context/base/publ-fnd.lua21
-rw-r--r--tex/context/base/publ-ini.lua191
-rw-r--r--tex/context/base/publ-ini.mkiv14
-rw-r--r--tex/context/base/publ-tra.lua19
-rw-r--r--tex/context/base/publ-usr.lua7
-rw-r--r--tex/context/base/status-files.pdfbin24584 -> 24583 bytes
-rw-r--r--tex/context/base/status-lua.pdfbin244257 -> 244428 bytes
-rw-r--r--tex/context/base/status-mkiv.lua11
-rw-r--r--tex/context/base/typo-man.lua111
-rw-r--r--tex/context/base/typo-prc.mkvi4
-rw-r--r--tex/context/base/x-ct.lua2
-rw-r--r--tex/context/base/x-mathml.mkiv5
-rw-r--r--tex/context/interface/keys-cs.xml1
-rw-r--r--tex/context/interface/keys-de.xml1
-rw-r--r--tex/context/interface/keys-en.xml1
-rw-r--r--tex/context/interface/keys-fr.xml1
-rw-r--r--tex/context/interface/keys-it.xml1
-rw-r--r--tex/context/interface/keys-nl.xml1
-rw-r--r--tex/context/interface/keys-pe.xml1
-rw-r--r--tex/context/interface/keys-ro.xml1
34 files changed, 221 insertions, 228 deletions
diff --git a/tex/context/base/cont-new.mkiv b/tex/context/base/cont-new.mkiv
index af32e8f35..799d14cb6 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.05.21 22:04}
+\newcontextversion{2014.05.23 23:24}
%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 cf428c00e..e6179748e 100644
--- a/tex/context/base/context-version.pdf
+++ b/tex/context/base/context-version.pdf
Binary files differ
diff --git a/tex/context/base/context.mkiv b/tex/context/base/context.mkiv
index 9774f645f..10228ee73 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.05.21 22:04}
+\edef\contextversion{2014.05.23 23:24}
\edef\contextkind {beta}
%D For those who want to use this:
diff --git a/tex/context/base/mult-aux.mkiv b/tex/context/base/mult-aux.mkiv
index bfac58261..427be69ce 100644
--- a/tex/context/base/mult-aux.mkiv
+++ b/tex/context/base/mult-aux.mkiv
@@ -1102,8 +1102,8 @@
\expandafter\noexpand\csname saved_setup_current#2\endcsname
\expandafter\noexpand\csname nested_setup_current#2\endcsname}}
-% okay, we can also get rid of the #9, but thiS code looks pretty bad, while the previous is
-% still okay given that we can also use #6 as setup1 (so in fact we can save some cs again and
+% okay, we can also get rid of the #9, but this code looks pretty bad, while the previous is
+% still okay given that we can also use #6 as setup (so in fact we can save some cs again and
% only use one extra)
%
% \global\advance\commalevel \plusone
diff --git a/tex/context/base/mult-de.mkii b/tex/context/base/mult-de.mkii
index 9e7ecd930..6c5633010 100644
--- a/tex/context/base/mult-de.mkii
+++ b/tex/context/base/mult-de.mkii
@@ -753,6 +753,7 @@
\setinterfaceconstant{indenting}{einziehen}
\setinterfaceconstant{indentnext}{ziehefolgendeein}
\setinterfaceconstant{indicator}{indikator}
+\setinterfaceconstant{initialsep}{initialsep}
\setinterfaceconstant{inner}{innen}
\setinterfaceconstant{innermargin}{innermargin}
\setinterfaceconstant{inputfile}{inputfile}
diff --git a/tex/context/base/mult-def.lua b/tex/context/base/mult-def.lua
index bd8b36185..4d923f5c1 100644
--- a/tex/context/base/mult-def.lua
+++ b/tex/context/base/mult-def.lua
@@ -6625,6 +6625,9 @@ return {
["surnamesep"]={
["en"]="surnamesep",
},
+ ["initialsep"]={
+ ["en"]="initialsep",
+ },
["surnameinitialsep"]={
["en"]="surnameinitialsep",
},
diff --git a/tex/context/base/mult-en.mkii b/tex/context/base/mult-en.mkii
index bf72af384..188c85ab4 100644
--- a/tex/context/base/mult-en.mkii
+++ b/tex/context/base/mult-en.mkii
@@ -753,6 +753,7 @@
\setinterfaceconstant{indenting}{indenting}
\setinterfaceconstant{indentnext}{indentnext}
\setinterfaceconstant{indicator}{indicator}
+\setinterfaceconstant{initialsep}{initialsep}
\setinterfaceconstant{inner}{inner}
\setinterfaceconstant{innermargin}{innermargin}
\setinterfaceconstant{inputfile}{inputfile}
diff --git a/tex/context/base/mult-fr.mkii b/tex/context/base/mult-fr.mkii
index e1129848f..735682a60 100644
--- a/tex/context/base/mult-fr.mkii
+++ b/tex/context/base/mult-fr.mkii
@@ -753,6 +753,7 @@
\setinterfaceconstant{indenting}{composeenalinea}
\setinterfaceconstant{indentnext}{indentesuivant}
\setinterfaceconstant{indicator}{indicateur}
+\setinterfaceconstant{initialsep}{initialsep}
\setinterfaceconstant{inner}{interieur}
\setinterfaceconstant{innermargin}{margeinterieure}
\setinterfaceconstant{inputfile}{fichierentree}
diff --git a/tex/context/base/mult-it.mkii b/tex/context/base/mult-it.mkii
index 5646a212e..a96b1b180 100644
--- a/tex/context/base/mult-it.mkii
+++ b/tex/context/base/mult-it.mkii
@@ -753,6 +753,7 @@
\setinterfaceconstant{indenting}{rientro}
\setinterfaceconstant{indentnext}{rientrasuccessivo}
\setinterfaceconstant{indicator}{indicatore}
+\setinterfaceconstant{initialsep}{initialsep}
\setinterfaceconstant{inner}{interno}
\setinterfaceconstant{innermargin}{margineinterno}
\setinterfaceconstant{inputfile}{inputfile}
diff --git a/tex/context/base/mult-nl.mkii b/tex/context/base/mult-nl.mkii
index aa376c39a..66cfbc83a 100644
--- a/tex/context/base/mult-nl.mkii
+++ b/tex/context/base/mult-nl.mkii
@@ -753,6 +753,7 @@
\setinterfaceconstant{indenting}{inspringen}
\setinterfaceconstant{indentnext}{springvolgendein}
\setinterfaceconstant{indicator}{aanduiding}
+\setinterfaceconstant{initialsep}{initialsep}
\setinterfaceconstant{inner}{binnen}
\setinterfaceconstant{innermargin}{binnenmarge}
\setinterfaceconstant{inputfile}{inputfile}
diff --git a/tex/context/base/mult-pe.mkii b/tex/context/base/mult-pe.mkii
index 16871bb62..a81d9d024 100644
--- a/tex/context/base/mult-pe.mkii
+++ b/tex/context/base/mult-pe.mkii
@@ -753,6 +753,7 @@
\setinterfaceconstant{indenting}{تورفتگی}
\setinterfaceconstant{indentnext}{متن‌تورفته}
\setinterfaceconstant{indicator}{اندیکاتور}
+\setinterfaceconstant{initialsep}{initialsep}
\setinterfaceconstant{inner}{داخلی}
\setinterfaceconstant{innermargin}{حاشیه‌داخلی}
\setinterfaceconstant{inputfile}{پرونده‌ورودی}
diff --git a/tex/context/base/mult-ro.mkii b/tex/context/base/mult-ro.mkii
index d01822944..b6a070c59 100644
--- a/tex/context/base/mult-ro.mkii
+++ b/tex/context/base/mult-ro.mkii
@@ -753,6 +753,7 @@
\setinterfaceconstant{indenting}{aliniat}
\setinterfaceconstant{indentnext}{aliniaturmator}
\setinterfaceconstant{indicator}{indicator}
+\setinterfaceconstant{initialsep}{initialsep}
\setinterfaceconstant{inner}{intern}
\setinterfaceconstant{innermargin}{innermargin}
\setinterfaceconstant{inputfile}{inputfile}
diff --git a/tex/context/base/pack-com.mkiv b/tex/context/base/pack-com.mkiv
index 4ca77af1c..72bb906d9 100644
--- a/tex/context/base/pack-com.mkiv
+++ b/tex/context/base/pack-com.mkiv
@@ -324,7 +324,10 @@
\def\pack_combinations_caption_second
{\ifx\nexttoken\egroup
% the caption is empty
+ \else\ifx\nexttoken\stopcaption
+ % the caption is empty (new per 2014-05-24)
\else
+ % todo: \p_pack_combinations_alternative\v!none: no style, strut etc
\hsize\wd\b_pack_combinations_content
\ifx\p_align\empty\else\setupalign[\p_align]\fi
\usecombinationstyleandcolor\c!style\c!color
@@ -332,7 +335,7 @@
\aftergroup\endstrut
\aftergroup\egroup
\begstrut
- \fi}
+ \fi\fi}
\def\pack_combinations_pickup_package_pair % we need to store the caption row
{\vbox
diff --git a/tex/context/base/publ-aut.lua b/tex/context/base/publ-aut.lua
index ba492a93b..c549b2d16 100644
--- a/tex/context/base/publ-aut.lua
+++ b/tex/context/base/publ-aut.lua
@@ -19,6 +19,8 @@ local concat = table.concat
local lpeg = lpeg
local utfchar = utf.char
+local P, C, V, Cs, Ct, lpegmatch, lpegpatterns = lpeg.P, lpeg.C, lpeg.V, lpeg.Cs, lpeg.Ct, lpeg.match, lpeg.patterns
+
local publications = publications or { }
local datasets = publications.datasets or { }
@@ -27,8 +29,6 @@ publications.datasets = datasets
publications.authors = publications.authors or { }
local authors = publications.authors
-local P, C, V, Cs, Ct, lpegmatch, lpegpatterns = lpeg.P, lpeg.C, lpeg.V, lpeg.Cs, lpeg.Ct, lpeg.match, lpeg.patterns
-
-- local function makesplitter(separator)
-- return Ct { "start",
-- start = (Cs((V("outer") + (1-separator))^1) + separator^1)^1,
@@ -230,6 +230,7 @@ local settings = { }
-- local defaultsettings = {
-- firstnamesep = " ",
+-- initialsep = " ",
-- vonsep = " ",
-- surnamesep = " ",
-- juniorsep = " ",
@@ -254,6 +255,7 @@ local defaultsettings = {
juniorjuniorsep = [[\btxlistvariantparameter{juniorjuniorsep}]],
surnamefirstnamesep = [[\btxlistvariantparameter{surnamefirstnamesep}]],
surnameinitialsep = [[\btxlistvariantparameter{surnameinitialsep}]],
+ initialsep = [[\btxlistvariantparameter{initialsep}]],
namesep = [[\btxlistvariantparameter{namesep}]],
lastnamesep = [[\btxlistvariantparameter{lastnamesep}]],
finalnamesep = [[\btxlistvariantparameter{finalnamesep}]],
@@ -300,7 +302,7 @@ function authors.normalshort(author,settings)
local initials, vons, surnames, juniors = author.initials, author.vons, author.surnames, author.juniors
local result, settings = { }, settings or defaultsettings
if initials and #initials > 0 then
- result[#result+1] = concat(initials," ")
+ result[#result+1] = concat(the_initials(initials)," ")
result[#result+1] = settings.initialsep or defaultsettings.initialsep
end
if vons and #vons > 0 then
@@ -371,6 +373,8 @@ function authors.invertedshort(author,settings)
return concat(result)
end
+authors.short = authors.normalshort
+
local lastconcatsize = 1
local function concatnames(t,settings)
@@ -426,29 +430,6 @@ function commands.btxauthor(...)
context(authors.concat(...))
end
-function authors.short(author,year)
- -- todo
--- local result = { }
--- if author then
--- local authors = splitauthors(author)
--- for a=1,#authors do
--- local aa = authors[a]
--- local initials = aa.initials
--- for i=1,#initials do
--- result[#result+1] = initials[i]
--- end
--- local surnames = aa.surnames
--- for s=1,#surnames do
--- result[#result+1] = utfchar(lpegmatch(firstcharacter,surnames[s]))
--- end
--- end
--- end
--- if year then
--- result[#result+1] = year
--- end
--- return concat(result)
-end
-
-- We can consider creating a hashtable key -> entry but I wonder if
-- pays off.
diff --git a/tex/context/base/publ-fnd.lua b/tex/context/base/publ-fnd.lua
index 383bcac73..7dd4fd74c 100644
--- a/tex/context/base/publ-fnd.lua
+++ b/tex/context/base/publ-fnd.lua
@@ -14,16 +14,16 @@ local concat = table.concat
local formatters = string.formatters
local lowercase = characters.lower
-local colon = P(":")
-local dash = P("-")
-local lparent = P("(")
-local rparent = P(")")
-local space = lpeg.patterns.whitespace
-local valid = 1 - colon - space - lparent - rparent
------ key = C(valid^1)
-local key = C(R("az","AZ")^1)
-local word = Cs(lpeg.patterns.unquoted + valid^1)
-local number = C(valid^1)
+local colon = P(":")
+local dash = P("-")
+local lparent = P("(")
+local rparent = P(")")
+local space = lpeg.patterns.whitespace
+local valid = 1 - colon - space - lparent - rparent
+----- key = C(valid^1)
+local key = C(R("az","AZ")^1)
+local word = Cs(lpeg.patterns.unquoted + valid^1)
+local number = C(valid^1)
----- f_string_key = formatters[" local s_%s = entry[%q]"]
local f_string_key = formatters[" local s_%s = entry[%q] if s_%s then s_%s = lower(s_%s) end "]
@@ -135,7 +135,6 @@ function publications.search(dataset,expression)
end
end
-
-- local dataset = publications.new()
-- publications.load(dataset,"t:/manuals/hybrid/tugboat.bib")
--
diff --git a/tex/context/base/publ-ini.lua b/tex/context/base/publ-ini.lua
index 102b22104..a73450ab3 100644
--- a/tex/context/base/publ-ini.lua
+++ b/tex/context/base/publ-ini.lua
@@ -8,41 +8,6 @@ if not modules then modules = { } end modules ['publ-ini'] = {
-- we could store the destinations in the user list entries
--- will move:
-
-local lpegmatch = lpeg.match
-local P, R, C, Ct, Cs = lpeg.P, lpeg.R, lpeg.C, lpeg.Ct, lpeg.Cs
-
-local lpegmatch = lpeg.match
-local pattern = Cs((1 - P(1) * P(-1))^0 * (P(".")/"" + P(1)))
-
-local manipulators = {
- stripperiod = function(str) return lpegmatch(pattern,str) end,
- uppercase = characters.upper,
- lowercase = characters.lower,
-}
-
-local manipulation = C((1-P("->"))^1) * P("->") * C(P(1)^0)
-
-local pattern = manipulation / function(operation,str)
- local manipulator = manipulators[operation]
- return manipulator and manipulator(str) or str
-end
-
-local function manipulated(str)
- return lpegmatch(pattern,str) or str
-end
-
-utilities.parsers.manipulation = manipulation
-utilities.parsers.manipulators = manipulators
-utilities.parsers.manipulated = manipulated
-
-function commands.manipulated(str)
- context(manipulated(str))
-end
-
--- use: for rest in gmatch(reference,"[^, ]+") do
-
local next, rawget, type, tostring, tonumber = next, rawget, type, tostring, tonumber
local match, gmatch, format, gsub = string.match, string.gmatch, string.format, string.gsub
local concat, sort, tohash = table.concat, table.sort, table.tohash
@@ -53,7 +18,7 @@ local settings_to_array, settings_to_set = utilities.parsers.settings_to_array,
local sortedkeys, sortedhash = table.sortedkeys, table.sortedhash
local setmetatableindex = table.setmetatableindex
local lpegmatch = lpeg.match
-local P, C, Ct = lpeg.P, lpeg.C, lpeg.Ct
+local P, C, Ct, R = lpeg.P, lpeg.C, lpeg.Ct, lpeg.R
local report = logs.reporter("publications")
local report_cite = logs.reporter("publications","cite")
@@ -100,7 +65,8 @@ local sortcomparer = sorters.comparers.basic -- (a,b)
local sortstripper = sorters.strip
local sortsplitter = sorters.splitters.utf
-local settings_to_array = utilities.parsers.settings_to_array
+local splitmanipulation = typesetters.manipulators.splitspecification
+local applymanipulation = typesetters.manipulators.applyspecification
local context = context
@@ -196,10 +162,8 @@ local function serialize(t)
local s = sortedkeys(entry)
for i=1,#s do
local k = s[i]
- -- if k ~= "details" then
- m = m + 1
- r[m] = f_key_string(k,entry[k])
- -- end
+ m = m + 1
+ r[m] = f_key_string(k,entry[k])
end
m = m + 1
r[m] = " },"
@@ -248,7 +212,6 @@ end
local function initializer()
statistics.starttiming(publications)
-collected = publications.collected or collected -- for the moment as we load runtime
for name, state in next, collected do
local dataset = datasets[name]
local datasources = state.datasources
@@ -309,8 +272,7 @@ setmetatableindex(usedentries,function(t,k)
if u then
u[#u+1] = entry
else
- u = { entry }
- s[tag] = u
+ s[tag] = { entry }
end
else
usedentries[set] = { [tag] = { entry } }
@@ -318,93 +280,38 @@ setmetatableindex(usedentries,function(t,k)
end
end
end
+-- table.save("temp.lua",usedentries)
end
return usedentries[k]
end
end)
--- local subsets = nil
--- local block = tex.count.btxblock
--- local collected = references.collected
--- local prefix = nil -- todo: dataset ?
--- if prefix and prefix ~= "" then
--- subsets = { collected[prefix] or collected[""] }
--- else
--- local components = references.productdata.components
--- local subset = collected[""]
--- if subset then
--- subsets = { subset }
--- else
--- subsets = { }
--- end
--- for i=1,#components do
--- local subset = collected[components[i]]
--- if subset then
--- subsets[#subsets+1] = subset
--- end
--- end
--- end
--- if #subsets == 0 then
--- subsets = { collected[""] }
--- end
--- local list = type(reference) == "string" and settings_to_array(reference) or reference
--- local todo = table.tohash(list)
--- if #subsets > 0 then
--- local result, nofresult, done = { }, 0, { }
--- for i=1,#subsets do
--- local subset = subsets[i]
--- for i=1,#list do
--- local rest = list[i]
--- local blk, tag, found = block, nil, nil
--- if block then
--- tag = f_destination(dataset,blk,rest)
--- found = subset[tag]
--- if not found then
--- for i=block-1,1,-1 do
--- tag = f_destination(dataset,i,rest)
--- found = subset[tag]
--- if found then
--- blk = i
--- break
--- end
--- end
--- end
--- end
--- if not found then
--- blk = "*"
--- tag = f_destination(dataset,blk,rest)
--- found = subset[tag]
--- end
--- if found then
--- local entries = found.entries
--- if entries then
--- local current = tonumber(entries.text) -- todo: no ranges when no tonumber
--- if current and not done[current] then
--- nofresult = nofresult + 1
--- result[nofresult] = { blk, rest, current, found.references.internal }
--- done[current] = true
--- end
--- end
--- end
--- end
--- end
+-- match:
+--
+-- [current|previous|following] section
+-- [current|previous|following] block
+-- [current|previous|following] component
+--
+-- by prefix
+-- by dataset
local reported = { }
local finder = publications.finder
local function findallused(dataset,reference,block,section)
-local finder = publications.finder
- local find = finder and finder(reference)
- local tags = not find and settings_to_array(reference)
- local todo = { }
- local okay = { } -- only if mark
- local set = usedentries[dataset]
- local valid = datasets[dataset].luadata
+ local finder = publications.finder -- for the moment, not yes in all betas
+ local find = finder and finder(reference)
+ local tags = not find and settings_to_array(reference)
+ local todo = { }
+ local okay = { } -- only if mark
+ local set = usedentries[dataset]
+ local valid = datasets[dataset].luadata
if set then
local function register(tag)
local entry = set[tag]
if entry then
- -- only once in a list
+ -- only once in a list but at some point we can have more (if we
+ -- decide to duplicate)
if #entry == 1 then
entry = entry[1]
else
@@ -643,48 +550,14 @@ function commands.setbtxentry(name,tag)
end
end
--- rendering of fields (maybe multiple manipulators)
-
--- local manipulation = utilities.parsers.manipulation
--- local manipulators = utilities.parsers.manipulators
---
--- local function checked(field)
--- local m, f = lpegmatch(manipulation,field)
--- if m then
--- return manipulators[m], f or field
--- else
--- return nil, field
--- end
--- end
-
-local manipulation = Ct((C((1-P("->"))^1) * P("->"))^1) * C(P(1)^0)
-local manipulators = utilities.parsers.manipulators
-
-local function checked(field)
- local m, f = lpegmatch(manipulation,field)
- if m then
- return m, f or field
- else
- return nil, field
- end
-end
-
-local function manipulated(actions,str)
- for i=1,#actions do
- local action = manipulators[actions[i]]
- if action then
- str = action(str) or str
- end
- end
- return str
-end
+-- rendering of fields
function commands.btxflush(name,tag,field)
local dataset = rawget(datasets,name)
if dataset then
local fields = dataset.luadata[tag]
if fields then
- local manipulator, field = checked(field)
+ local manipulator, field = splitmanipulation(field)
local value = fields[field]
if type(value) == "string" then
local suffixes = dataset.suffixes[tag]
@@ -694,7 +567,7 @@ function commands.btxflush(name,tag,field)
value = value .. converters.characters(suffix)
end
end
- context(manipulator and manipulated(manipulator,value) or value)
+ context(manipulator and applymanipulation(manipulator,value) or value)
return
end
local details = dataset.details[tag]
@@ -708,7 +581,7 @@ function commands.btxflush(name,tag,field)
value = value .. converters.characters(suffix)
end
end
- context(manipulator and manipulated(manipulator,value) or value)
+ context(manipulator and applymanipulation(manipulator,value) or value)
return
end
end
@@ -726,7 +599,7 @@ function commands.btxdetail(name,tag,field)
if dataset then
local details = dataset.details[tag]
if details then
- local manipulator, field = checked(field)
+ local manipulator, field = splitmanipulation(field)
local value = details[field]
if type(value) == "string" then
local suffixes = dataset.suffixes[tag]
@@ -736,7 +609,7 @@ function commands.btxdetail(name,tag,field)
value = value .. converters.characters(suffix)
end
end
- context(manipulator and manipulated(manipulator,value) or value)
+ context(manipulator and applymanipulation(manipulator,value) or value)
else
report("unknown detail %a of tag %a in dataset %a",field,tag,name)
end
@@ -753,7 +626,7 @@ function commands.btxfield(name,tag,field)
if dataset then
local fields = dataset.luadata[tag]
if fields then
- local manipulator, field = checked(field)
+ local manipulator, field = splitmanipulation(field)
local value = fields[field]
if type(value) == "string" then
local suffixes = dataset.suffixes[tag]
@@ -763,7 +636,7 @@ function commands.btxfield(name,tag,field)
value = value .. converters.characters(suffix)
end
end
- context(manipulator and manipulated(manipulator,value) or value)
+ context(manipulator and applymanipulation(manipulator,value) or value)
else
report("unknown field %a of tag %a in dataset %a",field,tag,name)
end
diff --git a/tex/context/base/publ-ini.mkiv b/tex/context/base/publ-ini.mkiv
index fb0d00d03..b175b614d 100644
--- a/tex/context/base/publ-ini.mkiv
+++ b/tex/context/base/publ-ini.mkiv
@@ -590,7 +590,7 @@
\unexpanded\def\currentbtxciteauthor % always author
{\ctxcommand{btxauthor("\currentbtxdataset","\currentbtxtag","author",{
- combiner = "\btxcitevariantparameter\c!author",
+ combiner = "\btxcitevariantparameter\c!authorconversion",
etallimit = \number\btxcitevariantparameter\c!etallimit,
etaldisplay = \number\btxcitevariantparameter\c!etaldisplay,
})}}
@@ -827,7 +827,7 @@
\unexpanded\def\publ_cite_no[#1]%
{\iftrialtypesetting \else
- \ctxcommand{btxhandlecite{%
+ \ctxcommand{btxhandlenocite{%
dataset = "\currentbtxdataset",%
reference = "#1",%
markentry = \iftrialtypesetting false\else true\fi,%
@@ -936,6 +936,7 @@
[\c!interaction=\v!start,
\c!setups=btx:cite:\btxcitevariantparameter\c!alternative,
\c!alternative=num,
+ \c!authorconversion=\v!normal,
\c!andtext={ and },
\c!otherstext={ et al.},
\c!pubsep={, },
@@ -948,6 +949,8 @@
\c!middle=,
\c!right=]
+% \c!authorconversion=\v!normal
+
\definebtxcitevariant
[author]
[%c!sorttype=,
@@ -1066,6 +1069,7 @@
\c!firstnamesep={ },
\c!juniorsep={ },
\c!vonsep={ },
+ \c!initialsep={ },
\c!surnamesep={, },
\c!surnameinitialsep={, },
\c!surnamefirstnamesep={, },
@@ -1088,9 +1092,9 @@
[author]
\setupbtxcitevariant
- [\c!author =\btxlistvariantparameter\c!author,
- \c!etallimit =\btxlistvariantparameter\c!etallimit,
- \c!etaldisplay =\btxlistvariantparameter\c!etaldisplay]
+ [\c!authorconversion=\btxlistvariantparameter\c!authorconversion,
+ \c!etallimit =\btxlistvariantparameter\c!etallimit,
+ \c!etaldisplay =\btxlistvariantparameter\c!etaldisplay]
% Do we want these in the format? Loading them delayed is somewhat messy.
diff --git a/tex/context/base/publ-tra.lua b/tex/context/base/publ-tra.lua
index 98c81d800..8aa179d2d 100644
--- a/tex/context/base/publ-tra.lua
+++ b/tex/context/base/publ-tra.lua
@@ -17,6 +17,8 @@ local NC, NR = context.NC, context.NR
local bold = context.bold
local darkgreen, darkred, darkblue = context.darkgreen, context.darkred, context.darkblue
+-- TEXT hyperlink author number date
+
local fields = table.sorted {
"abstract",
"address",
@@ -89,23 +91,6 @@ local listvariants = table.sorted {
"artauthor",
}
--- local categories = table.sorted {
--- "article",
--- "book",
--- "booklet",
--- "conference",
--- "inbook",
--- "incollection",
--- "inproceedings",
--- "manual",
--- "mastersthesis",
--- "misc",
--- "phdthesis",
--- "proceedings",
--- "techreport",
--- "unpublished",
--- }
-
local categories = {
article = {
required = { "author", "title", "journal", "year" },
diff --git a/tex/context/base/publ-usr.lua b/tex/context/base/publ-usr.lua
index 6bb93ebee..e2100a289 100644
--- a/tex/context/base/publ-usr.lua
+++ b/tex/context/base/publ-usr.lua
@@ -6,6 +6,9 @@ if not modules then modules = { } end modules ['publ-usr'] = {
license = "see context related readme files"
}
+local P, Cs, R, Cc, Carg = lpeg.P, lpeg.Cs, lpeg.R, lpeg.Cc, lpeg.Carg
+
+local settings_to_hash = utilities.parsers.settings_to_hash
-- local chardata = characters.data
-- local str = [[
@@ -30,8 +33,6 @@ local remapped = {
arttitle = "title",
}
-local P, Cs, R, Cc, Carg = lpeg.P, lpeg.Cs, lpeg.R, lpeg.Cc, lpeg.Carg
-
local function register(target,key,a,b,c,d,e)
key = remapped[key] or key
if b and d and e then
@@ -78,7 +79,7 @@ local value = optional^-1 * mandate^-1 * optional^-1 * mandate^-2
local pattern = ((Carg(1) * key * value) / register + P(1))^0
function publications.addtexentry(dataset,settings,content)
- settings = utilities.parsers.settings_to_hash(settings)
+ settings = settings_to_hash(settings)
local data = {
tag = settings.tag or settings.k or "no tag",
category = settings.category or settings.t or "article",
diff --git a/tex/context/base/status-files.pdf b/tex/context/base/status-files.pdf
index 24b732427..2c166a863 100644
--- a/tex/context/base/status-files.pdf
+++ b/tex/context/base/status-files.pdf
Binary files differ
diff --git a/tex/context/base/status-lua.pdf b/tex/context/base/status-lua.pdf
index f6ca96bc3..edb25cc89 100644
--- a/tex/context/base/status-lua.pdf
+++ b/tex/context/base/status-lua.pdf
Binary files differ
diff --git a/tex/context/base/status-mkiv.lua b/tex/context/base/status-mkiv.lua
index 07e912a88..05bfd7c93 100644
--- a/tex/context/base/status-mkiv.lua
+++ b/tex/context/base/status-mkiv.lua
@@ -4907,6 +4907,11 @@ return {
},
{
category = "lua",
+ filename = "typo-man",
+ status = "todo",
+ },
+ {
+ category = "lua",
filename = "typo-prc",
status = "todo",
},
@@ -5088,6 +5093,12 @@ return {
},
{
category = "lua",
+ filename = "publ-fnd",
+ loading = "publ-ini.mkiv",
+ status = "pending",
+ },
+ {
+ category = "lua",
filename = "publ-tra",
loading = "publ-ini.mkiv",
status = "pending",
diff --git a/tex/context/base/typo-man.lua b/tex/context/base/typo-man.lua
new file mode 100644
index 000000000..9b3c8b92b
--- /dev/null
+++ b/tex/context/base/typo-man.lua
@@ -0,0 +1,111 @@
+if not modules then modules = { } end modules ['typo-man'] = {
+ version = 1.001,
+ comment = "companion to typo-prc.mkiv",
+ author = "Hans Hagen, PRAGMA-ADE, Hasselt NL",
+ copyright = "PRAGMA ADE / ConTeXt Development Team",
+ license = "see context related readme files"
+}
+
+if not characters then
+ -- for testing stand-alone
+ require("char-def")
+ require("char-ini")
+end
+
+local lpegmatch = lpeg.match
+local P, R, C, Ct, Cs, Carg = lpeg.P, lpeg.R, lpeg.C, lpeg.Ct, lpeg.Cs, lpeg.Carg
+local global = global or _G
+
+local methods = {
+ uppercase = characters.upper,
+ lowercase = characters.lower,
+}
+
+local function nothing(s) return s end -- we already have that one somewhere
+
+-- table.setmetatableindex(methods,function(t,k)
+-- t[k] = nothing
+-- return nothing
+-- end)
+
+local splitter = lpeg.tsplitat(".")
+
+table.setmetatableindex(methods,function(t,k)
+ local s = lpegmatch(splitter,k)
+ local v = global
+ for i=1,#s do
+ v = v[s[i]]
+ if not v then
+ break
+ end
+ end
+ if not v or v == global then
+ v = nothing
+ end
+ t[k] = v
+ return v
+end)
+
+local whitespace = lpeg.patterns.whitespace^0
+local separator = whitespace * P("->") * whitespace
+local pair = C((1-separator)^1) * separator * C(P(1)^0)
+local list = Ct((C((1-separator)^1) * separator)^1) * C(P(1)^0)
+
+local pattern = Carg(1) * pair / function(methods,operation,str)
+ return methods[operation](str) or str
+end
+
+local function apply(str,m)
+ return lpegmatch(pattern,str,1,m or methods) or str
+end
+
+local function splitspecification(field,m)
+ local m, f = lpegmatch(list,field,1,m or methods)
+ if m then
+ return m, f or field
+ else
+ return nil, field
+ end
+end
+
+local function applyspecification(actions,str)
+ if actions then
+ for i=1,#actions do
+ local action = methods[actions[i]]
+ if action then
+ str = action(str) or str
+ end
+ end
+ end
+ return str
+end
+
+if not typesetters then typesetters = { } end
+
+typesetters.manipulators = {
+ methods = methods,
+ apply = apply,
+ patterns = {
+ pair = pair,
+ list = list,
+ },
+ splitspecification = splitspecification,
+ applyspecification = applyspecification,
+}
+
+local pattern = Cs((1 - P(1) * P(-1))^0 * (P(".")/"" + P(1)))
+
+methods.stripperiod = function(str) return lpegmatch(pattern,str) end
+
+-- print(apply("hans"))
+-- print(apply("uppercase->hans"))
+-- print(apply("string.reverse -> hans"))
+-- print(apply("uppercase->hans",{ uppercase = string.reverse } ))
+
+-- print(applyspecification(splitspecification("hans")))
+-- print(applyspecification(splitspecification("lowercase->uppercase->hans")))
+-- print(applyspecification(splitspecification("uppercase->stripperiod->hans.")))
+
+function commands.manipulated(str)
+ context(apply(str))
+end
diff --git a/tex/context/base/typo-prc.mkvi b/tex/context/base/typo-prc.mkvi
index de221f241..74f02212b 100644
--- a/tex/context/base/typo-prc.mkvi
+++ b/tex/context/base/typo-prc.mkvi
@@ -13,7 +13,11 @@
\writestatus{loading}{ConTeXt Typesetting Macros / Processors}
+%D For the moment manipulators are loaded here too, as they're in the same
+%D category as processors. This might change. (They are used in publications.)
+
\registerctxluafile{typo-prc}{1.001}
+\registerctxluafile{typo-man}{1.001}
\unprotect
diff --git a/tex/context/base/x-ct.lua b/tex/context/base/x-ct.lua
index 2dee985c3..9c647e8e7 100644
--- a/tex/context/base/x-ct.lua
+++ b/tex/context/base/x-ct.lua
@@ -122,6 +122,8 @@ function moduledata.ct.tabulate(root,namespace)
end
+-- todo: use content and caption
+
function moduledata.ct.combination(root,namespace)
if not root then
diff --git a/tex/context/base/x-mathml.mkiv b/tex/context/base/x-mathml.mkiv
index 5520dbbe6..badccbc4d 100644
--- a/tex/context/base/x-mathml.mkiv
+++ b/tex/context/base/x-mathml.mkiv
@@ -16,7 +16,8 @@
% This module is under construction and will be cleaned up. We use a funny mix of
% xml, tex and lua. I could rewrite the lot but it also shows how context evolves.
%
-% I might en dup with a lua-only implementation some day.
+% I might end up with a lua-only implementation some day. I must find a good reason
+% to spend time on it. In fact, it might even be more messy.
%
% no m:text strip (needs checking, maybe nbsp is mandate
%
@@ -1709,7 +1710,7 @@
\stopxmlsetups
\startxmlsetups mml:annotation
- \xmldoifelse {#1} {.[oneof(@encoding,'TeX','tex','TEX','ConTeXt','context','CONTEXT','ctx')]} {
+ \xmldoifelse {#1} {.[oneof(@encoding,'TeX','tex','application/x-tex','TEX','ConTeXt','context','CONTEXT','ctx')]} {
\xmlflushcontext{#1}
} {
\xmldoifelse {#1} {.[oneof(@encoding,'calcmath','cm')]} {
diff --git a/tex/context/interface/keys-cs.xml b/tex/context/interface/keys-cs.xml
index 7053ceed7..cdfdf016f 100644
--- a/tex/context/interface/keys-cs.xml
+++ b/tex/context/interface/keys-cs.xml
@@ -759,6 +759,7 @@
<cd:constant name='indenting' value='odsazovani'/>
<cd:constant name='indentnext' value='odsadpristi'/>
<cd:constant name='indicator' value='indikator'/>
+ <cd:constant name='initialsep' value='initialsep'/>
<cd:constant name='inner' value='vnitrni'/>
<cd:constant name='innermargin' value='innermargin'/>
<cd:constant name='inputfile' value='inputfile'/>
diff --git a/tex/context/interface/keys-de.xml b/tex/context/interface/keys-de.xml
index 7164db6e3..ea4067288 100644
--- a/tex/context/interface/keys-de.xml
+++ b/tex/context/interface/keys-de.xml
@@ -759,6 +759,7 @@
<cd:constant name='indenting' value='einziehen'/>
<cd:constant name='indentnext' value='ziehefolgendeein'/>
<cd:constant name='indicator' value='indikator'/>
+ <cd:constant name='initialsep' value='initialsep'/>
<cd:constant name='inner' value='innen'/>
<cd:constant name='innermargin' value='innermargin'/>
<cd:constant name='inputfile' value='inputfile'/>
diff --git a/tex/context/interface/keys-en.xml b/tex/context/interface/keys-en.xml
index 354b86d65..736198166 100644
--- a/tex/context/interface/keys-en.xml
+++ b/tex/context/interface/keys-en.xml
@@ -759,6 +759,7 @@
<cd:constant name='indenting' value='indenting'/>
<cd:constant name='indentnext' value='indentnext'/>
<cd:constant name='indicator' value='indicator'/>
+ <cd:constant name='initialsep' value='initialsep'/>
<cd:constant name='inner' value='inner'/>
<cd:constant name='innermargin' value='innermargin'/>
<cd:constant name='inputfile' value='inputfile'/>
diff --git a/tex/context/interface/keys-fr.xml b/tex/context/interface/keys-fr.xml
index 0e4f9e516..314e1b87f 100644
--- a/tex/context/interface/keys-fr.xml
+++ b/tex/context/interface/keys-fr.xml
@@ -759,6 +759,7 @@
<cd:constant name='indenting' value='composeenalinea'/>
<cd:constant name='indentnext' value='indentesuivant'/>
<cd:constant name='indicator' value='indicateur'/>
+ <cd:constant name='initialsep' value='initialsep'/>
<cd:constant name='inner' value='interieur'/>
<cd:constant name='innermargin' value='margeinterieure'/>
<cd:constant name='inputfile' value='fichierentree'/>
diff --git a/tex/context/interface/keys-it.xml b/tex/context/interface/keys-it.xml
index afc33eb22..9af423467 100644
--- a/tex/context/interface/keys-it.xml
+++ b/tex/context/interface/keys-it.xml
@@ -759,6 +759,7 @@
<cd:constant name='indenting' value='rientro'/>
<cd:constant name='indentnext' value='rientrasuccessivo'/>
<cd:constant name='indicator' value='indicatore'/>
+ <cd:constant name='initialsep' value='initialsep'/>
<cd:constant name='inner' value='interno'/>
<cd:constant name='innermargin' value='margineinterno'/>
<cd:constant name='inputfile' value='inputfile'/>
diff --git a/tex/context/interface/keys-nl.xml b/tex/context/interface/keys-nl.xml
index 9abfe5d7a..efe7814ed 100644
--- a/tex/context/interface/keys-nl.xml
+++ b/tex/context/interface/keys-nl.xml
@@ -759,6 +759,7 @@
<cd:constant name='indenting' value='inspringen'/>
<cd:constant name='indentnext' value='springvolgendein'/>
<cd:constant name='indicator' value='aanduiding'/>
+ <cd:constant name='initialsep' value='initialsep'/>
<cd:constant name='inner' value='binnen'/>
<cd:constant name='innermargin' value='binnenmarge'/>
<cd:constant name='inputfile' value='inputfile'/>
diff --git a/tex/context/interface/keys-pe.xml b/tex/context/interface/keys-pe.xml
index 517c41ed0..5eeaedcfe 100644
--- a/tex/context/interface/keys-pe.xml
+++ b/tex/context/interface/keys-pe.xml
@@ -759,6 +759,7 @@
<cd:constant name='indenting' value='تورفتگی'/>
<cd:constant name='indentnext' value='متن‌تورفته'/>
<cd:constant name='indicator' value='اندیکاتور'/>
+ <cd:constant name='initialsep' value='initialsep'/>
<cd:constant name='inner' value='داخلی'/>
<cd:constant name='innermargin' value='حاشیه‌داخلی'/>
<cd:constant name='inputfile' value='پرونده‌ورودی'/>
diff --git a/tex/context/interface/keys-ro.xml b/tex/context/interface/keys-ro.xml
index b7f5b2e19..5f707884f 100644
--- a/tex/context/interface/keys-ro.xml
+++ b/tex/context/interface/keys-ro.xml
@@ -759,6 +759,7 @@
<cd:constant name='indenting' value='aliniat'/>
<cd:constant name='indentnext' value='aliniaturmator'/>
<cd:constant name='indicator' value='indicator'/>
+ <cd:constant name='initialsep' value='initialsep'/>
<cd:constant name='inner' value='intern'/>
<cd:constant name='innermargin' value='innermargin'/>
<cd:constant name='inputfile' value='inputfile'/>