PyX — Example: text/textengine.py
Running and controlling TeX
from pyx import * # Set properties of the defaulttextengine, e.g. switch to LaTeX. text.set(text.LatexEngine) c = canvas.canvas() # The canvas, by default, uses the defaulttextengine from the text module. # This can be changed by the canvas method settextengine. c.text(0, 0, r"This is \LaTeX.") # If you want to use another textengine temporarily, you can just insert # a text box manually plaintex = text.TexEngine() # plain TeX engine c.insert(plaintex.text(0, -1, r"This is plain \TeX.")) # There also is the UnicodeEngine to output text directly without TeX/LaTeX. unicodetext = text.UnicodeEngine() # unicode engine c.insert(unicodetext.text(0, -2, "Simple unicode output without TeX/LaTeX.")) c.writeEPSfile("textengine") c.writePDFfile("textengine") c.writeSVGfile("textengine")
Description
Usually, all you will ever need is a single textengine
instance which controls a single running TeX or LaTeX instance at a time or uses direct Unicode text typesetting. To make life easy to our users, such an instance is created automatically upon startup and its called the defaulttextengine
. Whenever you use the function shortcuts like text.text()
and in particular text.set()
, you are accessing this defaulttextengine
instance. Also, the shortcut method text
of any canvas instance uses this defaulttextengine
by default.
However, it is possible to create several textengine instances. In this example, we are using three of them. To make it a little more interesting, we instruct the defaulttextengine
to use LaTeX, while keeping TeX for the plaintex
instance. It is you turn to use expressions valid in TeX or LaTeX only at the different textengine
instances. Additionally we show the use of a unicodetext
instance to typeset Unicode text.
Note that you do not have to worry about mixing the results of different textengines into a single output. Even the embedded fonts in the output are shared. You can, by the way, also restart a plain TeX or LaTeX engines including the defaulttextengine
, which is a plain TeX engine.