summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorContext Git Mirror Bot <phg42.2a@gmail.com>2015-05-10 20:15:06 +0200
committerContext Git Mirror Bot <phg42.2a@gmail.com>2015-05-10 20:15:06 +0200
commit1e6ac8e86fb8e91f4606fb1ae519024d6cb52b12 (patch)
treecb81d3056223f37665f9f52a2c07841be24e2756
parentb2720858f841530581e009ae380e39b4267a3d5d (diff)
downloadcontext-1e6ac8e86fb8e91f4606fb1ae519024d6cb52b12.tar.gz
2015-05-10 20:10:00
-rw-r--r--scripts/context/lua/mtx-flac.lua42
-rw-r--r--tex/context/base/char-tex.lua10
-rw-r--r--tex/context/base/cont-new.mkiv2
-rw-r--r--tex/context/base/context-version.pdfbin4181 -> 4174 bytes
-rw-r--r--tex/context/base/context.mkiv4
-rw-r--r--tex/context/base/lxml-ini.lua6
-rw-r--r--tex/context/base/lxml-ini.mkiv6
-rw-r--r--tex/context/base/math-fen.mkiv12
-rw-r--r--tex/context/base/math-ini.mkiv61
-rw-r--r--tex/context/base/publ-dat.lua7
-rw-r--r--tex/context/base/publ-imp-apa.mkvi261
-rw-r--r--tex/context/base/publ-imp-aps.mkvi257
-rw-r--r--tex/context/base/publ-imp-author.mkvi6
-rw-r--r--tex/context/base/publ-imp-default.mkvi30
-rw-r--r--tex/context/base/publ-ini.lua193
-rw-r--r--tex/context/base/publ-ini.mkiv42
-rw-r--r--tex/context/base/publ-sor.lua4
-rw-r--r--tex/context/base/status-files.pdfbin24449 -> 24469 bytes
-rw-r--r--tex/context/base/status-lua.pdfbin250941 -> 251107 bytes
-rw-r--r--tex/generic/context/luatex/luatex-fonts-merged.lua2
20 files changed, 574 insertions, 371 deletions
diff --git a/scripts/context/lua/mtx-flac.lua b/scripts/context/lua/mtx-flac.lua
index 4e01abc99..eb3b48591 100644
--- a/scripts/context/lua/mtx-flac.lua
+++ b/scripts/context/lua/mtx-flac.lua
@@ -107,29 +107,34 @@ function flac.savecollection(pattern,filename)
local music = { }
table.sort(files)
for i=1,#files do
- local data = flac.getmetadata(files[i])
+ local name = files[i]
+ local data = flac.getmetadata(name)
if data then
local tags = data.tags
local info = data.info
- local artist = tags.artist or "no-artist"
- local album = tags.album or "no-album"
- local albums = music[artist]
- if not albums then
- albums = { }
- music[artist] = albums
- end
- local albumx = albums[album]
- if not albumx then
- albumx = {
- year = tags.date,
- tracks = { },
+ if tags and info then
+ local artist = tags.artist or "no-artist"
+ local album = tags.album or "no-album"
+ local albums = music[artist]
+ if not albums then
+ albums = { }
+ music[artist] = albums
+ end
+ local albumx = albums[album]
+ if not albumx then
+ albumx = {
+ year = tags.date,
+ tracks = { },
+ }
+ albums[album] = albumx
+ end
+ albumx.tracks[tonumber(tags.tracknumber) or 0] = {
+ title = tags.title,
+ length = math.round((info.samples_in_stream/info.sample_rate_in_hz)),
}
- albums[album] = albumx
+ else
+ flac.report("unable to read file",name)
end
- albumx.tracks[tonumber(tags.tracknumber) or 0] = {
- title = tags.title,
- length = math.round((info.samples_in_stream/info.sample_rate_in_hz)),
- }
end
end
-- inspect(music)
@@ -153,6 +158,7 @@ function flac.savecollection(pattern,filename)
return ya < yb
end
end)
+ nofalbums = nofalbums + #list
for nofalbums=1,#list do
local album = list[nofalbums]
local data = albums[album]
diff --git a/tex/context/base/char-tex.lua b/tex/context/base/char-tex.lua
index 62bb6a041..2093c6d6c 100644
--- a/tex/context/base/char-tex.lua
+++ b/tex/context/base/char-tex.lua
@@ -286,6 +286,13 @@ local commandmapping = allocate {
texcharacters.commandmapping = commandmapping
+local ligaturemapping = allocate {
+ ["''"] = "”",
+ ["``"] = "“",
+ ["--"] = "–",
+ ["---"] = "—",
+}
+
-- local achar = R("az","AZ") + P("ı") + P("\\i")
--
-- local spaces = P(" ")^0
@@ -355,6 +362,9 @@ local function toutfpattern()
hash["{\\"..k.."}"] = v
hash["{\\"..k.." }"] = v
end
+ for k, v in next, ligaturemapping do
+ hash[k] = v
+ end
untex = utfchartabletopattern(hash) / hash
end
return untex
diff --git a/tex/context/base/cont-new.mkiv b/tex/context/base/cont-new.mkiv
index 6cb826614..7aaabd8b0 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.05.09 13:41}
+\newcontextversion{2015.05.10 20:08}
%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 39bde2fe6..2c9b4c63e 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 59e7faead..3b70cecc2 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.05.09 13:41}
+\edef\contextversion{2015.05.10 20:08}
\edef\contextkind {beta}
%D For those who want to use this:
@@ -464,7 +464,7 @@
\loadmarkfile{anch-bar}
%loadmarkfile{anch-snc} % when needed this one will be redone
-\loadmarkfile{math-ini}
+\loadmarkfile{math-ini} % way after font-pre !
\loadmarkfile{math-pln}
\loadmarkfile{math-for}
\loadmarkfile{math-def} % also saves some meanings
diff --git a/tex/context/base/lxml-ini.lua b/tex/context/base/lxml-ini.lua
index 5879de3a4..115403395 100644
--- a/tex/context/base/lxml-ini.lua
+++ b/tex/context/base/lxml-ini.lua
@@ -93,7 +93,7 @@ implement { name = "xmlregisterns", actions = xml.registerns,
implement { name = "xmlremapname", actions = xml.remapname, arguments = { "lxmlid", "string","string","string" } }
implement { name = "xmlremapnamespace", actions = xml.renamespace, arguments = { "lxmlid", "string", "string" } }
implement { name = "xmlsave", actions = lxml.save, arguments = { "string", "string" } }
-implement { name = "xmlsetfunction", actions = lxml.setaction, arguments = { "string", "string", "string" } }
+--------- { name = "xmlsetfunction", actions = lxml.setaction, arguments = { "string", "string", "string" } }
implement { name = "xmlsetsetup", actions = lxml.setsetup, arguments = { "string", "string", "string" } }
implement { name = "xmlsnippet", actions = lxml.snippet, arguments = { "string", "string" } }
implement { name = "xmlstrip", actions = lxml.strip, arguments = { "string", "string" } }
@@ -136,3 +136,7 @@ implement { name = "xmlsetcommandtonone", actions = lxml.setcommandtonone,
implement { name = "xmlstarttiming", actions = function() statistics.starttiming(lxml) end }
implement { name = "xmlstoptiming", actions = function() statistics.stoptiming (lxml) end }
+
+-- kind of special (3rd argument is a function)
+
+commands.xmlsetfunction = lxml.setaction
diff --git a/tex/context/base/lxml-ini.mkiv b/tex/context/base/lxml-ini.mkiv
index ac5a63f88..fab644fdb 100644
--- a/tex/context/base/lxml-ini.mkiv
+++ b/tex/context/base/lxml-ini.mkiv
@@ -158,7 +158,7 @@
\let\xmlremapname \clf_xmlremapname % element
\let\xmlremapnamespace \clf_xmlremapnamespace % document
\let\xmlsave \clf_xmlsave
-\let\xmlsetfunction \clf_xmlsetfunction
+%let\xmlsetfunction \clf_xmlsetfunction
\let\xmlsetsetup \clf_xmlsetsetup
\let\xmlsnippet \clf_xmlsnippet
\let\xmlstrip \clf_xmlstrip
@@ -177,6 +177,10 @@
\def\xmlinfo #1{\hbox{\ttxx[\clf_xmlinfo{#1}]}}
\def\xmlshow #1{\startpacked\ttx\xmlverbatim{#1}\stoppacked}
+% we need to pass the last argument as function, so
+
+\def\xmlsetfunction#1#2#3{\ctxcommand{xmlsetfunction("#1",\!!bs#2\!!es,#3)}}
+
% goodie:
\unexpanded\def\xmlprettyprint#1#2%
diff --git a/tex/context/base/math-fen.mkiv b/tex/context/base/math-fen.mkiv
index 33afbf675..ee82d89d1 100644
--- a/tex/context/base/math-fen.mkiv
+++ b/tex/context/base/math-fen.mkiv
@@ -131,6 +131,9 @@
\definemathfence [angle] [\c!left="27E8,\c!right="27E9]
\definemathfence [doubleangle] [\c!left="27EA,\c!right="27EB]
\definemathfence [solidus] [\c!left="2044,\c!right="2044]
+\definemathfence [ceil] [\c!left="2308,\c!right="2309]
+\definemathfence [floor] [\c!left="230A,\c!right="230B]
+
\definemathfence [nothing]
\definemathfence [mirrored] % \v!mirrored
@@ -158,6 +161,8 @@
\unexpanded\def\Ltriplebar {\math_fenced_fenced_start{triplebar}} \unexpanded\def\Rtriplebar {\math_fenced_fenced_stop{triplebar}}
\unexpanded\def\Lsolidus {\math_fenced_fenced_start{solidus}} \unexpanded\def\Rsolidus {\math_fenced_fenced_stop{solidus}}
\unexpanded\def\Lnothing {\math_fenced_fenced_start{nothing}} \unexpanded\def\Rnothing {\math_fenced_fenced_stop{nothing}}
+\unexpanded\def\Lfloor {\math_fenced_fenced_start{floor}} \unexpanded\def\Rfloor {\math_fenced_fenced_stop{floor}}
+\unexpanded\def\Lceil {\math_fenced_fenced_start{ceil}} \unexpanded\def\Rceil {\math_fenced_fenced_stop{ceil}}
\unexpanded\def\Lparentmirrored {\math_fenced_fenced_stop{mirroredparenthesis}} \unexpanded\def\Rparentmirrored {\math_fenced_fenced_start{mirroredparenthesis}}
\unexpanded\def\Lbracketmirrored {\math_fenced_fenced_stop{mirroredbracket}} \unexpanded\def\Rbracketmirrored {\math_fenced_fenced_start{mirroredbracket}}
@@ -264,6 +269,11 @@
\expandafter\let\csname\??mathleft \meaning /\endcsname\Rsolidusmirrored
\expandafter\let\csname\??mathleft \meaning .\endcsname\Rnothingmirrored
+\expandafter\let\csname\??mathleft \meaning ⌊\endcsname\Lfloor
+\expandafter\let\csname\??mathright\meaning ⌋\endcsname\Rfloor
+\expandafter\let\csname\??mathleft \meaning ⌈\endcsname\Lceil
+\expandafter\let\csname\??mathright\meaning ⌉\endcsname\Rceil
+
% todo paren parent
\let\lbrack\lbracket
@@ -278,6 +288,8 @@
%installmathfencepair \lbar \Lbar \rbar \Rbar
\installmathfencepair \vert \Lbar \vert \Rbar
\installmathfencepair \solidus \Lsolidus \solidus \Rsolidus
+\installmathfencepair \lfloor \Lfloor \rfloor \Rfloor
+\installmathfencepair \lceil \Lceil \rceil \Rceil
\unexpanded\def\{{\mathortext\lbrace \letterleftbrace } % or maybe a chardef
\unexpanded\def\}{\mathortext\rbrace \letterrightbrace } % or maybe a chardef
diff --git a/tex/context/base/math-ini.mkiv b/tex/context/base/math-ini.mkiv
index 0607f008d..d18c66812 100644
--- a/tex/context/base/math-ini.mkiv
+++ b/tex/context/base/math-ini.mkiv
@@ -567,13 +567,14 @@
\unexpanded\def\mathop
{\normalmathop
\bgroup
- \let\rm\mf
+ % no: \let\rm\mf
\let\nexttoken=}
% this one too: \letvalue{\??mathcodecommand op}\mathop ?
\unexpanded\def\normalmbox
- {\normalhbox\bgroup\mf
+ {\normalhbox\bgroup
+ \usemathematicsstyleandcolor\c!textstyle\c!textcolor % new
\dowithnextboxcs\math_mbox_finish\normalhbox}
\def\math_mbox_finish
@@ -619,19 +620,56 @@
% faster. Functions getnumbers >= 1000.
\setupmathematics
- [\c!functionstyle=\mr,
+ [\c!textstyle=, % rm ss etc i.e. known alternatives, otherwise math
+ \c!textcolor=,
+ \c!functionstyle=, % rm ss etc i.e. known alternatives, otherwise math
\c!functioncolor=]
+% \unexpanded\def\math_mfunction_styled
+% {\edef\m_math_text_choice_face{\textstyleface\normalmathstyle}%
+% \dowithnextbox
+% {\mathop{\box\nextbox}}%
+% \hbox\bgroup
+% \usemathematicsstyleandcolor\c!functionstyle\c!functioncolor
+% \m_math_text_choice_face
+% \let\next}
+
+\unexpanded\def\math_mfunction_styled
+ {\begingroup
+ \usemathematicscolorparameter\c!functioncolor
+ \edef\p_functionstyle{\mathematicsparameter\c!functionstyle}%
+ \ifx\p_functionstyle\empty
+ \expandafter\math_mfunction_styled_none
+ \else\ifcsname\??alternativestyles\p_functionstyle\endcsname
+ \doubleexpandafter\math_mfunction_styled_text
+ \else
+ \doubleexpandafter\math_mfunction_styled_math
+ \fi\fi}
+
+\unexpanded\def\math_mfunction_styled_text#1%
+ {\mathoptext{\csname\??alternativestyles\p_functionstyle\endcsname#1}%
+ \endgroup}
+
+\unexpanded\def\math_mfunction_styled_math#1%
+ {\p_functionstyle
+ #1%
+ \endgroup}
+
+\unexpanded\def\math_mfunction_styled_none#1%
+ {\mathupright
+ #1%
+ \endgroup}
+
\unexpanded\def\mfunction#1%
{\begingroup
\math_tags_mfunctiontxt{#1}\c_apply_function
- \mathoptext{\usemathematicsstyleandcolor\c!functionstyle\c!functioncolor#1}%
+ \math_mfunction_styled{#1}%
\endgroup}
\unexpanded\def\mfunctionlabeltext#1%
{\begingroup
\math_tags_mfunctionlab{#1}\c_apply_function
- \mathoptext{\usemathematicsstyleandcolor\c!functionstyle\c!functioncolor\mathlabeltext{#1}}%
+ \math_mfunction_styled{\mathlabeltext{#1}}%
\endgroup}
\let\math_tags_mfunctiontxt\gobbletwoarguments
@@ -1428,6 +1466,19 @@
\expandafter#3\else
\expandafter#1\fi}
+% \def\textstyleface#1% #1 is number (\normalmathstyle)
+% {\ifcase\numexpr#1\relax
+% \tf \or
+% \tf \or
+% \tf \or
+% \tf \or
+% \tfx \or
+% \tfx \or
+% \tfxx \or
+% \tfxx \else
+% \tf
+% \fi}
+
\unexpanded\def\verbosemathstyle#1% #1 is number (\normalmathstyle)
{{\normalexpanded{\relax\darkgray\ttxx[\number#1:\ifcase\numexpr#1\relax
display\or % 0
diff --git a/tex/context/base/publ-dat.lua b/tex/context/base/publ-dat.lua
index 494a13d3c..1e651c45b 100644
--- a/tex/context/base/publ-dat.lua
+++ b/tex/context/base/publ-dat.lua
@@ -346,6 +346,12 @@ function publications.parenttag(dataset,tag)
local entry = luadata[tag]
if entry then
combined[#combined+1] = tag
+ if combined[tag] then
+ report("error in combination, dataset %a, tag %a, parent %a, ignored %a",dataset,tag,combined[tag],parent)
+ else
+ report("combining, dataset %a, tag %a, parent %a",dataset,tag,parent)
+ current.combined[tag] = parent
+ end
end
end
end
@@ -382,6 +388,7 @@ function publications.new(name)
-- used specifications
},
suffixed = false,
+ combined = { },
}
-- we delay details till we need it (maybe we just delay the
-- individual fields but that is tricky as there can be some
diff --git a/tex/context/base/publ-imp-apa.mkvi b/tex/context/base/publ-imp-apa.mkvi
index fce9361f3..d2eae8e9b 100644
--- a/tex/context/base/publ-imp-apa.mkvi
+++ b/tex/context/base/publ-imp-apa.mkvi
@@ -55,7 +55,7 @@
\c!margin=3.5\emwidth]
\definebtx
- [apa:list]
+ [apa:\s!list]
[apa]
[\c!otherstext={,\nobreakspace\textellipsis\space},
\c!etallimit=7,
@@ -69,47 +69,48 @@
% First, we define a namespace for a few special fields
\definebtx
- [apa:list:author]
- [apa:list]
+ [apa:\s!list:author]
+ [apa:\s!list]
\definebtx
- [apa:list:editor]
- [apa:list:author]
+ [apa:\s!list:editor]
+ [apa:\s!list:author]
\definebtx
- [apa:list:suffix]
- [apa:list]
+ [apa:\s!list:suffix]
+ [apa:\s!list]
\definebtx
- [apa:list:url]
- [apa:list]
+ [apa:\s!list:url]
+ [apa:\s!list]
\definebtx
- [apa:list:doi]
- [apa:list]
+ [apa:\s!list:doi]
+ [apa:\s!list]
\definebtx
- [apa:list:numbering]
- [apa:list]
+ [apa:\s!list:\s!page]
+ [apa:\s!list]
+ [\c!pagecommand={\wordright}]
\definebtx
- [apa:list:numbering:num]
- [apa:list:numbering]
- [\c!stopper={.},
- \c!right={\space}]
+ [apa:\s!list:numbering]
+ [apa:\s!list]
\definebtx
- [apa:list:numbering:yes]
- [apa:list:numbering:num]
+ [apa:\s!list:numbering:num]
+ [apa:\s!list:numbering]
+ [\c!stopper={.},
+ \c!right={\space}]
\definebtx
- [apa:list:numbering:short]
- [apa:list:numbering:num]
+ [apa:\s!list:numbering:short]
+ [apa:\s!list:numbering:num]
[\c!stopper=]
\definebtx
- [apa:list:numbering:tag]
- [apa:list:numbering:num]
+ [apa:\s!list:numbering:tag]
+ [apa:\s!list:numbering:num]
[\c!stopper=]
% Next, we define a namespace for each category
@@ -121,143 +122,129 @@
%D \btxloadjournallist[journals.txt] % the jabref list
%D \stoptyping
-
\definebtx
- [apa:list:journal]
+ [apa:\s!list:journal]
[\c!style=\v!italic]
%command=\btxexpandedjournal] % btxabbreviatedjournal
\definebtx
- [apa:list:title]
+ [apa:\s!list:title]
[\c!style=\v!italic,
\c!command=\Word,
\c!translate=\v!yes]
\definebtx
- [apa:list:title:article]
- [apa:list:title]
+ [apa:\s!list:title:article]
+ [apa:\s!list:title]
[\c!style=] % journal is set in italics
\definebtx
- [apa:list:title:magazine]
- [apa:list:title]
+ [apa:\s!list:title:magazine]
+ [apa:\s!list:title]
\definebtx
- [apa:list:title:newspaper]
- [apa:list:title]
+ [apa:\s!list:title:newspaper]
+ [apa:\s!list:title]
\definebtx
- [apa:list:title:periodical]
- [apa:list:title]
+ [apa:\s!list:title:periodical]
+ [apa:\s!list:title]
\definebtx
- [apa:list:title:standard]
- [apa:list:title]
+ [apa:\s!list:title:standard]
+ [apa:\s!list:title]
\definebtx
- [apa:list:title:book]
- [apa:list:title]
+ [apa:\s!list:title:book]
+ [apa:\s!list:title]
\definebtx
- [apa:list:title:inbook]
- [apa:list:title]
+ [apa:\s!list:title:inbook]
+ [apa:\s!list:title]
\definebtx
- [apa:list:title:incollection]
- [apa:list:title]
+ [apa:\s!list:title:incollection]
+ [apa:\s!list:title]
[\c!style=] % booktitle is set in italics
\definebtx
- [apa:list:title:proceedings]
- [apa:list:title]
+ [apa:\s!list:title:proceedings]
+ [apa:\s!list:title]
\definebtx
- [apa:list:title:inproceedings]
- [apa:list:title]
+ [apa:\s!list:title:inproceedings]
+ [apa:\s!list:title]
[\c!style=] % booktitle is set in italics
\definebtx
- [apa:list:title:conference]
- [apa:list:title]
+ [apa:\s!list:title:conference]
+ [apa:\s!list:title]
[\c!style=] % booktitle is set in italics
\definebtx
- [apa:list:title:thesis]
- [apa:list:title]
+ [apa:\s!list:title:thesis]
+ [apa:\s!list:title]
\definebtx
- [apa:list:title:phdthesis]
- [apa:list:title]
+ [apa:\s!list:title:phdthesis]
+ [apa:\s!list:title]
\definebtx
- [apa:list:title:mastersthesis]
- [apa:list:title]
+ [apa:\s!list:title:mastersthesis]
+ [apa:\s!list:title]
\definebtx
- [apa:list:title:booklet]
- [apa:list:title]
+ [apa:\s!list:title:booklet]
+ [apa:\s!list:title]
\definebtx
- [apa:list:title:manual]
- [apa:list:title]
+ [apa:\s!list:title:manual]
+ [apa:\s!list:title]
\definebtx
- [apa:list:title:techreport]
- [apa:list:title]
+ [apa:\s!list:title:techreport]
+ [apa:\s!list:title]
\definebtx
- [apa:list:title:unpublished]
- [apa:list:title]
+ [apa:\s!list:title:unpublished]
+ [apa:\s!list:title]
\definebtx
- [apa:list:title:patent]
- [apa:list:title]
+ [apa:\s!list:title:patent]
+ [apa:\s!list:title]
\definebtx
- [apa:list:title:electronic]
- [apa:list:title]
+ [apa:\s!list:title:electronic]
+ [apa:\s!list:title]
\definebtx
- [apa:list:title:music]
- [apa:list:title]
+ [apa:\s!list:title:music]
+ [apa:\s!list:title]
\definebtx
- [apa:list:title:film]
- [apa:list:title]
+ [apa:\s!list:title:film]
+ [apa:\s!list:title]
\definebtx
- [apa:list:title:other]
- [apa:list:title]
+ [apa:\s!list:title:other]
+ [apa:\s!list:title]
\definebtx
- [apa:list:title:misc]
- [apa:list:title]
+ [apa:\s!list:title:misc]
+ [apa:\s!list:title]
\definebtx
- [apa:list:title:literal]
- [apa:list:title]
+ [apa:\s!list:title:literal]
+ [apa:\s!list:title]
\definebtx
- [apa:list:type]
+ [apa:\s!list:type]
[\c!command=\Word]
-% We define [page] settings in the apa namespace, inheriting the root
-% settings, in order to eventually allow for modifications without touching
-% root.
-
-\definebtx
- [apa:\s!page]
- [\s!page]
-
-\definebtx
- [apa:\s!page:list]
- [apa:\s!page]
- [\c!pagecommand={\wordright}]
-
% Then define and set cite parameters.
\definebtx
- [apa:cite]
+ [apa:\s!cite]
[apa]
[\c!alternative=authoryear,
\c!otherstext={,\space\btxlabeltext{apa:others}},
@@ -271,60 +258,60 @@
\c!separator:names:4={\space\btxlabeltext{apa:and}\space}] % not \textampersand
\definebtx
- [apa:cite:author]
- [apa:cite]
+ [apa:\s!cite:author]
+ [apa:\s!cite]
\definebtx
- [apa:cite:authoryear]
- [apa:cite:author]
+ [apa:\s!cite:authoryear]
+ [apa:\s!cite:author]
[\c!left={(},
\c!right={)},
\c!inbetween={,\space}]
\definebtx
- [apa:cite:default]
- [apa:cite:authoryear]
+ [apa:\s!cite:default]
+ [apa:\s!cite:authoryear]
\definebtx
- [apa:cite:authoryears]
- [apa:cite:authoryear]
+ [apa:\s!cite:authoryears]
+ [apa:\s!cite:authoryear]
[\c!left=,
\c!right=,
\c!inbetween={\space}]
\definebtx
- [apa:cite:authornum]
- [apa:cite:author]
+ [apa:\s!cite:authornum]
+ [apa:\s!cite:author]
[\c!left={(},
\c!right={)}]
\definebtx
- [apa:cite:author:num] % todo
- [apa:cite:authornum]
+ [apa:\s!cite:author:num] % todo
+ [apa:\s!cite:authornum]
[\c!left={\space[},
\c!right={]}]
\definebtx
- [apa:cite:author:year] % todo
- [apa:cite]
+ [apa:\s!cite:author:year] % todo
+ [apa:\s!cite]
\definebtx
- [apa:cite:author:years] % todo
- [apa:cite:authoryears]
+ [apa:\s!cite:author:years] % todo
+ [apa:\s!cite:authoryears]
[\c!inbetween=,
\c!left={\space(},
\c!right={)}]
\definebtx
- [apa:cite:year]
- [apa:cite]
+ [apa:\s!cite:year]
+ [apa:\s!cite]
[\c!separator:2={,\space}, % :0 and :1 - between items of a list
\c!separator:3={,\space\btxlabeltext{apa:and}\space}, % not \textampersand
\c!separator:4={\space\btxlabeltext{apa:and}\space}] % not \textampersand
\definebtx
- [apa:cite:title]
- [apa:cite]
+ [apa:\s!cite:title]
+ [apa:\s!cite]
[\c!separator:2={,\space}, % :0 and :1 - between items of a list
\c!separator:3={,\space\btxlabeltext{apa:and}\space}, % not \textampersand
\c!separator:4={\space\btxlabeltext{apa:and}\space}, % not \textampersand
@@ -333,25 +320,25 @@
\c!style=\v!italic]
\definebtx
- [apa:cite:booktitle]
- [apa:cite:title]
+ [apa:\s!cite:booktitle]
+ [apa:\s!cite:title]
\definebtx
- [apa:cite:tag]
- [apa:cite]
+ [apa:\s!cite:tag]
+ [apa:\s!cite]
[\c!left={[},
\c!right={]}]
\definebtx
- [apa:cite:index]
- [apa:cite]
+ [apa:\s!cite:index]
+ [apa:\s!cite]
[\c!left={[},
\c!right={]}]
\definebtx
- [apa:cite:page]
- [apa:cite]
+ [apa:\s!cite:page]
+ [apa:\s!cite]
[\c!left=,
\c!right=,
\c!separator:2={,\space}, % :0 and :1 - between items of a list
@@ -359,36 +346,36 @@
\c!separator:4={\space\btxlabeltext{apa:and}\space}] % not \textampersand
\definebtx
- [apa:cite:pages]
- [apa:cite:page]
+ [apa:\s!cite:pages]
+ [apa:\s!cite:page]
\definebtx
- [apa:cite:keywords]
- [apa:cite]
+ [apa:\s!cite:keywords]
+ [apa:\s!cite]
\definebtx
- [apa:cite:short]
- [apa:cite]
+ [apa:\s!cite:short]
+ [apa:\s!cite]
[\c!left={[},
\c!right={]}]
\definebtx
- [apa:cite:category]
- [apa:cite]
+ [apa:\s!cite:category]
+ [apa:\s!cite]
\definebtx
- [apa:cite:url]
- [apa:cite]
+ [apa:\s!cite:url]
+ [apa:\s!cite]
[\c!left={[},
\c!right={]}]
\definebtx
- [apa:cite:doi]
- [apa:cite:url]
+ [apa:\s!cite:doi]
+ [apa:\s!cite:url]
\definebtx
- [apa:cite:num]
- [apa:cite]
+ [apa:\s!cite:num]
+ [apa:\s!cite]
[\c!left={[},
\c!right={]},
\c!separator:2={,}, % no space
@@ -396,8 +383,8 @@
\c!separator:4=\btxparameter{\c!separator:2}]
\definebtx
- [apa:cite:textnum]
- [apa:cite:num]
+ [apa:\s!cite:textnum]
+ [apa:\s!cite:num]
[\c!left={Ref.\nbsp},
\c!right=,
\c!separator:2={,\space},
@@ -405,8 +392,8 @@
\c!separator:4={\space\btxlabeltext{apa:and}\space}]
\definebtx
- [apa:cite:entry]
- [apa:cite]
+ [apa:\s!cite:entry]
+ [apa:\s!cite]
[\c!left=,
\c!right=,
\c!inbetween={\space},
diff --git a/tex/context/base/publ-imp-aps.mkvi b/tex/context/base/publ-imp-aps.mkvi
index 80df2867a..11104a7eb 100644
--- a/tex/context/base/publ-imp-aps.mkvi
+++ b/tex/context/base/publ-imp-aps.mkvi
@@ -48,58 +48,60 @@
\definebtxrendering
[aps]
[\c!specification=aps,
- \c!sorttype=\v!default]
+ \c!sorttype=\v!default,
+ \c!numbering=num]
\setupbtxlist
[aps]
[\c!alternative=b] % spaces
\definebtx
- [aps:list]
+ [aps:\s!list]
[aps]
[\c!authorconversion=normalshort]
\definebtx
- [aps:list:author]
- [aps:list]
+ [aps:\s!list:author]
+ [aps:\s!list]
\definebtx
- [aps:list:editor]
- [aps:list:author]
+ [aps:\s!list:editor]
+ [aps:\s!list:author]
\definebtx
- [aps:list:suffix]
- [aps:list]
+ [aps:\s!list:suffix]
+ [aps:\s!list]
\definebtx
- [aps:list:url]
- [aps:list]
+ [aps:\s!list:url]
+ [aps:\s!list]
\definebtx
- [aps:list:doi]
- [aps:list]
+ [aps:\s!list:doi]
+ [aps:\s!list]
\definebtx
- [aps:list:numbering]
- [aps:list]
+ [aps:\s!list:\s!page]
+ [aps:\s!list]
+ [\c!left={\space}]
\definebtx
- [aps:list:numbering:num]
- [aps:list:numbering]
- [left={[},
- right={]}]
+ [aps:\s!list:numbering]
+ [aps:\s!list]
\definebtx
- [aps:list:numbering:yes]
- [aps:list:numbering:num]
+ [aps:\s!list:numbering:num]
+ [aps:\s!list:numbering]
+ [left={[},
+ right={]}]
\definebtx
- [aps:list:numbering:short]
- [aps:list:numbering:num]
+ [aps:\s!list:numbering:short]
+ [aps:\s!list:numbering:num]
\definebtx
- [aps:list:numbering:tag]
- [aps:list:numbering:num]
+ [aps:\s!list:numbering:tag]
+ [aps:\s!list:numbering:num]
%D In order to be able to get journals expanded (or normalized or abbreviated) you need
%D to load a list:
@@ -111,214 +113,201 @@
% TODO
\definebtx
- [aps:list:journal]
+ [aps:\s!list:journal]
[\c!style=\v!italic]
%command=\btxexpandedjournal] % btxabbreviatedjournal
\definebtx
- [aps:list:volume]
+ [aps:\s!list:volume]
[\c!style=\v!bold]
\definebtx
- [aps:list:title]
+ [aps:\s!list:title]
[\c!style=\v!italic,
\c!command=\Word]
\definebtx
- [aps:list:title:article]
- [aps:list:title]
+ [aps:\s!list:title:article]
+ [aps:\s!list:title]
[\c!style=] % journal is set in italics
\definebtx
- [aps:list:title:magazine]
- [aps:list:title]
+ [aps:\s!list:title:magazine]
+ [aps:\s!list:title]
\definebtx
- [aps:list:title:newspaper]
- [aps:list:title]
+ [aps:\s!list:title:newspaper]
+ [aps:\s!list:title]
\definebtx
- [aps:list:title:periodical]
- [aps:list:title]
+ [aps:\s!list:title:periodical]
+ [aps:\s!list:title]
\definebtx
- [aps:list:title:standard]
- [aps:list:title]
+ [aps:\s!list:title:standard]
+ [aps:\s!list:title]
\definebtx
- [aps:list:title:book]
- [aps:list:title]
+ [aps:\s!list:title:book]
+ [aps:\s!list:title]
\definebtx
- [aps:list:title:inbook]
- [aps:list:title]
+ [aps:\s!list:title:inbook]
+ [aps:\s!list:title]
\definebtx
- [aps:list:title:incollection]
- [aps:list:title]
+ [aps:\s!list:title:incollection]
+ [aps:\s!list:title]
[\c!style=] % booktitle is set in italics
\definebtx
- [aps:list:title:proceedings]
- [aps:list:title]
+ [aps:\s!list:title:proceedings]
+ [aps:\s!list:title]
\definebtx
- [aps:list:title:inproceedings]
- [aps:list:title]
+ [aps:\s!list:title:inproceedings]
+ [aps:\s!list:title]
[\c!style=] % booktitle is set in italics
\definebtx
- [aps:list:title:conference]
- [aps:list:title]
+ [aps:\s!list:title:conference]
+ [aps:\s!list:title]
[\c!style=] % booktitle is set in italics
\definebtx
- [aps:list:title:thesis]
- [aps:list:title]
+ [aps:\s!list:title:thesis]
+ [aps:\s!list:title]
\definebtx
- [aps:list:title:phdthesis]
- [aps:list:title]
+ [aps:\s!list:title:phdthesis]
+ [aps:\s!list:title]
\definebtx
- [aps:list:title:mastersthesis]
- [aps:list:title]
+ [aps:\s!list:title:mastersthesis]
+ [aps:\s!list:title]
\definebtx
- [aps:list:title:booklet]
- [aps:list:title]
+ [aps:\s!list:title:booklet]
+ [aps:\s!list:title]
\definebtx
- [aps:list:title:manual]
- [aps:list:title]
+ [aps:\s!list:title:manual]
+ [aps:\s!list:title]
\definebtx
- [aps:list:title:techreport]
- [aps:list:title]
+ [aps:\s!list:title:techreport]
+ [aps:\s!list:title]
\definebtx
- [aps:list:title:unpublished]
- [aps:list:title]
+ [aps:\s!list:title:unpublished]
+ [aps:\s!list:title]
\definebtx
- [aps:list:title:patent]
- [aps:list:title]
+ [aps:\s!list:title:patent]
+ [aps:\s!list:title]
\definebtx
- [aps:list:title:electronic]
- [aps:list:title]
+ [aps:\s!list:title:electronic]
+ [aps:\s!list:title]
\definebtx
- [aps:list:title:other]
- [aps:list:title]
+ [aps:\s!list:title:other]
+ [aps:\s!list:title]
\definebtx
- [aps:list:title:misc]
- [aps:list:title]
+ [aps:\s!list:title:misc]
+ [aps:\s!list:title]
\definebtx
- [aps:list:title:literal]
- [aps:list:title]
+ [aps:\s!list:title:literal]
+ [aps:\s!list:title]
\definebtx
- [aps:list:type]
+ [aps:\s!list:type]
[\c!command=\Word]
-% We define [page] settings in the aps namespace, inheriting the root
-% settings, in order to eventually allow for modifications without touching
-% root.
-
-\definebtx
- [aps:\s!page]
- [\s!page]
-
-\definebtx
- [aps:\s!page:list]
- [aps:\s!page]
- %[\c!pagecommand={\wordright}]
-
% Then define and set all cite parameters
\definebtx
- [aps:cite]
+ [aps:\s!cite]
[aps]
[\c!authorconversion=\v!name,
\c!compress=\v!yes,
\c!sorttype=normal]
\definebtx
- [aps:cite:author]
- [aps:cite]
+ [aps:\s!cite:author]
+ [aps:\s!cite]
\definebtx
- [aps:cite:authoryear]
- [aps:cite:author]
+ [aps:\s!cite:authoryear]
+ [aps:\s!cite:author]
[\c!left={(},
\c!right={)},
\c!inbetween={,\space}]
\definebtx
- [aps:cite:authoryears]
- [aps:cite:authoryear]
+ [aps:\s!cite:authoryears]
+ [aps:\s!cite:authoryear]
[\c!left=,
\c!right=,
\c!inbetween={\space}]
\definebtx
- [aps:cite:authornum]
- [aps:cite:author]
+ [aps:\s!cite:authornum]
+ [aps:\s!cite:author]
[\c!left={(},
\c!right={)}]
\definebtx
- [aps:cite:author:num] % todo
- [aps:cite:authornum]
+ [aps:\s!cite:author:num] % todo
+ [aps:\s!cite:authornum]
[\c!left={\space[},
\c!right={]}]
\definebtx
- [aps:cite:author:year] % todo
- [aps:cite:authoryear]
+ [aps:\s!cite:author:year] % todo
+ [aps:\s!cite:authoryear]
[\c!left=,
\c!right=]
\definebtx
- [aps:cite:author:years] % todo
- [aps:cite:authoryears]
+ [aps:\s!cite:author:years] % todo
+ [aps:\s!cite:authoryears]
[\c!inbetween=,
\c!left={\space(},
\c!right={)}]
\definebtx
- [aps:cite:year]
- [aps:cite]
+ [aps:\s!cite:year]
+ [aps:\s!cite]
\definebtx
- [aps:cite:title]
- [aps:cite]
+ [aps:\s!cite:title]
+ [aps:\s!cite]
[\c!command={\language[\currentbtxlanguage]}, % BAH
\c!sorttype=none,
\c!style=\v!italic]
\definebtx
- [aps:cite:booktitle]
- [aps:cite:title]
+ [aps:\s!cite:booktitle]
+ [aps:\s!cite:title]
\definebtx
- [aps:cite:tag]
- [aps:cite]
+ [aps:\s!cite:tag]
+ [aps:\s!cite]
[\c!left={[},
\c!right={]}]
\definebtx
- [aps:cite:index]
- [aps:cite]
+ [aps:\s!cite:index]
+ [aps:\s!cite]
[\c!left={[},
\c!right={]}]
\definebtx
- [aps:cite:page]
- [aps:cite]
+ [aps:\s!cite:page]
+ [aps:\s!cite]
[\c!left=,
\c!right=,
\c!separator:2={,\space}, % :0 and :1 - between items of a list
@@ -326,38 +315,38 @@
\c!separator:4= {\space\btxlabeltext{aps:and}\space}] % not \textampersand
\definebtx
- [aps:cite:pages]
- [aps:cite:page]
+ [aps:\s!cite:pages]
+ [aps:\s!cite:page]
\definebtx
- [aps:cite:keywords]
- [aps:cite]
+ [aps:\s!cite:keywords]
+ [aps:\s!cite]
[\c!left={(},
\c!right={)}]
\definebtx
- [aps:cite:short]
- [aps:cite]
+ [aps:\s!cite:short]
+ [aps:\s!cite]
[\c!left={[},
\c!right={]}]
\definebtx
- [aps:cite:category]
- [aps:cite]
+ [aps:\s!cite:category]
+ [aps:\s!cite]
\definebtx
- [aps:cite:url]
- [aps:cite]
+ [aps:\s!cite:url]
+ [aps:\s!cite]
[\c!left={[},
\c!right={]}]
\definebtx
- [aps:cite:doi]
- [aps:cite:url]
+ [aps:\s!cite:doi]
+ [aps:\s!cite:url]
\definebtx
- [aps:cite:num]
- [aps:cite]
+ [aps:\s!cite:num]
+ [aps:\s!cite]
[\c!left={[},
\c!right={]},
%\c!left=, % TODO: PRB uses superscript references...
@@ -368,12 +357,12 @@
\c!separator:4=\btxparameter{\c!separator:2}]
\definebtx
- [aps:cite:default]
- [aps:cite:num]
+ [aps:\s!cite:default]
+ [aps:\s!cite:num]
\definebtx
- [aps:cite:textnum]
- [aps:cite:num]
+ [aps:\s!cite:textnum]
+ [aps:\s!cite:num]
[\c!left={Ref.\nbsp},
\c!command=,
\c!separator:2={,\space},
@@ -381,8 +370,8 @@
\c!separator:4={\space\btxlabeltext{aps:and}\space}]
\definebtx
- [aps:cite:entry]
- [aps:cite]
+ [aps:\s!cite:entry]
+ [aps:\s!cite]
[\c!left=,
\c!right=,
\c!inbetween={\space},
diff --git a/tex/context/base/publ-imp-author.mkvi b/tex/context/base/publ-imp-author.mkvi
index 7f2c35fdd..7529c7aa9 100644
--- a/tex/context/base/publ-imp-author.mkvi
+++ b/tex/context/base/publ-imp-author.mkvi
@@ -32,9 +32,9 @@
\startsetups \s!btx:\s!cite:\s!author:concat
\ifcase\currentbtxoverflow
\btxparameter{\c!separator:names:\number\currentbtxconcat}
- \else
- %\btxparameter{\c!separator:names:2}
- \fi
+ \else\ifnum\currentbtxauthorindex>\plusone
+ \btxparameter{\c!separator:names:2}
+ \fi\fi
\stopsetups
\startsetups \s!btx:\s!cite:\s!author:others
diff --git a/tex/context/base/publ-imp-default.mkvi b/tex/context/base/publ-imp-default.mkvi
index eead8a324..2fc58ef99 100644
--- a/tex/context/base/publ-imp-default.mkvi
+++ b/tex/context/base/publ-imp-default.mkvi
@@ -17,15 +17,16 @@
\startbtxrenderingdefinitions[\s!default]
-% \definebtx [\s!default:\s!page ] [\s!page]
-% \definebtx [\s!default:\s!cite ] [\s!cite]
-% \definebtx [\s!default:\s!list ] [\s!list]
-% \definebtx [\s!default:\s!author] [\s!author]
+%?? \definebtx [\s!default:\s!page ] [\s!page]
+%?? \definebtx [\s!default:\s!cite ] [\s!cite]
+%?? \definebtx [\s!default:\s!list ] [\s!list]
+%?? \definebtx [\s!default:\s!author] [\s!author]
\definebtxrendering
[\s!default]
[\c!specification=\s!default,
- \c!sorttype=\v!default]
+ \c!sorttype=\v!default,
+ \c!numbering=num]
\definebtx
[\s!default]
@@ -50,31 +51,20 @@
\c!sorttype=normal,
\c!authorconversion=\v!name]
-% We define [page] settings in the default namespace, inheriting the root
-% settings, in order to eventually allow for modifications without touching
-% root.
-
-\definebtx
- [\s!default:\s!page]
- [\s!page]
-
-\definebtx
- [\s!default:\s!page:list]
- [\s!default:\s!page]
-
% List variants, some having specific settings:
\definebtx
- [\s!default:\s!list:numbering]
+ [\s!default:\s!list:\s!page]
[\s!default:\s!list]
+ [\c!left={\space}]
\definebtx
- [\s!default:\s!list:numbering:num]
[\s!default:\s!list:numbering]
+ [\s!default:\s!list]
\definebtx
- [\s!default:\s!list:numbering:yes]
[\s!default:\s!list:numbering:num]
+ [\s!default:\s!list:numbering]
\definebtx
[\s!default:\s!list:numbering:short]
diff --git a/tex/context/base/publ-ini.lua b/tex/context/base/publ-ini.lua
index 5720c193a..04a3f1cc1 100644
--- a/tex/context/base/publ-ini.lua
+++ b/tex/context/base/publ-ini.lua
@@ -115,6 +115,7 @@ local ctx_gobbletwoarguments = context.gobbletwoarguments
local ctx_btxdirectlink = context.btxdirectlink
local ctx_btxhandlelistentry = context.btxhandlelistentry
local ctx_btxhandlelisttextentry = context.btxhandlelisttextentry
+local ctx_btxhandlecombientry = context.btxhandlecombientry
local ctx_btxchecklistentry = context.btxchecklistentry
local ctx_btxchecklistcombi = context.btxchecklistcombi
@@ -154,6 +155,8 @@ local ctx_btxstartsubcite = context.btxstartsubcite
local ctx_btxstopsubcite = context.btxstopsubcite
local ctx_btxstartlistentry = context.btxstartlistentry
local ctx_btxstoplistentry = context.btxstoplistentry
+local ctx_btxstartcombientry = context.btxstartcombientry
+local ctx_btxstopcombientry = context.btxstopcombientry
local ctx_btxlistsetup = context.btxlistsetup
local ctx_btxflushauthor = context.btxflushauthor
local ctx_btxsetnoflistentries = context.btxsetnoflistentries
@@ -340,10 +343,10 @@ do
local initialize = nil
initialize = function(t)
- usedentries = allocate { }
- citetolist = allocate { }
- listtocite = allocate { }
- listtolist = allocate { }
+ usedentries = allocate { }
+ citetolist = allocate { }
+ listtocite = allocate { }
+ listtolist = allocate { }
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
@@ -477,15 +480,16 @@ local findallused do
local finder = publications.finder
findallused = function(dataset,reference,internal)
- local current = datasets[dataset]
- local finder = publications.finder -- for the moment, not yet in all betas
- local find = finder and finder(current,reference)
- local tags = not find and settings_to_array(reference)
- local todo = { }
- local okay = { } -- only if mark
- local set = usedentries[dataset]
- local valid = current.luadata
- local ordered = current.ordered
+ local current = datasets[dataset]
+ local finder = publications.finder -- for the moment, not yet in all betas
+ local find = finder and finder(current,reference)
+ local tags = not find and settings_to_array(reference)
+ local todo = { }
+ local okay = { } -- only if mark
+ local set = usedentries[dataset]
+ local valid = current.luadata
+ local ordered = current.ordered
+ local combined = current.combined
if set then
local registered = { }
local function register(tag)
@@ -495,6 +499,16 @@ local findallused do
registered[tag] = true
end
local entry = set[tag]
+ if not entry then
+ local parent = combined[tag]
+ if parent then
+ entry = set[parent]
+ end
+ if entry then
+ report("using reference of parent %a for %a",parent,tag)
+ tag = parent
+ end
+ end
if entry then
-- only once in a list but at some point we can have more (if we
-- decide to duplicate)
@@ -533,22 +547,22 @@ local findallused do
okay[#okay+1] = entry
end
todo[tag] = true
+ return tag
end
if reference == "*" then
tags = { }
for i=1,#ordered do
local tag = ordered[i].tag
- register(tag)
+ tag = register(tag)
tags[#tags+1] = tag
end
elseif find then
--- print("case 1.1")
tags = { }
for i=1,#ordered do
local entry = ordered[i]
if find(entry) then
local tag = entry.tag
- register(tag)
+ tag = register(tag)
tags[#tags+1] = tag
end
end
@@ -557,11 +571,11 @@ local findallused do
reported[reference] = true
end
else
--- print("case 1.2")
for i=1,#tags do
- local tag = tags[i]
+ local tag = tags[i]
if valid[tag] then
- register(tag)
+ tag = register(tag)
+ tags[i] = tag
elseif not reported[tag] then
reported[tag] = true
report_cite("non-existent entry %a in %a",tag,dataset)
@@ -570,12 +584,15 @@ local findallused do
end
else
if find then
--- print("case 2.1")
tags = { }
for i=1,#ordered do
local entry = ordered[i]
if find(entry) then
- local tag = entry.tag
+ local tag = entry.tag
+ local parent = combined[tag]
+ if parent then
+ tag = parent
+ end
tags[#tags+1] = tag
todo[tag] = true
end
@@ -585,9 +602,13 @@ local findallused do
reported[reference] = true
end
else
--- print("case 2.2")
for i=1,#tags do
- local tag = tags[i]
+ local tag = tags[i]
+ local parent = combined[tag]
+ if parent then
+ tag = parent
+ tags[i] = tag
+ end
if valid[tag] then
todo[tag] = true
elseif not reported[tag] then
@@ -1705,6 +1726,7 @@ do
if u then -- better check on metadata.kind == "btx"
local set = u.btxset or v_default
if set == dataset then
+-- inspect(structures.references.internals[tonumber(u.btxint)])
local tag = u.btxref
if not tag then
-- problem
@@ -1803,6 +1825,7 @@ do
local current = datasets[dataset]
local luadata = current.luadata
local details = current.details
+ local combined = current.combined
local newlist = { }
local lastreferencenumber = groups[group] -- current.lastreferencenumber or 0
for i=1,#list do
@@ -1824,31 +1847,55 @@ do
else
list = newlist
end
+-- local combined = { }
+ local newlist = { }
+-- for i=1,#list do
+-- local userdata = list[i][4]
+-- if userdata then
+-- local com = userdata.btxcom
+-- if com then
+-- com = settings_to_array(com)
+-- for i=1,#com do
+-- local c = com[i]
+-- if not combined[c] then
+-- report("ignoring list entry for tag %a due to combined usage in %a ",c,tag)
+-- combined[c] = true
+-- end
+-- end
+-- end
+-- end
+-- end
+ local tagtolistindex = { }
+ rendering.tagtolistindex = tagtolistindex
for i=1,#list do
local li = list[i]
local tag = li[1]
- local entry = luadata[tag]
- if entry then
- local detail = details[tag]
- if detail then
- local referencenumber = detail.referencenumber
- if not referencenumber then
- lastreferencenumber = lastreferencenumber + 1
- referencenumber = lastreferencenumber
- detail.referencenumber = lastreferencenumber
+ if not combined[tag] then
+ local entry = luadata[tag]
+ if entry then
+ local detail = details[tag]
+ if detail then
+ local referencenumber = detail.referencenumber
+ if not referencenumber then
+ lastreferencenumber = lastreferencenumber + 1
+ referencenumber = lastreferencenumber
+ detail.referencenumber = lastreferencenumber
+ end
+ li[3] = referencenumber
+ else
+ report("missing details for tag %a in dataset %a (enhanced: %s)",tag,dataset,current.enhanced and "yes" or "no")
+ -- weird, this shouldn't happen .. all have a detail
+ lastreferencenumber = lastreferencenumber + 1
+ details[tag] = { referencenumber = lastreferencenumber }
+ li[3] = lastreferencenumber
end
- li[3] = referencenumber
- else
- report("missing details for tag %a in dataset %a (enhanced: %s)",tag,dataset,current.enhanced and "yes" or "no")
- -- weird, this shouldn't happen .. all have a detail
- lastreferencenumber = lastreferencenumber + 1
- details[tag] = { referencenumber = lastreferencenumber }
- li[3] = lastreferencenumber
+ tagtolistindex[tag] = i
end
+ newlist[#newlist+1] = li
end
end
groups[group] = lastreferencenumber
- rendering.list = list
+ rendering.list = newlist
end
function lists.fetchentries(dataset)
@@ -2002,14 +2049,56 @@ do
end
end
+ function lists.combiinlist(dataset,tag)
+ local rendering = renderings[dataset]
+ local list = rendering.list
+ local toindex = rendering.tagtolistindex
+ return toindex and toindex[tag]
+ end
+
+ function lists.flushcombi(dataset,tag)
+ local rendering = renderings[dataset]
+ local list = rendering.list
+ local toindex = rendering.tagtolistindex
+ local listindex = toindex and toindex[tag]
+ if listindex then
+ local li = list[listindex]
+ if li then
+ local data = datasets[dataset]
+ local luadata = data.luadata
+ local details = data.details
+ local tag = li[1]
+ local listindex = li[2]
+ local n = li[3]
+ local entry = luadata[tag]
+ local detail = details[tag]
+ ctx_btxstartcombientry()
+ ctx_btxsetcurrentlistindex(listindex)
+ ctx_btxsetcategory(entry.category or "unknown")
+ ctx_btxsettag(tag)
+ ctx_btxsetnumber(n)
+ local language = entry.language
+ if language then
+ ctx_btxsetlanguage(language)
+ end
+ local authorsuffix = detail.authorsuffix
+ if authorsuffix then
+ ctx_btxsetsuffix(authorsuffix)
+ end
+ ctx_btxhandlecombientry()
+ ctx_btxstopcombientry()
+ end
+ end
+ end
+
function lists.flushentry(dataset,i,textmode)
local rendering = renderings[dataset]
local list = rendering.list
- local data = datasets[dataset]
- local luadata = data.luadata
- local details = data.details
local li = list[i]
if li then
+ local data = datasets[dataset]
+ local luadata = data.luadata
+ local details = data.details
local tag = li[1]
local listindex = li[2]
local n = li[3]
@@ -2144,11 +2233,23 @@ do
}
implement {
+ name = "btxflushlistcombi",
+ actions = lists.flushcombi,
+ arguments = { "string", "string" }
+ }
+
+ implement {
name = "btxdoifelsesameasprevious",
actions = { lists.sameasprevious, ctx_doifelse },
arguments = { "string", "integer", "string", "integer", "string" }
}
+ implement {
+ name = "btxdoifelsecombiinlist",
+ actions = { lists.combiinlist, ctx_doifelse },
+ arguments = { "string", "string" }
+ }
+
end
do
@@ -2404,6 +2505,7 @@ do
local luadata = datasets[dataset].luadata
for i=1,#found do
local entry = found[i]
+-- inspect(entry)
local tag = entry.userdata.btxref
local ldata = luadata[tag]
local data = {
@@ -2411,6 +2513,7 @@ do
language = ldata.language,
dataset = dataset,
tag = tag,
+ combis = entry.userdata.btxcom,
-- luadata = ldata,
}
setter(data,dataset,tag,entry)
@@ -2457,6 +2560,10 @@ do
if language then
ctx_btxsetlanguage(language)
end
+local combis = entry.combis
+if combis then
+ ctx_btxsetcombis(combis)
+end
if not getter(entry,last,nil,specification) then
ctx_btxsetfirst("") -- (f_missing(tag))
end
diff --git a/tex/context/base/publ-ini.mkiv b/tex/context/base/publ-ini.mkiv
index a00712b10..6d57a233d 100644
--- a/tex/context/base/publ-ini.mkiv
+++ b/tex/context/base/publ-ini.mkiv
@@ -73,6 +73,7 @@
\def\s!btxbtx {btxbtx}
\def\s!btxspc {btxspc}
\def\s!btxlst {btxlst}
+\def\s!btxcom {btxcom}
\definelabelclass[btxlabel][2]
@@ -622,7 +623,7 @@
\begingroup
\setbtxlist % probably already set
\btx_reset_page
- \setbtxparameterset\s!page\s!list
+ \setbtxparameterset\s!list\s!page
\btxparameter\c!pagecommand
{\usebtxstyleandcolor\c!style\c!color
\btxparameter\c!pageleft
@@ -665,12 +666,15 @@
\publ_fast_setup\plusfour\s!list\currentbtxcategory
\removeunwantedspaces
\endgroup
- \ifconditional\c_btx_list_pages
- \btx_entry_inject_pages
- \fi
\ifx\currentbtxcombis\empty \else
\btxrenderingparameter\c!separator
- \processcommacommand[\currentbtxcombis]\btx_entry_inject_combi
+ % maybe move this loop to lua
+ \begingroup
+ \processcommacommand[\currentbtxcombis]\btx_entry_inject_combi
+ \endgroup
+ \fi
+ \ifconditional\c_btx_list_pages
+ \btx_entry_inject_pages
\fi
\ifconditional\c_btx_list_texts
\currentbtxafter
@@ -689,6 +693,15 @@
\ctxcommand{showbtxentry("\currentbtxdataset","\currentbtxtag")}
\fi\fi}
+\unexpanded\def\btxstartcombientry
+ {\begingroup}
+
+\unexpanded\def\btxstopcombientry
+ {\endgroup}
+
+\unexpanded\def\btxhandlecombientry
+ {\btx_reference_indeed}
+
\def\btx_entry_inject_combi#1%
{\begingroup
\def\currentbtxtag{#1}%
@@ -697,6 +710,18 @@
\removeunwantedspaces
\endgroup}
+% uses reference when set
+
+% \def\btx_entry_inject_combi#1%
+% {\begingroup
+% \def\currentbtxtag{#1}%
+% \ignorespaces
+% \btxdoifelsecombiinlist\currentbtxdataset\currentbtxtag
+% {\clf_btxflushlistcombi{\currentbtxdataset}{\currentbtxtag}}
+% {\publ_fast_setup\plusfour\s!list\currentbtxcategory}%
+% \removeunwantedspaces
+% \endgroup}
+
\unexpanded\def\completebtxrendering{\dodoubleempty\publ_place_list_complete}
\unexpanded\def\placebtxrendering {\dodoubleempty\publ_place_list_standard}
@@ -741,8 +766,12 @@
\unexpanded\def\btxdoifelsesameasprevious
{\btxdoifelsesameaspreviouschecked\v!doublesided}
+\unexpanded\def\btxdoifelsecombiinlist#1#2%
+ {\clf_btxdoifelsecombiinlist{#1}{#2}}
+
\let\btxdoifsameaspreviouscheckedelse\btxdoifelsesameaspreviouschecked
\let\btxdoifsameaspreviouselse \btxdoifelsesameasprevious
+\let\btxdoifcombiinlistelse \btxdoifelsecombiinlist
\def\publ_place_list_indeed#1[#2][#3]%
{\begingroup
@@ -952,6 +981,7 @@
\s!btxref=\currentbtxtag,%
\s!btxspc=\currentbtxspecification,%
\s!btxlst=\number\c_btx_list_reference,% check if needed
+ %\ifx\currentbtxcombis\empty\else\s!btxcom={\currentbtxcombis},\fi%
\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}%
@@ -984,6 +1014,7 @@
[\c!type=\s!btx]% \c!location=\v!none
[\ifx\currentbtxdataset\v!default\else\s!btxset=\currentbtxdataset,\fi%
\s!btxref=\currentbtxtag,%
+ %\ifx\currentbtxcombis\empty\else\s!btxcom={\currentbtxcombis},\fi%
\ifx\currentbtxbefore\empty\else\s!btxbtx={\currentbtxbefore},\fi%
\ifx\currentbtxafter \empty\else\s!btxatx={\currentbtxafter },\fi%
\s!btxint=\number\currentbtxbacklink
@@ -1003,6 +1034,7 @@
\ifx\currentbtxnumbering\v!yes
\def\currentbtxnumbering{num}% convenient alias
\letbtxrenderingparameter\c!numbering\currentbtxnumbering
+ \letlistparameter\c!headnumber\v!always
\else\ifx\currentbtxnumbering\v!no
\letlistparameter\c!headnumber\v!no
\let\currentbtxnumbering\empty
diff --git a/tex/context/base/publ-sor.lua b/tex/context/base/publ-sor.lua
index e587d0ee9..ba353a9bc 100644
--- a/tex/context/base/publ-sor.lua
+++ b/tex/context/base/publ-sor.lua
@@ -27,6 +27,8 @@ local v_default = variables.default
local v_reference = variables.reference
local v_dataset = variables.dataset
local v_list = variables.list
+local v_index = variables.index
+local v_cite = variables.cite
local v_used = variables.used
local report = logs.reporter("publications","sorters")
@@ -344,6 +346,8 @@ end
sorters[v_default] = sorters[v_list]
sorters[""] = sorters[v_list]
+sorters[v_cite] = sorters[v_list]
+sorters[v_index] = sorters[v_dataset]
local function anything(dataset,rendering,list,sorttype)
local valid = sortsequence(dataset,list,sorttype) -- field order
diff --git a/tex/context/base/status-files.pdf b/tex/context/base/status-files.pdf
index 31873fcff..a1f5582c4 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 3eee87cb2..7903adbdc 100644
--- a/tex/context/base/status-lua.pdf
+++ b/tex/context/base/status-lua.pdf
Binary files differ
diff --git a/tex/generic/context/luatex/luatex-fonts-merged.lua b/tex/generic/context/luatex/luatex-fonts-merged.lua
index 006db5ad7..191f3f7b9 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 : 05/09/15 13:41:44
+-- merge date : 05/10/15 20:08:09
do -- begin closure to overcome local limits and interference