summaryrefslogtreecommitdiff
path: root/indexing/xindex/lualatex/xindex-lib.lua
diff options
context:
space:
mode:
authorNorbert Preining <norbert@preining.info>2020-09-09 03:03:16 +0000
committerNorbert Preining <norbert@preining.info>2020-09-09 03:03:16 +0000
commit4b315627efc5a6beb1e6c6ec7a98779f215c75eb (patch)
treecf65539a3758192b9bfbaea63d1962f28ec32a3e /indexing/xindex/lualatex/xindex-lib.lua
parentbc2d0660f4f460b55009ab4e525f2a0e4cde6187 (diff)
CTAN sync 202009090303
Diffstat (limited to 'indexing/xindex/lualatex/xindex-lib.lua')
-rw-r--r--indexing/xindex/lualatex/xindex-lib.lua14
1 files changed, 8 insertions, 6 deletions
diff --git a/indexing/xindex/lualatex/xindex-lib.lua b/indexing/xindex/lualatex/xindex-lib.lua
index 004c697fdd..31e4d23426 100644
--- a/indexing/xindex/lualatex/xindex-lib.lua
+++ b/indexing/xindex/lualatex/xindex-lib.lua
@@ -7,7 +7,7 @@
-----------------------------------------------------------------------
if not modules then modules = { } end modules ['xindex-lib'] = {
- version = 0.27,
+ version = 0.28,
comment = "main library to xindex.lua",
author = "Herbert Voss",
copyright = "Herbert Voss",
@@ -846,8 +846,11 @@ end
function itemOutput(last, v, hyperpage)
local lastItems = last
+-- print (tostring("test: "),v["Entry"],lastItems[1],lastItems[2],lastItems[3],type(lastItems[1]),#lastItems)
local currentItems = {}
local Entry = v["Entry"]
+ local mainEntry = getItem(Entry,0) -- save current main letter
+ local lastmainEntry = last[1] -- save last main letter
-- require 'xindex-pretty'.dump(v) -- only for internal dump
local str
local excl = select(2,string.gsub(Entry,"!","!")) -- Number of !
@@ -863,10 +866,11 @@ function itemOutput(last, v, hyperpage)
lastItems[1] = Entry
else
for i = 1,excl+1 do
- currentItems[i] = getItem(Entry,i-1) -- 0 ! 1 ! 2 ! ...
+ currentItems[i] = getItem(Entry,i-1) -- 0 ! 1 ! 2 ! ... mainEntry
local item = "item"
writeLog(1,"itemOutput: currentItems[i]: "..tostring(currentItems[i]).."~= lastItems[i]: "..tostring(lastItems[i]).."\n",2)
- if (currentItems[i] ~= lastItems[i]) then
+ if (currentItems[i] ~= lastItems[i]) or (mainEntry ~= lastmainEntry) -- test if there is a new main entry
+ then
local space = " "
for j = 2,i do
item = "sub"..item -- get the sub...subitem
@@ -878,8 +882,6 @@ function itemOutput(last, v, hyperpage)
str = space.."\\"..item.." "..sublabels[i]..currentItems[i].."\n"
else
str = space.."\\"..item.." "..sublabels[i]..currentItems[i]..itemPageDelimiter.." "..getPageList(v,hyperpage).."\n"
--- set current (sub...)item to empty
- currentItems[i] = ""
end
for i, str0 in ipairs(escape_chars) do -- undo the escape char setting
str = string.gsub(str,str0[2],str0[3])
@@ -887,8 +889,8 @@ function itemOutput(last, v, hyperpage)
outFile:write(str); indLines=indLines+1
else
writeLog(1,"itemOutput: currentItems[i]: "..currentItems[i].."= lastItems[i]: "..lastItems[i].."\n",2)
- lastItems[i] = currentItems[i]
end
+ lastItems[i] = currentItems[i]
end
end
return lastItems