Is there a short-cut to adding sub-categories for index entries?
I have a document with thousands of index entries. Here’s a samplecode: \starttext Some people livedin \index{cliff-dwelling}cliff-dwellings, while others lived in\index{lean-to}lean-tos. \placeindex \stoptext This produces anindex like this: c cliff-dwelling 1 l lean-to 1 I’d like to createan index with much more sub-categories to find the same entries, forinstance, a category of “dwellings”: c cliff-dwelling 1 d dwellings cliff-dwelling 1 lean-to 1 l lean-to 1 As I’m aware, theway to code this is as follows: \starttext Some people livedin\index{cliff-dwelling}\index{dwellings+cliff-dwelling}cliff-dwellings,while others lived in\index{lean-to}\index{dwellings+lean-to}lean-tos. \placeindex \stoptext I’m wondering ifthere is a short-cut means to set this up, such that if I can tellthe document that any time it sees “cliff-dwellings” in an index,it will also add its page numbers to under “dwellings+cliff-dwelling”? In other words, is there an easierway to add these categories, then to go through the entire documentand mark them? I already have a list of all the words. For instance, in my above code, I must find every \index{cliff-dwelling} entry and add a \index{dwellings+cliff-dwelling} next to it...which would take hundreds of hours if I did that for every word. Is there a quicker way to tell it always also add it under "dwellings" too? --Joel
Am 25.08.24 um 15:38 schrieb Joel via ntg-context:
I have a document with thousands of index entries. Here’s a sample code: Some people lived in \index{cliff-dwelling}\index{dwellings+cliff-dwelling}cliff-dwellings, while others lived in \index{lean-to}\index{dwellings+lean-to}lean-tos.
I’m wondering if there is a short-cut means to set this up, such that if I can tell the document that any time it sees “cliff-dwellings” in an index, it will also add its page numbers to under “dwellings+cliff-dwelling”? In other words, is there an easier way to add these categories, then to go through the entire document and mark them? I already have a list of all the words.
For instance, in my above code, I must find every \index{cliff-dwelling} entry and add a \index{dwellings+cliff-dwelling} next to it...which would take hundreds of hours if I did that for every word. Is there a quicker way to tell it always also add it under "dwellings" too?
If it’s just a few instances, define a macro: \define[1]\DwIndex{\index{#1}\index{dwellings+#1}#1} For a list of words, a lookup table and a Lua function make sense. With a comparable problem, normalizing location names, I used this: -- lookups.lua userdata = userdata or { } userdata.Mapping = { ["Albano"] = "Albano (Provinz Rom)", ["Altona"] = "Altona (Hamburg)", ["Aurich"] = "Aurich (Ostfriesland)", -- … } function userdata.Lookup(name) context(userdata.Mapping[name] or name) end %%% environment \loadluafile[lookups.lua] \defineregister[Location][] \define[1]\LocIndex{\expanded{\Location{% \ctxlua{userdata.Lookup("#1")}}}} Hraban
participants (2)
-
Henning Hraban Ramm
-
Joel