summaryrefslogtreecommitdiffstats
path: root/kdoctools/docbook/xsl/params/make.index.markup.xml
diff options
context:
space:
mode:
Diffstat (limited to 'kdoctools/docbook/xsl/params/make.index.markup.xml')
-rw-r--r--kdoctools/docbook/xsl/params/make.index.markup.xml68
1 files changed, 68 insertions, 0 deletions
diff --git a/kdoctools/docbook/xsl/params/make.index.markup.xml b/kdoctools/docbook/xsl/params/make.index.markup.xml
new file mode 100644
index 000000000..eec982b36
--- /dev/null
+++ b/kdoctools/docbook/xsl/params/make.index.markup.xml
@@ -0,0 +1,68 @@
+<refentry id="make.index.markup">
+<refmeta>
+<refentrytitle>make.index.markup</refentrytitle>
+<refmiscinfo role="type">boolean</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>make.index.markup</refname>
+<refpurpose>Generate XML index markup in the index?</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<src:fragment id='make.index.markup.frag'>
+<xsl:param name="make.index.markup" select="0"/>
+</src:fragment>
+</refsynopsisdiv>
+
+<refsect1><title>Description</title>
+
+<para>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.</para>
+
+<para>Jeni Tennison's excellent code in
+<filename>autoidx.xsl</filename> does a great job of merging and
+sorting <sgmltag>indexterm</sgmltag>s 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.)</para>
+
+<para>Ken's trick is to produce a document in which the index at the
+back of the book is <quote>displayed</quote> 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:</para>
+
+<blockquote>
+<formalpara><title>A</title>
+<para>ap1, 1, 2, 3</para>
+</formalpara>
+</blockquote>
+
+<para>you get one that looks like this:</para>
+
+<blockquote>
+<programlisting><![CDATA[<indexdiv>A</indexdiv>
+<indexentry>
+<primaryie>ap1</primaryie>,
+<phrase role="pageno">1</phrase>,
+<phrase role="pageno">2</phrase>,
+<phrase role="pageno">3</phrase>
+</indexentry>]]></programlisting>
+</blockquote>
+
+<para>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.</para>
+
+<para>Now you have data that's amenable to processing and a simple Perl script
+(such as <filename>fo/pdf2index</filename>) can
+merge page ranges and generate a proper index.</para>
+
+<para>Finally, reformat your original document using this literal index instead of
+an automatically generated one and <quote>bingo</quote>!</para>
+
+</refsect1>
+</refentry>