2022.2

Table Of Contents
// Build the TOC
var toc = '';
merge.context.query("h1, h2").each(function() {
var pageNo = this.info().pageNo;
var text = this.text();
var level = this.tagName();
toc += '<p class="toc-entry ' + level + '">';
toc += '<span class="text">' + text + '</span>';
toc += '<span class="dots"></span>';
toc += '<span class="number">' + pageNo + '</span></p>';
});
results.html( toc );
// Repaginate the result
merge.section.paginate();
// Update the page numbers
var $numbers = query('.number');
merge.context.query("h1, h2").each(function( index ) {
var pageNo = this.info().pageNo;
var entry = $numbers.get( index );
if( entry ) {
entry.text( pageNo );
}
});
What the script does
Firstthescriptcreatesavariabletoholdthetableofcontents:toc.
Thenitcollectsall<h1>and<h2>elements-inotherwords,level1and2headings.Themerge.-
context.query(selector)functionsearchesacross all Print sections(see"query(selector)"on
page1300).
Thequeryreturnsaresultset.Eachoftheelementsintheresultsetgoesthroughthecallbackfunction
definedineach()(see"each()"onpage1171).
Thecallbackfunctiongetstheelement'spagenumber,textandHTMLtagname:
var pageNo = this.info().pageNo;
var text = this.text();
var level = this.tagName();
Notethattheinfo()functioncanalsobeusedtogetanelement'ssheetnumber,thesectionitislocated
in,andthetotalpagecountandsheetcountofthatsection(see"PaginationInfo"onpage1300and
"info()"onpage1304).Inthiscaseonlythepagenumberisused.
Thenthecallbackfunctionaddsanentrytothevariablethatholdsthetableofcontents,usingthe
retrievedinfo.
toc += '<p class="toc-entry ' + level + '">';
toc += '<span class="text">' + text + '</span>';
toc += '<span class="dots"></span>';
toc += '<span class="number">' + pageNo + '</span></p>';
TheHTMLtagnameisaddedasaclass.ThiscanbeusedinaCSSfiletostyletheentriesinthetable
ofcontentsaccordingtotheirlevel.(See"Step4:Stylingthetableofcontents"onpage855.)
Theemptyspanbetweentheheading'stextandpagenumberhastheclassdots.Thisisusedtoput
Page 853