summaryrefslogtreecommitdiff
path: root/tex
diff options
context:
space:
mode:
Diffstat (limited to 'tex')
-rw-r--r--tex/context/base/cont-new.mkiv2
-rw-r--r--tex/context/base/context-version.pdfbin4380 -> 4386 bytes
-rw-r--r--tex/context/base/context.mkiv2
-rw-r--r--tex/context/base/publ-ini.lua78
-rw-r--r--tex/context/base/publ-ini.mkiv65
-rw-r--r--tex/context/base/status-files.pdfbin24739 -> 24717 bytes
-rw-r--r--tex/context/base/status-lua.pdfbin333380 -> 333364 bytes
-rw-r--r--tex/generic/context/luatex/luatex-fonts-merged.lua2
8 files changed, 114 insertions, 35 deletions
diff --git a/tex/context/base/cont-new.mkiv b/tex/context/base/cont-new.mkiv
index 7b6551c57..5a72e9074 100644
--- a/tex/context/base/cont-new.mkiv
+++ b/tex/context/base/cont-new.mkiv
@@ -11,7 +11,7 @@
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
%C details.
-\newcontextversion{2014.10.19 21:08}
+\newcontextversion{2014.10.20 10:52}
%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 1bf53a033..ec13349e1 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 cfcae05ad..3482313cf 100644
--- a/tex/context/base/context.mkiv
+++ b/tex/context/base/context.mkiv
@@ -28,7 +28,7 @@
%D up and the dependencies are more consistent.
\edef\contextformat {\jobname}
-\edef\contextversion{2014.10.19 21:08}
+\edef\contextversion{2014.10.20 10:52}
\edef\contextkind {beta}
%D For those who want to use this:
diff --git a/tex/context/base/publ-ini.lua b/tex/context/base/publ-ini.lua
index 53735dd5b..82510960f 100644
--- a/tex/context/base/publ-ini.lua
+++ b/tex/context/base/publ-ini.lua
@@ -101,6 +101,7 @@ local ctx_btxcitevariantparameter = context.btxcitevariantparameter
local ctx_btxlistvariantparameter = context.btxlistvariantparameter
local ctx_btxdirectlink = context.btxdirectlink
local ctx_btxhandlelistentry = context.btxhandlelistentry
+local ctx_btxhandlelisttextentry = context.btxhandlelisttextentry
local ctx_btxchecklistentry = context.btxchecklistentry
local ctx_btxchecklistcombi = context.btxchecklistcombi
local ctx_btxsetcitereference = context.btxsetcitereference
@@ -133,6 +134,9 @@ local ctx_btxstartsubcite = context.btxstartsubcite
local ctx_btxstopsubcite = context.btxstopsubcite
local ctx_btxlistsetup = context.btxlistsetup
+local optionalspace = lpeg.patterns.whitespace^0
+local prefixsplitter = optionalspace * lpeg.splitat(optionalspace * P("::") * optionalspace)
+
statistics.register("publications load time", function()
local publicationsstats = publications.statistics
local nofbytes = publicationsstats.nofbytes
@@ -1356,7 +1360,7 @@ lists.sorters = {
-- for determining width
-local lastnumber = 0 -- document wide
+local lastreferencenumber = 0 -- document wide
function lists.prepareentries(dataset)
local rendering = renderings[dataset]
@@ -1382,19 +1386,19 @@ function lists.prepareentries(dataset)
end
local detail = details[tag]
if detail then
- local number = detail.number
- if not number then
- lastnumber = lastnumber + 1
- number = lastnumber
- detail.number = lastnumber
+ local referencenumber = detail.referencenumber
+ if not referencenumber then
+ lastreferencenumber = lastreferencenumber + 1
+ referencenumber = lastreferencenumber
+ detail.referencenumber = lastreferencenumber
end
- li[3] = number
+ 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
- lastnumber = lastnumber + 1
- details[tag] = { number = lastnumber }
- li[3] = lastnumber
+ lastreferencenumber = lastreferencenumber + 1
+ details[tag] = { referencenumber = lastreferencenumber }
+ li[3] = lastreferencenumber
end
end
end
@@ -1414,7 +1418,7 @@ end
-- for rendering
-function lists.flushentries(dataset)
+function lists.flushentries(dataset,textmode)
local rendering = renderings[dataset]
local list = rendering.list
local luadata = datasets[dataset].luadata
@@ -1457,10 +1461,56 @@ function lists.flushentries(dataset)
end
end
rendering.userdata = userdata
- ctx_btxhandlelistentry()
+ if textmode then
+ ctx_btxhandlelisttextentry()
+ else
+ ctx_btxhandlelistentry()
+ end
end
end
+function lists.flushentry(specification)
+ local tag = specification.reference
+ if not tag or tag == "" then
+ return
+ end
+ --
+ local dataset = specification.dataset or "" -- standard
+ -- local mark = specification.markentry ~= false
+ -- local internal = specification.internal or ""
+ --
+ local prefix, rest = lpegmatch(prefixsplitter,tag)
+ if rest then
+ dataset = prefix
+ else
+ rest = tag
+ end
+ --
+ -- if trace_cite then
+ -- report_cite("mark, dataset: %s, tags: %s",dataset or "-",rest)
+ -- end
+ --
+ local reference = publications.parenttag(dataset,rest)
+ local found, todo, list = findallused(dataset,reference,internal)
+ local valid = { }
+ if list and #list > 0 then
+ local luadata = datasets[dataset].luadata
+ for i=1,#list do
+ local tag = list[i]
+ if luadata[tag] then
+ valid[#valid+1] = { tag, 0, 0 } -- datasets[dataset].details.number
+ end
+ end
+ end
+ if #valid > 0 then
+ local rendering = renderings[dataset]
+ rendering.list = valid
+ lists.flushentries(dataset,true)
+ else
+ ctx_btxmissing(tag)
+ end
+end
+
local function getuserdata(dataset,key)
local rendering = renderings[dataset]
if rendering then
@@ -1506,13 +1556,11 @@ commands.btxcollectlistentries = lists.collectentries
commands.btxpreparelistentries = lists.prepareentries
commands.btxfetchlistentries = lists.fetchentries
commands.btxflushlistentries = lists.flushentries
+commands.btxflushlistentry = lists.flushentry
local citevariants = { }
publications.citevariants = citevariants
-local optionalspace = lpeg.patterns.whitespace^0
-local prefixsplitter = optionalspace * lpeg.splitat(optionalspace * P("::") * optionalspace)
-
function commands.btxhandlecite(specification)
local tag = specification.reference
if not tag or tag == "" then
diff --git a/tex/context/base/publ-ini.mkiv b/tex/context/base/publ-ini.mkiv
index 92faf7076..0c08c73b1 100644
--- a/tex/context/base/publ-ini.mkiv
+++ b/tex/context/base/publ-ini.mkiv
@@ -909,10 +909,15 @@
\let\p_publ_cite_lefttext \empty
\let\p_publ_cite_righttext\empty
-\unexpanded\def\btxcite
- {\dontleavehmode
- \begingroup
- \strictdoifnextoptionalelse\publ_cite_tags_options\publ_cite_tags_indeed}
+\let\currentbtxciteuservariables\empty
+
+% \unexpanded\def\btxcite
+% {\dontleavehmode
+% \begingroup
+% \strictdoifnextoptionalelse\publ_cite_tags_options\publ_cite_tags_indeed}
+%
+% \unexpanded\def\publ_cite_tags_options[#1]%
+% {\strictdoifnextoptionalelse{\publ_cite_tags_options_indeed{#1}}{\publ_cite_tags_indeed{#1}}}
\unexpanded\def\publ_cite_tags_indeed#1%
{\letinteractionparameter\c!style\empty
@@ -922,13 +927,6 @@
\publ_cite_variant
\endgroup}
-\let\publ_citation_tags_indeed\publ_cite_tags_indeed
-
-\let\currentbtxciteuservariables\empty
-
-\unexpanded\def\publ_cite_tags_options[#1]%
- {\strictdoifnextoptionalelse{\publ_cite_tags_options_indeed{#1}}{\publ_cite_tags_indeed{#1}}}
-
\unexpanded\def\publ_cite_tags_options_indeed#1%
{\doifassignmentelse{#1}\publ_cite_tags_settings_indeed\publ_cite_tags_variants_indeed{#1}}
@@ -1030,7 +1028,7 @@
\publ_cite_tags_indeed{#1}%
\fi}
-\unexpanded\def\btxnocite
+\unexpanded\def\btxnocitation
{\dosingleempty\publ_cite_no}
\unexpanded\def\publ_cite_no[#1]%
@@ -1044,15 +1042,15 @@
\fi}
\unexpanded\def\btxmissing#1%
- {{\tttf<#1>}}
+ {\dontleavehmode{\tttf<#1>}}
%D Compatibility:
-\let\cite \btxcite
+\let\cite \btxcitation
\let\citation \btxcitation
-\let\nocite \btxnocite
-\let\nocitation \btxnocite
-\let\usepublication\btxnocite
+\let\nocite \btxnocitation
+\let\nocitation \btxnocitation
+%let\usepublication\btxnocitation
%D Cite helpers:
@@ -1148,6 +1146,39 @@
% \savebtxdataset[standard][e:/tmp/foo.lua]
% \savebtxdataset[standard][e:/tmp/foo.xml]
+%D In-text entries:
+
+\unexpanded\def\placecitation
+ {\dodoubleempty\publ_place_citation}
+
+\unexpanded\def\publ_place_citation
+ {\ifsecondargument
+ \expandafter\publ_place_citation_two
+ \else\iffirstargument
+ \doubleexpandafter\publ_place_citation_one
+ \else
+ \doubleexpandafter\publ_place_citation_zero
+ \fi\fi}
+
+\unexpanded\def\publ_place_citation_one[#1][#2]%
+ {\publ_place_citation_two[\currentbtxrendering][#1]}
+
+\unexpanded\def\publ_place_citation_two[#1][#2]%
+ {\dontleavehmode
+ \begingroup
+ \startbtxrendering[#1]%
+ \btx_set_rendering_alternative
+ \edef\currentbtxdataset{\btxrenderingparameter\c!dataset}%
+ \uselanguageparameter\btxdatasetparameter % new
+ \ctxcommand{btxflushlistentry{ dataset = "\currentbtxdataset", reference = \!!bs#2\!!es }}%
+ \stopbtxrendering
+ \endgroup}
+
+\unexpanded\def\publ_place_citation_zero[#1][#2]%
+ {\btxmissing{??}}
+
+\let\btxhandlelisttextentry\btx_entry_inject
+
%D Defaults:
\setbtxdataset
diff --git a/tex/context/base/status-files.pdf b/tex/context/base/status-files.pdf
index 79fee3eb4..1e9f5baad 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 5da55ee05..eec816bf2 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 1671ffb23..68400c088 100644
--- a/tex/generic/context/luatex/luatex-fonts-merged.lua
+++ b/tex/generic/context/luatex/luatex-fonts-merged.lua
@@ -1,6 +1,6 @@
-- merged file : luatex-fonts-merged.lua
-- parent file : luatex-fonts.lua
--- merge date : 10/19/14 21:08:40
+-- merge date : 10/20/14 10:52:56
do -- begin closure to overcome local limits and interference