diff options
author | Norbert Preining <norbert@preining.info> | 2023-07-07 03:00:56 +0000 |
---|---|---|
committer | Norbert Preining <norbert@preining.info> | 2023-07-07 03:00:56 +0000 |
commit | 2178d699db60492a15e11c107f17da33543af865 (patch) | |
tree | 157f2907e3778e17df8a7e891bc276b83b444f48 /indexing/xindex/lualatex/xindex-base.lua | |
parent | 97f4d34e17013b3239a49484afcb3d805ab09f38 (diff) |
CTAN sync 202307070300
Diffstat (limited to 'indexing/xindex/lualatex/xindex-base.lua')
-rw-r--r-- | indexing/xindex/lualatex/xindex-base.lua | 27 |
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 |