\iffalse # The `Lua-UCA` package \fi This package adds support for the [Unicode collation algorithm](https://unicode.org/reports/tr10/) for Lua 5.3. ## Usage To sort a table using Czech collation rules: kpse.set_program_name "luatex" local ducet = require "lua-uca.lua-uca-ducet" local collator = require "lua-uca.lua-uca-collator" local languages = require "lua-uca.lua-uca-languages" local collator_obj = collator.new(ducet) -- load Czech rules collator_obj = languages.cs(collator_obj) local t = {"cihla", "chochol", "hudba", "jasan", "čáp"} table.sort(t, function(a,b) return collator_obj:compare_strings(a,b) end) for _, v in ipairs(t) do print(v) end The output: > cihla > čáp > hudba > chochol > jasan More samples of the library usage can be found in the source repository of this package on [Github](https://github.com/michal-h21/lua-uca). % See `HACKING.md` file in the repo for more information. ## Use with Xindex processor [Xindex](https://www.ctan.org/pkg/xindex) is flexible index processor written in Lua by Herbert Voß. It has built-in `Lua-UCA` support starting with version `0.23`. The support can be requested using the `-u` option: xindex -u -l no -c norsk filename.idx ## Change sorting rules The simplest way to change the default sorting order is to use the `tailor_string` method of the `collator_obj` object. It updates the collator object using special syntax which is subset of the format used by the [Unicode locale data markup language](https://www.unicode.org/reports/tr35/tr35-collation.html#Orderings). collator_obj:tailor_string "&a