The plasTeX.Base.LaTeX.Sectioning.SectionUtils class has a property named links that contains a dictionary of many useful objects that assist in creating navigation bars and breadcrumb trails in the rendered output. This dictionary was modeled after the links described at http://fantasai.tripod.com/qref/Appendix/LinkTypes/ltdef.html. Some of the objects in this dictionary are created automatically, others are created with the help of the linkType attribute on the document nodes, and yet others can be added manually from a configuration file or command-line options. The automatically generated values are listed in the following table.

Name

Purpose

begin

the first section of the document

breadcrumbs

a list containing the entire parentage of the current section (including the current section)

chapter

the current chapter node

child

a list of the subsections

contents

the section that contains the top-level table of contents

document

the document level node

end

the last section of the document

first

the first section of the document

home

the first section of the document

home

the first section of the document

last

the last section of the document

navigator

the section that contains the top-level table of contents

next

the next section in the document

origin

the section that contains the top-level table of contents

parent

the parent node

part

the current part node

prev

the previous section in the document

previous

the previous section in the document

section

the current section

sibling

a list of the section siblings

subsection

the current subsection

start

the first section of the document

toc

the section that contains the top-level table of contents

top

the first section of the document

up

the parent section

Note: The keys in every case are simply strings. Note: Each of the elements in the table above is either a section node or a list of section nodes. Of course, once you have a reference to a node you can acces the attributes and methods of that object for further introspection. An example of accessing these objects from a section instance is shown below.

previousnode = sectionnode.links['prev']
nextnode = sectionnode.links['next']

The next method of populating the links table is semi-automatic and uses the linkType attribute on the Python macro class. There are certain parts of a document that only occur once such as an index, glossary, or bibliography. You can set the linkType attribute on the Python macro class to a string that corresponds to that sections role in the document (i.e. ‘index’ for the index, ‘glossary’ for the glossary, ‘bibliography’ for the bibliography). When a node with a special link type is created, it is inserted into the dictionary of links with the given name. This allows you to have links to indexes, glossaries, etc. appear in the links object only when they are in the current document. The example below shows the theindex environment being configured to show up under the ‘index’ key in the links dictionary.

class theindex(Environment, SectionUtils):
    nodeType = 'index'
    level = Environment.SECTION_LEVEL

Note: These links are actually stored under the ‘links’ key of the owner document’s userdata dictionary (i.e. self.ownerDocument.userdata[’links’]). Other objects can be added to this dictionary manually.

The final way of getting objects into the links dictionary is through a configuration file or command-line options. This method is described fully in section 2.1.4.