X-Git-Url: https://git.stg.codes/stg.git/blobdiff_plain/0c9c28efcd43f53ac54aa60b2dfefa69c70dbadf..6b6d9b29e9e9e91f79507a8bf193fb30de311dcc:/doc/help/xslt/params/make.index.markup.xml diff --git a/doc/help/xslt/params/make.index.markup.xml b/doc/help/xslt/params/make.index.markup.xml new file mode 100644 index 00000000..7942b5a5 --- /dev/null +++ b/doc/help/xslt/params/make.index.markup.xml @@ -0,0 +1,73 @@ + + +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: + +
+<indexdiv>A</indexdiv> +<indexentry> +<primaryie>ap1</primaryie>, +<phrase role="pageno">1</phrase>, +<phrase role="pageno">2</phrase>, +<phrase role="pageno">3</phrase> +</indexentry> +
+ +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! + +
+