SCons / src / engine / SCons / Tool / docbook / docbook-xsl-1.76.1 / params / make.index.markup.xml

<refentry xmlns=""
          version="5.0" xml:id="make.index.markup">
<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo>
<refpurpose>Generate XML index markup in the index?</refpurpose>

<src:fragment xml:id="make.index.markup.frag">
<xsl:param name="make.index.markup" select="0"/>


<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 <tag>indexterm</tag>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>

<para>ap1, 1, 2, 3</para>

<para>you get one that looks like this:</para>

&lt;phrase role="pageno"&gt;1&lt;/phrase&gt;,
&lt;phrase role="pageno"&gt;2&lt;/phrase&gt;,
&lt;phrase role="pageno"&gt;3&lt;/phrase&gt;

<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

<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>

Tip: Filter by directory path e.g. /media app.js to search for public/media/app.js.
Tip: Use camelCasing e.g. ProjME to search for
Tip: Filter by extension type e.g. /repo .js to search for all .js files in the /repo directory.
Tip: Separate your search with spaces e.g. /ssh pom.xml to search for src/ssh/pom.xml.
Tip: Use ↑ and ↓ arrow keys to navigate and return to view the file.
Tip: You can also navigate files with Ctrl+j (next) and Ctrl+k (previous) and view the file with Ctrl+o.
Tip: You can also navigate files with Alt+j (next) and Alt+k (previous) and view the file with Alt+o.