summaryrefslogtreecommitdiff
path: root/indexing/xindex/lualatex/xindex-base.lua
diff options
context:
space:
mode:
authorNorbert Preining <norbert@preining.info>2023-07-07 03:00:56 +0000
committerNorbert Preining <norbert@preining.info>2023-07-07 03:00:56 +0000
commit2178d699db60492a15e11c107f17da33543af865 (patch)
tree157f2907e3778e17df8a7e891bc276b83b444f48 /indexing/xindex/lualatex/xindex-base.lua
parent97f4d34e17013b3239a49484afcb3d805ab09f38 (diff)
CTAN sync 202307070300
Diffstat (limited to 'indexing/xindex/lualatex/xindex-base.lua')
-rw-r--r--indexing/xindex/lualatex/xindex-base.lua27
1 files changed, 23 insertions, 4 deletions
diff --git a/indexing/xindex/lualatex/xindex-base.lua b/indexing/xindex/lualatex/xindex-base.lua
index 37a6783812..336142e30c 100644
--- a/indexing/xindex/lualatex/xindex-base.lua
+++ b/indexing/xindex/lualatex/xindex-base.lua
@@ -8,7 +8,7 @@
-- $Id: xindex-base.lua 22 2022-02-07 12:18:15Z hvoss $
-----------------------------------------------------------------------
-local info = { version = 0.48 }
+local info = { version = 0.49 }
-- check config
if pageNoPrefixDel ~= "" then
@@ -31,7 +31,7 @@ else
writeLog(2,#lines.." lines of data read\n",0)
end
end
-print("Anzahl Zeilen: "..#lines)
+--print("Anzahl Zeilen: "..#lines)
if #lines == 0 then
print("=========================================")
print("Input file(s) is/are empty!")
@@ -48,9 +48,10 @@ if #lines == 0 then
end
print("Presort of \\indexentry lines")
+for _,l in pairs(lines) do print (l) end
table.sort(lines)
if vlevel > 1 then
- print("Pres-Sorted index list:")
+ print("Pre-Sorted index list:")
for _,l in pairs(lines) do print (l) end
end
@@ -174,6 +175,17 @@ if use_UCA then
end
end
writeLog(2,"done\n",0)
+else
+ for i=1, #NewIndex do
+ v = NewIndex[i]
+ if findStr(v["SortKey"],"\\parenLeft") < 2 then v["SortKey"] = '{' v["sortChar"] = '{'end
+ if findStr(v["SortKey"],"\\parenRight") < 2 then v["SortKey"] = '}' end
+ if findStr(v["SortKey"],"//escapedexcl//") < 2 then v["SortKey"] = '!' end
+ if findStr(v["SortKey"],"//escapedquote//") < 2 then v["SortKey"] = '"' end
+ if findStr(v["SortKey"],"//escapedat//") < 2 then v["SortKey"] = '@' end
+ if findStr(v["SortKey"],"//escapedvert//") < 2 then v["SortKey"] = '|' end
+ NewIndex[i] = v
+ end
end
if SORTendhook then
@@ -217,27 +229,34 @@ for k=1,#NewIndex do
writeLog(1," NewIndex[k]: "..v["Entry"].."\n",2)
writeLog(1,require 'xindex-pretty'.dump(v),3) -- only for internal dump
entry = v["Entry"]
+-- print("SortKey:"..v["SortKey"].." sortChar:"..v["sortChar"])
writeLog(1,"\nBase start: "..entry.."\n",2)
-- local c = utf.sub(v["sortChar"],1,1)
-- if utf8.codepoint(c) < 12288 then -- Japanese starts at hex 3000
-- firstChar = v["sortChar"]
-- else
+-- print(v["SortKey"],v["sortChar"],v["Entry"])
if language == "cs" then -- Czech language has special char ch
if utf.sub(v["sortChar"],1,2) == "CH" then
- firstChar = "Ch"
+ firstChar = "Ch"
else
+-- firstChar = utf.sub(v["SortKey"],1,1)
firstChar = utf.sub(v["sortChar"],1,1)
end
else
+-- firstChar = utf.sub(v["SortKey"],1,1)
firstChar = utf.sub(v["sortChar"],1,1) -- catch a translatet Ö->OE
end
-- end
currentChar = firstChar
+ local SortKey = tostring(v["SortKey"])
+ writeLog(1,"SortKey="..SortKey.."; firstChar="..currentChar.."\n",2)
if string.len(firstChar) > 1 then
charType = getCharType(utf.sub(firstChar,1,1))
else
charType = getCharType(firstChar)
end
+-- print(">>"..v["sortChar"].." "..firstChar.." "..tostring(charType))
if charType == 0 then
numbers = false
symbols = true