diff options
Diffstat (limited to 'tex/context/base/mkiv/publ-aut.lua')
-rw-r--r-- | tex/context/base/mkiv/publ-aut.lua | 32 |
1 files changed, 22 insertions, 10 deletions
diff --git a/tex/context/base/mkiv/publ-aut.lua b/tex/context/base/mkiv/publ-aut.lua index fd98c5e38..e74c7ee18 100644 --- a/tex/context/base/mkiv/publ-aut.lua +++ b/tex/context/base/mkiv/publ-aut.lua @@ -159,8 +159,11 @@ local function splitauthor(author,justsplit) if n == 1 then -- {First Middle von Last} local words = lpegmatch(spacesplitter,author) - firstnames, vons, surnames = { }, { }, { } - local i, n = 1, #words + local i = 1 + local n = #words + firstnames = { } + vons = { } + surnames = { } while i <= n do local w = words[i] if is_upper(w) then @@ -198,9 +201,12 @@ local function splitauthor(author,justsplit) elseif n == 2 then -- {Last, First} -- {von Last, First} - firstnames, vons, surnames = { }, { }, { } local words = lpegmatch(spacesplitter,split[1]) - local i, n = 1, #words + local i = 1 + local n = #words + firstnames = { } + vons = { } + surnames = { } while i <= n do local w = words[i] if is_upper(w) then @@ -210,21 +216,25 @@ local function splitauthor(author,justsplit) end end while i <= n do - surnames[#surnames+1], i = words[i], i + 1 + surnames[#surnames+1] = words[i] + i = i + 1 end -- local words = lpegmatch(spacesplitter,split[2]) - local i, n = 1, #words + local i = 1 + local n = #words while i <= n do local w = words[i] if is_upper(w) then - firstnames[#firstnames+1], i = w, i + 1 + firstnames[#firstnames+1] = w + i = i + 1 else break end end while i <= n do - vons[#vons+1], i = words[i], i + 1 + vons[#vons+1] = words[i] + i = i + 1 end if surnames and firstnames and #surnames == 0 then -- safeguard @@ -316,12 +326,14 @@ local function the_initials(initials,symbol,connector) if not connector then connector = "-" end - local result, r = { }, 0 + local result = { } + local r = 0 for i=1,#initials do local initial = initials[i] if type(initial) == "table" then -- J.-J. - local set, s = { }, 0 + local set = { } + local s = 0 for i=1,#initial do if i > 1 then s = s + 1 ; set[s] = connector |