plasTeX 3.0 — A Python Framework for Processing LaTeX Documents

6.6.1 Renderer Objects

class Renderer()

Base class for all renderers. Renderer is a dictionary and contains functions that are called for each node in the plasTeX document object. The keys in the dictionary correspond to the names of the nodes.

This renderer implementation uses a mixin called Renderable that is mixed into the Node class prior to rendering. Renderable adds various methods to the Node namespace to assist in the rendering process. The primary inclusion is the __str__() method. This method returns a string representation of the current node and all of its child nodes. For more information, see the Renderable class documentation.

default

the default renderer value. If a node is being rendered and no key in the renderer matches the name of the node being rendered, this function is used instead.

fileExtension

contains the file extension to use for generated files. This extension is only used if the filename generator does not supply a file extension.

files

a list of files created during rendering.

imageAttrs

contains a string template that renders the placeholder for the image attributes: width, height, and depth. This placeholder is inserted into the document where the width, height, and depth of an image is needed. The placeholder is needed because images are not generated until after the document is rendered. See the Imager API (section 6.7) for more information.

imageUnits

contains a string template that renders the placeholder for the image attribute units. This placeholder is inserted in the document any time an attribute of a particular unit is requested. This placeholder will always occur immediately after the string generated by imageAttrs. The placeholder is needed because images are not generated until after the document is rendered. See the Imager API (section 6.7) for more information.

imager

a reference to an Imager implementation. Imagers are responsible for generating images from LaTeX code. This is needed for output types which aren’t capable of displaying equations, LaTeX pictures, etc. such as HTML.

vectorBitmap

a boolean indicating whether bitmap versions should be generated for vector images. The bitmap version is used to read off the height, width and depth of the image. If such information is not used by the renderer, we can skip producing the bitmap, which may take a long time.

This defaults to True.

imageTypes

contains a list of file extensions of valid image types for the renderer. The first element in the list is the default image format. This format is used when generating images (if the image type isn’t specified by the filename generater). When static images are simply copied from the document, their format is checked against the list of supported image types. If the static image is not in the correct format it is converted to the default image format. Below is an example of a list of image types used in the HTML renderer. These image types are valid because web browsers all support these formats.

imageTypes = ['.png','.gif','.jpg','.jpeg']

vectorImageTypes

contains a list of file extensions of valid vector image types for the renderer. The first element in the list is the default vector image format. This format is used when generating images. Static images are simply copied into the output document directory. Below is an example of a list of image types used in the HTML renderer. These image types are valid because there are plug-ins available for these formats.

vectorImageTypes = ['.svg']

newFilename

filename generator. This method generates a basename based on the options in the configuration.

The generator has an attribute called namespace which contains the namespace used to resolve the variables in the filename string. This namespace should be populated prior to invoking the generator. After a successful filename is generated, the namespace is automatically cleared (with the exception of the variables sent in the namespace when the generator was instantiated).

Note: This generator can be accessed in the usual generator fashion, or called like a function.

outputType

a function that converts the content returned from each rendered node to the appropriate value.

textDefault

the default renderer to use for text nodes.

cleanup(document, files[, postProcess])

this method is called once the entire rendering process is finished. Subclasses can use this method to run any post-rendering cleanup tasks. The first argument, document , is the document instance that is being rendered. The second argument, files , is a list of all of the filenames that were created.

This method opens each file, reads the content, and calls processFileContent on the file content. It is suggested that renderers override that method instead of cleanup.

In addition to overriding processFileContent, you can post-process file content without having to subclass a renderer by using the postProcess  argument. See the render method for more information.

find(keys[, default])

locate a rendering method from a list of possibilities.

keys  is a list of strings containing the requested name of a rendering method. This list is traversed in order. The first renderer that is found is returned.

default  is a default rendering method to return if none of the keys exists in the renderer.

initialize()

this routine is called after the renderer is instantiated. It can be used by subclasses to do any initialization routines before the rendering process.

processFileContent(document, content )

post-processing routine that allows renders to modify the output documents one last time before the rendering process is finished. document  is the input document instance. content  is the content of the file in a string object. The value returned from this method will be written to the output file in the appropriate encoding.

render(document[, postProcess])

invokes the rendering process on document . You can post-process each file after it is rendered by passing a function into the postProcess  argument. This function must take two arguments: 1) the document object and 2) the content of a file as a string object. It should do whatever processing it needs to the file content and return a string object.