On 4/19/2015 9:47 AM, Robert Blackstone wrote:

On 16 Apr 2015, at 15:38 , Hans Hagen <pra...@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
-----------------------------------------------------------------
___________________________________________________________________________________
If your question is of interest to others as well, please add an entry to the 
Wiki!

maillist : ntg-context@ntg.nl / http://www.ntg.nl/mailman/listinfo/ntg-context
webpage  : http://www.pragma-ade.nl / http://tex.aanhet.net
archive  : http://foundry.supelec.fr/projects/contextrev/
wiki     : http://contextgarden.net
___________________________________________________________________________________

Reply via email to