summaryrefslogtreecommitdiff
path: root/indexing/xindex/lualatex/xindex-base.lua
diff options
context:
space:
mode:
authorNorbert Preining <norbert@preining.info>2023-07-17 03:03:42 +0000
committerNorbert Preining <norbert@preining.info>2023-07-17 03:03:42 +0000
commit2d6f89f83b7567136c3a40b3b55f9be1e06bd99e (patch)
tree9f4acc9c2c0e94ea2bc4626e2d2e6e6a92984ffe /indexing/xindex/lualatex/xindex-base.lua
parentbfb037e9e2deef77f8837a4421b029f8298437cf (diff)
CTAN sync 202307170303
Diffstat (limited to 'indexing/xindex/lualatex/xindex-base.lua')
-rw-r--r--indexing/xindex/lualatex/xindex-base.lua35
1 files changed, 18 insertions, 17 deletions
diff --git a/indexing/xindex/lualatex/xindex-base.lua b/indexing/xindex/lualatex/xindex-base.lua
index 0999421e4d..98e2d3dd43 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.51 }
+local info = { version = 0.53 }
-- check config
if pageNoPrefixDel ~= "" then
@@ -49,16 +49,16 @@ end
writeLog(1,"check for hyperpages ... ",0)
hyperpage, lines = checkHyperpage(lines) -- hyperref used?
-writeLog(1,"done \n",0)
+--writeLog(1,"done \n",0)
if hyperpage then writeLog(1,"We have hyperpages.\n",1) end
print("Presort of \\indexentry lines")
-- for _,l in pairs(lines) do print (l) end
table.sort(lines)
-if vlevel > 1 then
- print("Pre-Sorted index list:")
- for _,l in pairs(lines) do print (l) end
-end
+--if vlevel > 1 then
+ --print("Pre-Sorted index list:")
+ --for _,l in pairs(lines) do print (l) end
+--end
if vlevel > 1 then
writeLog(1,"--------------- Input data (presorted) -----------------\n",2)
@@ -74,11 +74,15 @@ local noPagefound
writeLog(1,"Change escape chars with macros ... \n",0)
for k,v in ipairs(lines) do
+ --print("(k,v) ",k,v)
if not commandEntry(v) then
+ --print()
+ --print(require 'xindex-pretty'.dump(escape_chars)) -- only for internal dump
+ --print()
for i, str0 in ipairs(escape_chars) do -- str0: esc-char, coded, char
--- print(str0[1],str0[2],v)
- v = string.gsub(v,str0[1],str0[2])
--- print("==> "..v)
+ if i < 5 then
+ v,changed = v:gsub(literalize(str0[1]),str0[2]) -- some chars must be escaped
+ end
end
if k < #lines then
if commandEntry(lines[k+1]) then -- is the next line not a \indexentry ?
@@ -177,14 +181,11 @@ if use_UCA then
writeLog(2,"done\n",0)
else
for i=1, #NewIndex do
- v = NewIndex[i]
- if findStr(v["SortKey"],"\\braceLeft") < 2 then v["SortKey"] = '{' v["sortChar"] = '{'end
- if findStr(v["SortKey"],"\\braceRight") < 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
+ if NewIndex[i]["SortKey"] ~= nil then
+ for _,w in pairs(escape_chars) do
+ NewIndex[i]["SortKey"] = NewIndex[i]["SortKey"]:gsub(w[2], w[3])
+ end
+ end
end
end