ntg-context - mailing list for ConTeXt users
 help / color / mirror / Atom feed
From: Hans Hagen <pragma@wxs.nl>
To: mailing list for ConTeXt users <ntg-context@ntg.nl>
Subject: Re: Index items (additional question)
Date: Sun, 19 Apr 2015 11:50:38 +0200	[thread overview]
Message-ID: <55337A6E.3020805@wxs.nl> (raw)
In-Reply-To: <899DB073-E895-4B95-A02A-25D0CAA0ECA4@gmail.com>

On 4/19/2015 9:47 AM, Robert Blackstone wrote:
>
> On 16 Apr 2015, at 15:38 , Hans Hagen <pragma@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	other threads:[~2015-04-19  9:50 UTC|newest]

Thread overview: 4+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
     [not found] <mailman.128.1429191487.8971.ntg-context@ntg.nl>
2015-04-16 18:08 ` Index items Robert Blackstone
2015-04-19  7:47 ` Index items (additional question) Robert Blackstone
2015-04-19  9:50   ` Hans Hagen [this message]
     [not found] <mailman.159.1429437332.8971.ntg-context@ntg.nl>
2015-04-19 18:30 ` Robert Blackstone

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=55337A6E.3020805@wxs.nl \
    --to=pragma@wxs.nl \
    --cc=ntg-context@ntg.nl \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).