summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/tex/lualatex/xindex
diff options
context:
space:
mode:
authorKarl Berry <karl@freefriends.org>2018-12-06 22:14:02 +0000
committerKarl Berry <karl@freefriends.org>2018-12-06 22:14:02 +0000
commit4730f384a0f5538cd55aedf11762bcc5d3aeec86 (patch)
treee4a20e0b140edd07a6a3454366b5403cd511a3be /Master/texmf-dist/tex/lualatex/xindex
parent1029a4f1c9617517f5aab7238fc2afe35216f27b (diff)
xindex (6dec18)
git-svn-id: svn://tug.org/texlive/trunk@49332 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master/texmf-dist/tex/lualatex/xindex')
-rw-r--r--Master/texmf-dist/tex/lualatex/xindex/xindex-DIN2.lua2
-rw-r--r--Master/texmf-dist/tex/lualatex/xindex/xindex-HAdW-eKO.lua (renamed from Master/texmf-dist/tex/lualatex/xindex/xindex-HAdW.lua)87
-rw-r--r--Master/texmf-dist/tex/lualatex/xindex/xindex-base.lua4
-rw-r--r--Master/texmf-dist/tex/lualatex/xindex/xindex-cfg-common.lua2
-rw-r--r--Master/texmf-dist/tex/lualatex/xindex/xindex-cfg.lua2
-rw-r--r--Master/texmf-dist/tex/lualatex/xindex/xindex-dtk.lua2
-rw-r--r--Master/texmf-dist/tex/lualatex/xindex/xindex-lapp.lua2
-rw-r--r--Master/texmf-dist/tex/lualatex/xindex/xindex-lib.lua49
-rw-r--r--Master/texmf-dist/tex/lualatex/xindex/xindex-pretty.lua2
-rw-r--r--Master/texmf-dist/tex/lualatex/xindex/xindex-unicode.lua (renamed from Master/texmf-dist/tex/lualatex/xindex/unicode-category.lua)0
10 files changed, 102 insertions, 50 deletions
diff --git a/Master/texmf-dist/tex/lualatex/xindex/xindex-DIN2.lua b/Master/texmf-dist/tex/lualatex/xindex/xindex-DIN2.lua
index 58c33a5e2b8..65675eab94c 100644
--- a/Master/texmf-dist/tex/lualatex/xindex/xindex-DIN2.lua
+++ b/Master/texmf-dist/tex/lualatex/xindex/xindex-DIN2.lua
@@ -7,7 +7,7 @@
-----------------------------------------------------------------------
if not modules then modules = { } end modules ['xindex-cfg'] = {
- version = 0.05,
+ version = 0.06,
comment = "configuration to xindex.lua",
author = "Herbert Voss",
copyright = "Herbert Voss",
diff --git a/Master/texmf-dist/tex/lualatex/xindex/xindex-HAdW.lua b/Master/texmf-dist/tex/lualatex/xindex/xindex-HAdW-eKO.lua
index a45bd744332..5c828936189 100644
--- a/Master/texmf-dist/tex/lualatex/xindex/xindex-HAdW.lua
+++ b/Master/texmf-dist/tex/lualatex/xindex/xindex-HAdW-eKO.lua
@@ -1,5 +1,5 @@
-----------------------------------------------------------------------
--- FILE: xindex-HAdW.lua
+-- FILE: xindex-HAdW-eco.lua
-- DESCRIPTION: configuration file for xindex.lua
-- REQUIREMENTS:
-- AUTHOR: Herbert Voß
@@ -9,7 +9,7 @@
-- configuration for index files of the Heidelberger Akademie der Wissenschaften
if not modules then modules = { } end modules ['xindex-HAdW'] = {
- version = 0.05,
+ version = 0.06,
comment = "configuration to xindex.lua",
author = "Herbert Voss",
copyright = "Herbert Voss",
@@ -98,8 +98,11 @@ alphabet_upper = { -- for sorting
--\indexentry{Bremen!Adalbert I. von, Erzbischof}{VII/1-50}
function specialCompressPageList(pages)
- if (#pages <= 1) or (pages[1]["number"] == "") then
- pages[1]["number"] = pages[1]["number"]:gsub('-',' ')
+--print(#pages..".. number:|"..pages[1]["number"].."| Special:"..pages[1]["special"])
+ if (pages[1]["number"] == "") then pages[1]["number"] = " " end
+ if (#pages <= 1) then
+ pages[1]["number"] = pages[1]["number"]:gsub('(.-)-',colorBox)-- replace "-" with ":\\ "
+-- pages[1]["number"] = pages[1]["number"]:gsub('-',':~')-- replace "-" with ":\\ "
return pages
end -- only one pageno
--[[
@@ -114,17 +117,22 @@ sortPages = {{ origin = { number=VII/1-715, special="" },
local volume
local page
local i
+--print("----------------------------------------")
for i=1,#pages do
- roman = string.gsub(pages[i]["number"],'%U*','') -- only uppercase to catch VII123f (folium pages)
- roman = string.format("%03d",tonumber(romanToNumber(roman)))
- volume = string.gsub(pages[i]["number"],'%a*','')
- if volume then volume = volume:gsub('-%d*','') end
- page = string.gsub(pages[i]["number"],'.*-','')
- page = string.format("%5s",page)
---print(roman..volume.." "..page)
- sortPages[#sortPages+1] = {
- origin = pages[i],
- sort = roman..volume.." "..page } -- no minus between Roman/Volume and first page
+ roman = string.gsub(pages[i]["number"],'%U*','') -- only uppercase to catch VII123f (folium pages)
+ if romanToNumber(roman) then
+ roman = string.format("%05d",tonumber(romanToNumber(roman)))
+ else
+ roman = ""
+ end
+ volume = string.gsub(pages[i]["number"],'%a*','')
+ if volume then volume = volume:gsub('-%d*','') end
+ page = string.gsub(pages[i]["number"],'.*-','')
+ page = string.format("%5s",page)
+ sortPages[#sortPages+1] = {
+ origin = pages[i],
+ sort = roman..volume.." "..page } -- no minus between Roman/Volume and first page
+--print(roman..volume.." "..page.." Special:"..pages[i]["special"])
end
-- sort the page list
table.sort(sortPages, function(a,b) return a["sort"] < b["sort"] end )
@@ -137,21 +145,25 @@ sortPages = {{ origin = { number=VII/1-715, special="" },
if #Pages == 2 then -- only two pages
local page1 = string.gsub(Pages[1]["number"],'%A*','') -- get prefix1
local page2 = string.gsub(Pages[2]["number"],'%A*','') -- ger prefix2
- if page1 == page2 then -- same prefix
+ if (page1 == page2) then -- same prefix
page1 = string.gsub(Pages[1]["number"],'.*-','') -- get page1
page2 = string.gsub(Pages[2]["number"],'.*-','') -- get page2
+ if ((type(tonumber(page1)) ~= "number") or (type(tonumber(page2)) ~= "number")) then return Pages end -- one is not numeric
if (page2-page1) == 1 then -- pagediff = 1
Pages[1]["number"] = Pages[1]["number"].."f"
Pages[2] = nil -- remove second page
return Pages
else -- page difference > 1
- pages[1]["number"] = pages[1]["number"]:gsub('-',' ')
+-- Pages[1]["number"] = pages[1]["number"]:gsub('-',':~') --'(.-)-',colorBox
+ Pages[1]["number"] = pages[1]["number"]:gsub('(.-)-',colorBox)
Pages[2]["number"] = string.gsub(Pages[2]["number"],'.*-','') -- use only number -> same prefix
return Pages -- Pages[1] is the same
end
else
- pages[1]["number"] = pages[1]["number"]:gsub('-',' ')
- pages[2]["number"] = pages[2]["number"]:gsub('-',' ')
+-- Pages[1]["number"] = pages[1]["number"]:gsub('-',':~')
+-- Pages[2]["number"] = pages[2]["number"]:gsub('-',':~')
+ Pages[1]["number"] = pages[1]["number"]:gsub('(.-)-',colorBox)
+ Pages[2]["number"] = pages[2]["number"]:gsub('(.-)-',colorBox)
return Pages -- different prefix -> simple return of the two pages
end
else -- more than two pages
@@ -178,8 +190,17 @@ sortPages = {{ origin = { number=VII/1-715, special="" },
i = i +1
end
sortPages = compressPageList(subPageList)
- -- no minus between Roman/Volume and first page
- pages[#pages+1] = { number = lastPrefix.." "..sortPages[1]["number"], special = sortPages[1]["special"] }
+ -- instead of minus between Roman/Volume and first page insert colon
+ if (stripLeadingSpaces(sortPages[1]["number"]) == "") then
+-- colon = ""
+ sortPages[1]["number"] = ""
+ pages[#pages+1] = { number = lastPrefix..sortPages[1]["number"], special = sortPages[1]["special"] }
+ else
+-- colon = ':~'
+ pages[#pages+1] = { number = colorBox(lastPrefix)..sortPages[1]["number"], special = sortPages[1]["special"] }
+ end
+-- pages[#pages+1] = { number = lastPrefix..colon..sortPages[1]["number"], special = sortPages[1]["special"] }
+ pages[#pages+1] = { number = colorBox(lastPrefix)..sortPages[1]["number"], special = sortPages[1]["special"] }
for i=2,#sortPages do
pages[#pages+1] = sortPages[i]
end
@@ -190,7 +211,7 @@ end
function replaceRoman(r)
local i = romanToNumber(r)
- if i then return "//"..string.format("%03d",i).."//"
+ if i then return "//"..string.format("%05d",i).."//"
else return r
end
end
@@ -202,16 +223,18 @@ function SORTprehook(data) -- replace roman with algebraic, eg Karl IX -> Karl
for i=1,#data do
entry = data[i]["Entry"]
elements = entry:split()
- local number = romanToNumber(elements[#elements])
- if number then
- local strNr = string.format("%03d",tostring(number))
- elements[#elements] = "//"..strNr.."//"
- entry = ""
- for j=1,#elements do entry=entry.." "..elements[j] end
- else
- entry:gsub("!(.-)%p",replaceRoman)
+ if (#elements > 1) then -- at least one space (two elements)
+ local number = romanToNumber(elements[#elements])
+ if number then
+ local strNr = string.format("%03d",tostring(number))
+ elements[#elements] = "//"..strNr.."//"
+ entry = ""
+ for j=1,#elements do entry=entry.." "..elements[j] end -- has leading space
+ else
+ entry:gsub("!(.-)%p",replaceRoman)
+ end
+ data[i]["Entry"] = entry:gsub("^%s*(.-)%s*$", "%1") -- strip leading space
end
- data[i]["Entry"] = entry
end
return data
end
@@ -228,4 +251,8 @@ function SORTposthook(data) -- the other way round as prehook
return data
end
+function colorBox(str)
+ return ("\\colorbox{black!15}{"..str.."}:~")
+end
+
diff --git a/Master/texmf-dist/tex/lualatex/xindex/xindex-base.lua b/Master/texmf-dist/tex/lualatex/xindex/xindex-base.lua
index e8ba4a4b827..78a2422bb43 100644
--- a/Master/texmf-dist/tex/lualatex/xindex/xindex-base.lua
+++ b/Master/texmf-dist/tex/lualatex/xindex/xindex-base.lua
@@ -6,7 +6,7 @@
-- LICENSE: LPPL1.3
-----------------------------------------------------------------------
-local info = { version = 0.05}
+local info = { version = 0.06}
-- check config
if pageNoPrefixDel ~= "" then
@@ -63,7 +63,7 @@ k = 0
table.sort(Index,UTFCompare)
if SORTposthook then Index = SORTposthook(Index) end
-writeLog(1,"------------------ Start list after table.sort(Index,UTFCompare)------------\n",2)
+writeLog(1,"\n------------------ Start list after table.sort(Index,UTFCompare)------------\n",2)
printList(Index,2)
writeLog(1,require 'xindex-pretty'.dump(Index),3) -- only for internal dump
writeLog(1,"\n------------------ end list after table.sort(Index,UTFCompare)------------\n",2)
diff --git a/Master/texmf-dist/tex/lualatex/xindex/xindex-cfg-common.lua b/Master/texmf-dist/tex/lualatex/xindex/xindex-cfg-common.lua
index 8237dd5022e..f988e865169 100644
--- a/Master/texmf-dist/tex/lualatex/xindex/xindex-cfg-common.lua
+++ b/Master/texmf-dist/tex/lualatex/xindex/xindex-cfg-common.lua
@@ -7,7 +7,7 @@
-----------------------------------------------------------------------
if not modules then modules = { } end modules ['xindex-cfg-common'] = {
- version = 0.05,
+ version = 0.06,
comment = "configuration to xindex.lua",
author = "Herbert Voss",
copyright = "Herbert Voss",
diff --git a/Master/texmf-dist/tex/lualatex/xindex/xindex-cfg.lua b/Master/texmf-dist/tex/lualatex/xindex/xindex-cfg.lua
index f4d726bd039..1db9fc37b4e 100644
--- a/Master/texmf-dist/tex/lualatex/xindex/xindex-cfg.lua
+++ b/Master/texmf-dist/tex/lualatex/xindex/xindex-cfg.lua
@@ -7,7 +7,7 @@
-----------------------------------------------------------------------
if not modules then modules = { } end modules ['xindex-cfg'] = {
- version = 0.05,
+ version = 0.06,
comment = "main configuration to xindex.lua",
author = "Herbert Voss",
copyright = "Herbert Voss",
diff --git a/Master/texmf-dist/tex/lualatex/xindex/xindex-dtk.lua b/Master/texmf-dist/tex/lualatex/xindex/xindex-dtk.lua
index 0104f37cece..e6b68f23fe2 100644
--- a/Master/texmf-dist/tex/lualatex/xindex/xindex-dtk.lua
+++ b/Master/texmf-dist/tex/lualatex/xindex/xindex-dtk.lua
@@ -7,7 +7,7 @@
-----------------------------------------------------------------------
if not modules then modules = { } end modules ['xindex-cfg'] = {
- version = 0.05,
+ version = 0.06,
comment = "DTK configuration to xindex.lua",
author = "Herbert Voss",
copyright = "Herbert Voss",
diff --git a/Master/texmf-dist/tex/lualatex/xindex/xindex-lapp.lua b/Master/texmf-dist/tex/lualatex/xindex/xindex-lapp.lua
index d0e01e634e6..d640662dd53 100644
--- a/Master/texmf-dist/tex/lualatex/xindex/xindex-lapp.lua
+++ b/Master/texmf-dist/tex/lualatex/xindex/xindex-lapp.lua
@@ -28,7 +28,7 @@
--~ n 2
--------------------------------
if not modules then modules = { } end modules ['xindex-lapp'] = {
- version = 0.05,
+ version = 0.06,
comment = "read parameter for xindex.lua",
author = "Steve Donovan",
copyright = "Steve Donovan",
diff --git a/Master/texmf-dist/tex/lualatex/xindex/xindex-lib.lua b/Master/texmf-dist/tex/lualatex/xindex/xindex-lib.lua
index f570771776d..8390c9f118b 100644
--- a/Master/texmf-dist/tex/lualatex/xindex/xindex-lib.lua
+++ b/Master/texmf-dist/tex/lualatex/xindex/xindex-lib.lua
@@ -7,7 +7,7 @@
-----------------------------------------------------------------------
if not modules then modules = { } end modules ['xindex-lib'] = {
- version = 0.05,
+ version = 0.06,
comment = "main library to xindex.lua",
author = "Herbert Voss",
copyright = "Herbert Voss",
@@ -330,7 +330,7 @@ end
function compressPageList(pages) -- called with (v["pages"])
- writeLog(1,"compressPageList: we have "..#pages.." pages for this entry",2)
+ writeLog(1,"compressPageList: we have "..#pages.." pages for this entry\n",2)
-- require 'xindex-pretty'.dump(pages) -- only for internal dump
pages = deletePageDups(pages) -- delete duplicate page numners with same special
local str
@@ -364,7 +364,7 @@ function compressPageList(pages) -- called with (v["pages"])
series = {pages[2]}
startIndex = 3
end
-if args_v then print ("compressPageList: more than two pages for the entry") end
+if args_v then print ("compressPageList: more than two pages for the entry\n") end
for i=startIndex,#pages do
if tonumber(pages[i-1]["number"]) and tonumber(pages[i]["number"]) then -- de we have something like 17--31 in the current list
if ((tonumber(pages[i]["number"])-tonumber(pages[i-1]["number"])) == 1) and
@@ -380,7 +380,7 @@ if args_v then print ("compressPageList: more than two pages for the entry") e
else -- series < minCompress
if fCompress then
if #series == 2 then -- two pages -> 3f
- writeLog(1,"compressPageList: Two consecutive pages for this entry",2)
+ writeLog(1,"compressPageList: Two consecutive pages for this entry\n",2)
if series[1]["special"] == series[2]["special"] then
newPages[#newPages+1] = { number = series[1]["number"]..page_folium[1], special = series[1]["special"] }
else
@@ -435,7 +435,7 @@ end
-- 1 digit
-- 0 symbol
-UTFdatafile = kpse.find_file("unicode-category.lua")
+UTFdatafile = kpse.find_file("xindex-unicode.lua")
local category_data = dofile(UTFdatafile)
local floor = math.floor
@@ -491,9 +491,9 @@ end
function UTFCompare(a,b)
-- a, b are something like \indexentry{foo}{bar}
- writeLog(1,"UTFCompare: "..a["Entry"]..", "..a["pages"][1]["number"].." - "..b["Entry"]..", "..b["pages"][1]["number"],2)
- k = k + 1
- if (k % 50) == 0 then writeLog(1,".",1) end
+-- writeLog(1,"UTFCompare: "..a["Entry"]..", "..a["pages"][1]["number"].." - "..b["Entry"]..", "..b["pages"][1]["number"].."\n",2)
+-- k = k + 1
+-- if (k % 50) == 0 then writeLog(1,".",1) end
local A,B,Apage,Bpage
if numericPage then
if tonumber(a["pages"][1]["number"]) then
@@ -510,8 +510,9 @@ function UTFCompare(a,b)
Apage = string.format("%09s",a["pages"][1]["number"])
Bpage = string.format("%09s",b["pages"][1]["number"])
end
- A = NormalizedUpper(getSortString(a["Entry"].." "..Apage..a["pages"][1]["special"]):gsub('!',' '))
- B = NormalizedUpper(getSortString(b["Entry"].." "..Bpage..b["pages"][1]["special"]):gsub('!',' '))
+ A = NormalizedUpper(getSortString(a["Entry"].." "..Apage..a["pages"][1]["special"]):gsub('!','')) -- replace! by empty
+ B = NormalizedUpper(getSortString(b["Entry"].." "..Bpage..b["pages"][1]["special"]):gsub('!',''))
+ writeLog(1,"UTFCompare: A--B "..A.."--"..B.."\n",2)
-- print(A,B)
--[[
if A == B then -- same entry, use also page number
@@ -807,7 +808,8 @@ function itemOutput(last, v, hyperpage)
str = str:gsub(str0[2],str0[3])
end
outFile:write(str)
--- lastItems[1] = Entry
+ lastItems = {}
+ lastItems[1] = Entry
else
for i = 1,excl+1 do
currentItems[i] = getItem(Entry,i-1) -- 0 ! 1 ! 2 ! ...
@@ -905,4 +907,27 @@ end
\indexentry {Schrift!Breite}{64}
\indexentry {Schrift!Tiefe}{64}
-]] \ No newline at end of file
+]]
+
+function shellsort(a)
+ local inc = math.ceil( #a / 2 )
+ while inc > 0 do
+ for i = inc, #a do
+ local tmp = a[i]
+ local j = i
+ while j > inc and not UTFCompare(a[j-inc],tmp) do
+ a[j] = a[j-inc]
+ j = j - inc
+ end
+ a[j] = tmp
+ end
+ inc = math.floor( 0.5 + inc / 2.2 )
+ end
+ return a
+end
+
+function stripLeadingSpaces(str)
+ return str:gsub("^%s*(.-)%s*$", "%1")
+end
+
+
diff --git a/Master/texmf-dist/tex/lualatex/xindex/xindex-pretty.lua b/Master/texmf-dist/tex/lualatex/xindex/xindex-pretty.lua
index 290c30d1c96..38b1dccc479 100644
--- a/Master/texmf-dist/tex/lualatex/xindex/xindex-pretty.lua
+++ b/Master/texmf-dist/tex/lualatex/xindex/xindex-pretty.lua
@@ -5,7 +5,7 @@
--
if not modules then modules = { } end modules ['xindex-pretty'] = {
- version = 0.05,
+ version = 0.06,
comment = "dump a Lua table for debugging",
author = "Steve Donovan",
copyright = "Steve Donovan",
diff --git a/Master/texmf-dist/tex/lualatex/xindex/unicode-category.lua b/Master/texmf-dist/tex/lualatex/xindex/xindex-unicode.lua
index d3f6c5b84a9..d3f6c5b84a9 100644
--- a/Master/texmf-dist/tex/lualatex/xindex/unicode-category.lua
+++ b/Master/texmf-dist/tex/lualatex/xindex/xindex-unicode.lua