help logoLON-CAPA Help


When you print a LON-CAPA resource, the XML of your resource is translated into LaTeX. The LaTeX is then processed and turned into a PDF document which can be displayed with your browser's Acrobat plugin and subsequently printed.

There are several problems that crop up both due to limitations in the XML to LaTeX translation and due to differences in the model used by web browsers to render HTML and LaTeX to compose print pages. This document provides information about some of these problems and, where possible, solutions, and tricks to work around them. If you have a printing trick or a problem and would like to report it, please go to http://bugs.lon-capa.org and register a bug report.

General information about printing within LonCAPA is also available in section Help. Some types of problems that may occur include:

The print rendition of some Perl functions looks ugly

In particular these functions are:

To make these two functions work correctly within the print translator, it is necessary to wrap them within a < display > tag. For example:

<p>
If I had <display>&prettyprint(100,'$2f')</display>
</p>

Note that the <display> tags must be tightly wrapped around the function call or you will get a syntax error in web presentation mode. For additional information about cases where you must use <display>, see "Variables with tags don't print correctly" below.

Image placement and alignment and text wrapping is wrong

Unfortunately this is due to a large difference between the LaTeX and HTML page layout model. In HTML images are placed exactly where you ask them to be placed. In LaTeX, images are considered floats, which LaTeX will place for you. Some of the common html tricks, using tables e.g. to control text wrapping around figures, will not always work in print mode; especially if the text is to the right side of the figure in the table.

The alignment choice affects whether or not the print rendering engine attempts to get text to wrap around the image. With align="right" or align="left", the print rendering engine attempts to use the wrapfigure environment to place text around the figure at the appropriate side. If a figure is in a table, then the print engine, by default, the print engine will use wrapfigure, set the alignment to "right" unless you override it. Otherwise, the default alignment is "bottom" as it is for html, and no wrapping will occur.

\parpic style wrapping is also available by specifying TeXwrap="parpic" in the <img> tag. In some limited casese this gives a better result.

Other print specific < img > tag attributes are available (see section Help).

Variables with tags don't print correctly

If a variable contains XML, in general it is necessary to force the XML parser to make a pass over the contents of the contents of the variable prior to rendering the section of the resource that contains that substitution. When output, those variables must be bracketed inside of <display> </display> tags. For example:

<problem>
<script type="loncapa/perl">
$a = &xmlparse('<br />');
</script>
<startouttext />
<p>This is a break <display>$a</display> and then some more text</p>
<endouttext />
</problem>

Without the xmlparse call and the display tag bracketing the variable, this problem will display on the web just fine, but print incorrectly.