From: Norman Walsh Date: Wed, 21 Aug 2002 13:47:24 +0000 (+0000) Subject: Make index markup in the back-of-the-book index X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=b3439d662d1c7dddbc1dcee8f3f7652299494a16;p=docbook-dsssl Make index markup in the back-of-the-book index --- diff --git a/xsl/params/make.index.markup.xml b/xsl/params/make.index.markup.xml new file mode 100644 index 000000000..666ea1801 --- /dev/null +++ b/xsl/params/make.index.markup.xml @@ -0,0 +1,67 @@ + + +make.index.markup +boolean + + +make.index.markup +Generate XML index markup in the index? + + + + + + + + +Description + +This parameter enables a very neat trick for getting properly +merged, collated back-of-the-book indexes. G. Ken Holman suggested +this trick at Extreme Markup Languages 2002 and I'm indebted to him +for it. + +Jeni Tennison's excellent code in +autoidx.xsl does a great job of merging and +sorting indexterms in the document and building a +back-of-the-book index. However, there's one thing that it cannot +reasonably be expected to do: merge page numbers into ranges. (I would +not have thought that it could collate and suppress duplicate page +numbers, but in fact it appears to manage that task somehow.) + +Ken's trick is to produce a document in which the index at the +back of the book is displayed in XML. Because the index +is generated by the FO processor, all of the page numbers have been resolved. +It's a bit hard to explain, but what it boils down to is that instead of having +an index at the back of the book that looks like this: + +
+A +ap1, 1, 2, 3 + + +you get one that looks like this: + +
+A + +ap1, +1, +2, +3 +]]> +
+ +After building a PDF file with this sort of odd-looking index, you can +extract the text from the PDF file and the result is a proper index expressed in +XML. + +Now you have data that's amenable to processing and a simple Perl script +(such as fo/pdf2index) can +merge page ranges and generate a proper index. + +Finally, reformat your original document using this literal index instead of +an automatically generated one and bingo! + + +