[NTG-context] Index items (additional question)
Hans Hagen
pragma at wxs.nl
Sun Apr 19 11:50:38 CEST 2015
On 4/19/2015 9:47 AM, Robert Blackstone wrote:
>
> On 16 Apr 2015, at 15:38 , Hans Hagen <pragma at wxs.nl> gave me the following:
>
>> \startluacode
>>
>> document.indexentries = {
>> ["rule"] = [[Rule(s)]],
>> ["ruleimperfect"] = [[+ \quote{imperfect to perfect, from}]],
>> ["galilei"] = [[Galilei, Vincenzo]],
>> }
>>
>> function document.getindexentry(n)
>> context("\\index[%s]{%s}",n,document.indexentries[n] or ("<" ..
>> n .. ">"))
>> end
>>
>> \stopluacode
>>
>> \unexpanded\def\InEn[#1]%
>> {\ctxlua{document.getindexentry("#1")}}
>>
>> \starttext
>> That this rule
>> \InEn[rule]
>> \InEn[ruleimperfect] was not applied by everybody is for example shown
>> in {\em Fronimo}%
>> \InEn[galilei]
>>
>> etc etc
>
> Hi Hans,
> sorry to bother you again on this topic.
>
> This code works beautifully in this way, with only a few index entries at the top of the file, before \starttext.
> But how can I deal with the thousand or more index items in my project, which I have collected in four separate dedicated files with indexentries, like the three shown in the example-code.
>
> I have really no idea what else should be in these files, what sort of name they should have, in particular extension, and how and where I can input them.
> I use TeXShop as my texteditor but that is probably not relevant here.
>
> Can you give me some guidance, please?
\startluacode
document.indexentries = {
["rule"] = [[Rule(s)]],
["ruleimperfect"] = [[+ \quote{imperfect to perfect, from}]],
["galilei"] = [[Galilei, Vincenzo]],
}
function document.loadindexentries(filename)
local fullname = resolvers.findfile(filename)
if fullname ~= "" then
local data = io.loaddata(fullname)
for a, b in string.gmatch(data,"%s*(%S+)%s+([^\n\r]+)") do
document.indexentries[a] = b
end
end
end
function document.getindexentry(n)
local ie = document.indexentries[n]
if not ie then
logs.report("index","missing entry %a",n)
end
context("\\index[%s]{%s}",n,ie or ("<" .. n .. ">"))
end
\stopluacode
\unexpanded\def\LoadInEn[#1]{\ctxlua{document.loadindexentries("#1")}}
\unexpanded\def\InEn [#1]{\ctxlua{document.getindexentry("#1")}}
\LoadInEn[whatever.txt]
\starttext
That this rule
\InEn[rule]
\InEn[ruleimperfect] was not applied by everybody is for example shown
in {\em Fronimo}%
\InEn[galilei]
\InEn[unknown]
etc etc
\InEn[GalileiFronimo]
\InEn[Cadence]
\InEn[CadenceP]
\InEn[PlagalCad]
\index[Fronimo]{{\em Fronimo} (Galilei)} (1584), Vincenzo Galileo's
treatise on lute playing and the intabulation%
\index[Intabulation]{intabulation} of vocal music.
\page
whatever.txt:
GalileiFronimo +{\em Fronimo}
Cadence cadence(s)
CadenceP + plagal
PlagalCad plagal cadence
-----------------------------------------------------------------
Hans Hagen | PRAGMA ADE
Ridderstraat 27 | 8061 GH Hasselt | The Netherlands
tel: 038 477 53 69 | voip: 087 875 68 74 | www.pragma-ade.com
| www.pragma-pod.nl
-----------------------------------------------------------------
More information about the ntg-context
mailing list