Michael— Thank you so much for your very helpful response.
1. \unskip works well. 2. What I currently have is admittedly an ad hoc system for encoding my indices. As you note, the system works for page numbers > 99 where line numbers < 99. When line numbers > 99, I adapt the sort key differently: thus, for Cleomedes, *Cael*. I have [CleomCael105001] for 1.5.1. This works (in MKII) but only because the number of entries is very small. 3. I like your MKII solution—it is much more general, works well on what I have, and is certainly less taxing to encode. Many thanks! The book that I trying to index right now is the last of my MKII projects. So I am also interested in, and very grateful, for your MKIV solution. All best, Alan On Thu, May 24, 2012 at 5:14 PM, Rogers, Michael K <mrog...@emory.edu>wrote: > 1. For \ab you might want > \def\ab{\unskip} > since the space is not the same as the width of a digit. > > 2. Does your solution work with line numbers greater than 99? I tried > to implement your idea and I got the order 25.7, 25.117, 25.37. Probably > more than 99 lines never occurs on a page, so it's a non-issue. But Homer, > for instance, is often referred to by Book.Line, and the lines go past 100. > Again, perhaps a non-issue for you. > > 3. My own attempts: At first I though what a nice opportunity for me > to learn a little more Lua, which it was. After, I read you wanted a MKII > solution. Well, I'm embarrassed at how long I took to do the MKII, but I'm > not good at controlling expansion. Anyway, it automatically generates sort > keys for the pages by converting digits to letters and padding with initial > a's, so that each page or line number is a fixed length (4 in this case, up > to 10000 pages/lines). For instance, > 123.4--56 is mapped to abcdaaaeaafg > MKII does not seem to sort digit-based keys reliably; MKIV does, and you > can just pad out the digits with zeros. The complete sort key that worked > was the catenation of the author, text, and locus key, which is similar to > what you have. > > MKII: > \defineregister[Passage][Passages] > ... > % interface to register -- \locuskey indirectly returns a key in \nextkey > > \def\MyPassage#1#2#3{\locuskey{#3}\expandoneargafter\doMyPassage{\nextkey}{#1}{#2}{#3}} > \def\doMyPassage#1#2#3#4{\Passage[#2#3#1]{{#2}+{#3}+{#4}}} > % Def. of \locuskey#1 > % In: #1<-p1[.l2[--l3]] Out: key stored in \nextkey > ... (see attached file, if interested) > > MKIV: > % interface to register -- expansion in MKIV must be different, because > a direct approach works: > \def\MyPassage#1#2#3{\Passage[#1#2\locuskey{#3}]{#1+#2+#3}} > % Def. of \locuskey > \startluacode > userdata = userdata or { } > function userdata.locuskey(x) > context(string.gsub(x,"(%d+)",function (s) return > string.format("%04d",tonumber(s)) end)) > end > \stopluacode > \def\locuskey#1{\ctxlua{userdata.locuskey("#1")}} > > The Mark IV/Luatex one was much nicer, less frustrating to figure out. > > > On May 24, 2012, at 7:06 AM, Alan Bowen wrote: > > For anyone interested in producing classical indices locorum, I have > devised a way that seems to work, although it is not that elegant. > > The first step is to modify the sort keys by counting the number of > digits in the page number: > thus, > [AuthorText01] for pages 1–9, > [AuthorText02] for pages 10–99, and so on > > The next is to insert the command “ \ab” (note the space) when the line > number is a single digit: > thus > 391. \ab{}2 but 391.12 in the entry specification {Author+Text+page.line} > > For \ab, I have: > > \newdimen\digitwidth > \setbox0=\hbox{\tfx\char32} > \digitwidth=\wd0 > > \def\ab{\tfx\kern-\digitwidth} > > The hitch here is that the font size is not context dependent. > > Alan > > On Tue, May 22, 2012 at 6:39 PM, Alan Bowen <bowenala...@gmail.com> wrote: > > I have been trying to index the passages cited in a book and would be > grateful for some tactical advice. > > There are several works by a single author, and it is customary to cite > each text by page and line number, as in 1253.12 (page 1253, line12), for > example. > > I have a sort key for each work. But now I need a way to get the entry > > 1253.7 (page 1253, line 7) before the entry > 1253.12 (page 1253, line 12). > > \[Passage[AuthorText]{Author+Text+1253.07}1253.7 or > \[Passage[AuthorText]{Author+Text+1253.07}1253. 7 > would work, but it is really better to have the index entry as “1253.7” > rather than as “1253.07” or “1253. 7” > > I have experimented with different sort keys—e.g., AuthorText125307—and > can generate an index with the 1235.7 and so on in the proper place and > form, say, before 1253.12. > > But then the problem is that I also get entire sequences of entries out > of order (485.19, 485.21 before 477.31, and so on). Very puzzling. > (Restoring the sort key AuthorText removes the latter problems but then > leaves 1253.7 in the wrong place.) > > If anyone has experience with this or just some ideas for a solution, > their suggestions will be most welcome. > > I am using the MKII in the latest ConTeXt standalone. > > Alan > > > > ------------------------------ > > This e-mail message (including any attachments) is for the sole use of > the intended recipient(s) and may contain confidential and privileged > information. If the reader of this message is not the intended > recipient, you are hereby notified that any dissemination, distribution > or copying of this message (including any attachments) is strictly > prohibited. > > If you have received this message in error, please contact > the sender by reply e-mail message and destroy all copies of the > original message (including attachments). > > > ___________________________________________________________________________________ > 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 > > ___________________________________________________________________________________ >
___________________________________________________________________________________ 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 ___________________________________________________________________________________