This is the mail archive of the
docbook-apps@lists.oasis-open.org
mailing list .
[docbook-apps] fo error: Illegal unit of measure
- From: Donna Robinson <donna at terpsichore dot ws>
- To: <docbook-apps at lists dot oasis-open dot org>
- Date: Thu, 19 Aug 2004 12:52:51 +0100
- Subject: [docbook-apps] fo error: Illegal unit of measure
Hi,
I wonder if anyone can shed light on this problem because for the life of me I
can't figure it out. xmllint has no problems with this file.
Having *both* <orderedlist> and <screen> tags in this document produces the
following error:
(/usr/share/texmf/tex/latex/psnfss/t1pcr.fd) [1]
! Illegal unit of measure (replaced by filll).
<argument> <5:block^^I><5:block^^I>L
et Us Go Deeper</5:block></5:block>\@empty
l.49 ...opriately.</fo:block></fo:block></fo:flow>
</fo:page-sequence></fo:root>
Removing either one of these "solves" the problem.
Tools / flags / etc are:
Suse 9.1 (did a YOU a couple of days ago)
xsltproc --nonet --xinclude -o
test.fo /usr/share/xml/docbook/stylesheet/nwalsh/1.64.1/fo/docbook.xsl
test.xml
pdfxmltex test.fo
File "test.xml":
<?xml version="1.0"?> <!-- -*- sgml -*- -->
<!DOCTYPE book PUBLIC "-//OASIS//DTD DocBook XML V4.2//EN"
"http://www.oasis-open.org/docbook/xml/4.2/docbookx.dtd">
<book id="howto" lang="en" xreflabel="valgrind HOWTO">
<bookinfo>
<title>Valgrind HOWTO</title>
<subtitle>A guide to Valgrind, the malloc debugger</subtitle>
</bookinfo>
<chapter id="deeper" xreflabel="Let Us Go Deeper">
<title>Let Us Go Deeper</title>
<para>The dynamic linker calls the initialization function of
Valgrind. Then the synthetic CPU takes control from the real
CPU. In the memory there may be some other .so files. The dynamic
linker calls the initialization function of all such .so
files.</para>
<sect1 id="validity"
xreflabel="How Valgrind Tracks Validity of Each Byte">
<title>How Valgrind Tracks Validity of Each Byte</title>
<para>For every byte processed, the synthetic processor maintains
9 bits, 8 'V' bits and 1 'A' bit. The 'V' bits indicate the
validity of the 8 bits in the byte and the 'A' bit indicates
validity of the byte address. These valid-value(V) bits are
checked only in two situations:</para>
<orderedlist>
<listitem>
<para>when data is used for address generation,</para>
</listitem>
<listitem>
<para>when control flow decision is to be made.</para>
</listitem>
</orderedlist>
<para>In any of these two situations, if the data is found to be
undefined an error report will be generated. But no error reports
are generated while copying or adding undefined data.</para>
<screen><![CDATA[
#include <stdlib.h>
/* produces no errors */
int main() {
int *p, *a;
p = malloc( 10*sizeof(int) );
a = malloc( 10*sizeof(int) );
a[3] = p[3];
free( a );
free( p );
return 0;
}]]></screen>
<para>All bytes that are in memory but not in CPU have an
associated valid-address(A) bit, which indicates whether the
corresponding memory location is accessible by the program. When
a program starts, the 'A' bits corresponding to each global
variables are set.</para>
</sect1>
</chapter>
</book>